Tomcat-1 (T1) 将 session 存储在 memcached-2 (T2)上。只有当 M2 不可用时,T1 才将 session 存储在 memcached-1 上(M1 是 T1 failoverNode)。使用这种配置的好处是,当 T1 和 M1 同时崩溃时也不会丢失 session 会话,避免单点故障。
以下步骤在 node1 与 node2 上实施:
T1 T2
. \ / .
. X .
. / \ .
M1 M2
实验环境:
node2:server5—>172.25.25.5
node1:server1—>172.25.25.1
首先在server5上面完成配置:
关闭iptables,httpd
[root@server5 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
[root@server5 ~]# cd /usr/local
[root@server5 ~]# ln -s jdk1.7.0_79/ java
[root@server5 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
[root@server5 ~]# cd /usr/local
[root@server5 ~]# ln -s jdk1.7.0_79/ java
[root@server5 ~]# vim /etc/profile
在文件最后写入
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
[root@server5 ~]# source /etc/profile
[root@server5 ~]# vim test.java
[root@server5 ~]# javac test.java
[root@server5 ~]# java test
环境变量
test.java文件内容:
启动服务,并且查看服务监听的端口
[root@server5 tomcat]# ./bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
##启动服务,并且查看服务监听的端口
[root@server5 ~]# /usr/local/tomcat/webapps/ROOT
[root@server5 ROOT]# vim test.jsp
test.jsp文件内容:
浏览器访问172.25.25.5:8080/test.jsp
更改nginx配置文件:
nginx.conf文件更改的内容:
浏览器访问172.25.25.5/test.jsp
与server5的配置一致
[root@server1 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
[root@server1 ~]# cd /usr/local
[root@server1 ~]# ln -s jdk1.7.0_79/ java
[root@server1 ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
[root@server1 ~]# source /etc/profile
[root@server1 ~]# vim test.java
[root@server1 ~]# javac test.java
[root@server1 ~]# java test
[root@server1 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
[root@server1 ~]# cd /usr/local
[root@server1 ~]# ln -s jdk1.7.0_79/ java
[root@server1 tomcat]# ./bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
更改nginx配置文件
文件内容:
配置test.jsp文件
/usr/local/tomcat/webapps/ROOT/test.jsp文件内容
在浏览器访问172.25.25.5/test.jsp
刷新:
配置sticky算法:
vim /usr/local/lnmp/nginx/conf/nginx.conf
在浏览器访问172.25.25.5/test.jsp,刷新网页,网页内容不会变
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
先关闭两个节点上的tomcat服务,安装memcache
我们采用 kryo 方式进行序列化,需要以下文件
asm-3.2.jar
kryo-1.04.jar
kryo-serializers-0.10.jar
memcached-session-manager-1.6.3.jar
memcached-session-manager-tc7-1.6.3.jar
minlog-1.2.jar
msm-kryo-serializer-1.6.3.jar
reflectasm-1.01.jar
spymemcached-2.7.3.jar
更改文件,并拷贝一份给server2
[root@server5 jar]# vim /usr/local/tomcat/conf/context.xml
[root@server2 jar]# vim /usr/local/tomcat/conf/context.xml
开启两个节点的tomcat服务
在浏览器访问172.25.25.5/test.jsp,
在浏览器添加列表内容,查看日志
不同的主机访问时会调度到不同的 tomcat 实例上处理,来自同一主机的请求会交给同一个 tomcat 实例处理,此时你 down 掉当前正在响应的 tomcat 实例,nginx 会自动把用户的请求调度到另一个 tomcat 实例上,同时 session 也没有丢掉。
关闭server5上面的tomcat
telnet localhost 11211
get