###1.配置tomcat###
可以将tomcat部署在server2主机,与nginx主服务器分开,便于进行交互存储。
下载安装jdk与tomcat,并开启服务,便可以在浏览器进行访问。
[root@server3 ~]# rpm -ivh jdk-8u121-linux-x64.rpm
[root@server3 ~]# tar xf apache-tomcat-7.0.37.tar.gz -C /usr/local/
[root@server3 ~]# cd /usr/local/
[root@server3 local]# ln -s apache-tomcat-7.0.37/ tomcat
[root@server3 local]# cd tomcat/
启动服务
[root@server3 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
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@server3 tomcat]# netstat -antlp|grep :8080
tcp6 0 0 :::8080 :::* LISTEN 8482/java
server3上也部署tomcat,步骤一致,以此类推
测试
访问:http://192.168.76.12:8080/
http://192.168.76.13:8080/
###2.nginx整合tomcat(反向代理+负载均衡)###
(1)server1配置
在server1nginx配置文件中设置反向代理和负载均衡,通过server1可以均衡访问server2和server3
[root@server1 ~]# cd /usr/local/nginx/conf/
[root@server1 conf]# vim nginx.conf
///
upstream tomcat {
sticky;
server 192.168.56.12:8080;
server 192.168.56.13:8080;
}
...
location ~ \.jsp$ {
proxy_pass http://tomcat;
}
///
[root@server1 conf]# nginx -s reload
(2)在server2和server3上拷贝测试页面
[root@server2 ~]# cd /usr/local/tomcat/webapps/ROOT/
[root@server2 ROOT]# ll test.jsp
-rw-r--r-- 1 root root 968 Feb 24 14:47 test.jsp
(3)测试
测试: http://192.168.76.11/test.jsp
当server2的tomcat服务关闭,但是用户并不知道server2关闭,nginx将自动调度server3主机进行信息存储。此时服务器为server3,因为server2与server3信息不共享,因此信息消失。
###3.tomcat整合memcache交互存储进行session共享###
tomcat本身存储所有的信息,memcache只是为了session共享,是tomcat的额外存储。
nginx调用其中一台主机的tomcat,并将信息交叉存储在另一台主机的memcache中,即就是,tomcat1将信息存在memcache2中。
如果tomcat1不能使用,nginx则自动调度tomcat2,此时将信息存储在本机memcache2中,信息此时是完整的。如果tomcat1恢复,则重新调度tomcat1,将信息继续存储在memcache2中,信息依旧完整。
如果memcache2不能使用,tomcat1将把信息存放在memcache1中,此时信息仍然完整,因为,tomcat1本身将所有的信息存储在本机memory中,memcache只是为了额外存储。
这样,无论什么情况,都最大限度的保证了数据的完整性,且信息同步共享。
tomcat服务通过msm模块把session信息交叉存储到memcached上
(1)应用服务器上安装memcache
[root@server2 ~]# yum install -y memcached
[root@server2 ~]# systemctl enable --now memcached
[root@server2 ~]# netstat -antlp|grep :11211
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 7297/memcached
server3上类似以此类推
(2)设置交叉存储
在server2主机中对tomcat的配置文件进行编辑,设定交叉存储,将自身memcache设为n1,server3主机的memcache设为n2,正常运行时将信息存放在n2,不能正常运行时,将信息存储在n1,即自身memcache。
配置server3的tomcat服务,编辑配置文件,设定交叉存储,正常运行时将信息存放在n1,不能正常运行时,将信息存储在n2,即自身memcache。
导包
[root@server2 ~]# yum install -y unzip
[root@server2 ~]# unzip jar.zip
[root@server2 jar]# ls
asm-3.2.jar kryo-serializers-0.10.jar memcached-session-manager-tc7-1.6.3.jar msm-kryo-serializer-1.6.3.jar spymemcached-2.7.3.jar
kryo-1.04.jar memcached-session-manager-1.6.3.jar minlog-1.2.jar reflectasm-1.01.jar
[root@server2 jar]# cp * /usr/local/tomcat/lib/
[root@server2 jar]# cd /usr/local/tomcat/conf
[root@server2 conf]# vim context.xml
...
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.56.12:11211,n2:192.168.56.13:11211"
failoverNodes="n1" #server3上修改为n2
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
server2
server3
重启tomcat
[root@server2 conf]# cd ..
[root@server2 tomcat]# bin/shutdown.sh
[root@server2 tomcat]# bin/startup.sh
查看日志
[root@server2 tomcat]# cat logs/catalina.out
server2
server3
(3)测试
测试: http://192.168.76.11/test.jsp