tomcat结合memcache
在2,3上做实验
1。 rpm-jdk
tomcta安装
解压
[root@server2 ~]# ls
apache-tomcat-7.0.37.tar.gz jdk-8u121-linux-x64.rpm
[root@server2 ~]# rpm -ivh jdk-8u121-linux-x64.rpm
Preparing... ################################# [100%])
Updating / installing...
1:jdk1.8.0_121-2000:1.8.0_121-fcs ################################# [100%])
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
[root@server2 ~]# tar zxf apache-tomcat-7.0.37.tar.gz
2。 mv
安装net,查看端口
3。 bin启动
[root@server2 ~]# mv apache-tomcat-7.0.37 /usr/local/tomcat
[root@server2 ~]# cd /usr/local/tomcat/
[root@server2 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
4。netstat 查看端口
[root@server2 tomcat]# netstat -antuple | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 0 32369 3921/java
5。用户走80端口访问,
用户—》 nginx的80 —》
client -> nginx:80 -> *.jsp -> tomcat:8080
6。3安装rpm,解压-C指定的位置
[root@server3 ~]# rpm -ivh jdk-8u121-linux-x64.rpm
Preparing... ################################# [100%])
Updating / installing...
1:jdk1.8.0_121-2000:1.8.0_121-fcs ################################# [100%])
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
[root@server3 ~]# tar zxf apache-tomcat-7.0.37.tar.gz
[root@server3 ~]# mv apache-tomcat-7.0.37 /usr/local/tomcat
[root@server3 ~]# cd /usr/local/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
测试:火狐
7。 1 vim
http下,upstream;端口映射
[root@server1 ~]# cd /usr/local/nginx/conf/
[root@server1 conf]# vim nginx.conf
####
http {
upstream westos {
server 172.25.21.3:80;
server 172.25.21.4:80;
#server 127.0.0.1:80 backup;
}
upstream tomcat {
server 172.25.21.3:8080;
server 172.25.21.4:8080;
}
include mime.types;
default_type application/octet-stream;
location ~ \.jsp$ {
proxy_pass http://tomcat;
}
####
[root@server1 conf]# nginx -s reload
8。 1测试:172。25。21。1/index。jsp
9。 2get test。jsp
也要发给3
[root@server2 ~]# ls
apache-tomcat-7.0.37.tar.gz jdk-8u121-linux-x64.rpm test.jsp
[root@server2 ~]# ls /usr/local/tomcat/webapps/ROOT/
asf-logo.png bg-nav-item.png favicon.ico tomcat.gif WEB-INF
asf-logo-wide.gif bg-nav.png index.jsp tomcat.png
bg-button.png bg-upper.png RELEASE-NOTES.txt tomcat-power.gif
bg-middle.png build.xml tomcat.css tomcat.svg
[root@server2 ~]# mv test.jsp /usr/local/tomcat/webapps/ROOT/
[root@server2 ~]# ls /usr/local/tomcat/webapps/ROOT/
asf-logo.png bg-nav.png RELEASE-NOTES.txt tomcat-power.gif
asf-logo-wide.gif bg-upper.png test.jsp tomcat.svg
bg-button.png build.xml tomcat.css WEB-INF
bg-middle.png favicon.ico tomcat.gif
bg-nav-item.png index.jsp tomcat.png
[root@server2 ROOT]# scp /usr/local/tomcat/webapps/ROOT/test.jsp server3:/usr/local/tomcat/webapps/ROOT/
root@server3's password:
test.jsp 100% 968 1.3MB/s 00:00
10。 测试172。0。1/test/jsp
截图
[root@server2 ROOT]# cd /usr/local/tomcat/logs/
[root@server2 logs]# ls
catalina.2021-04-06.log localhost.2021-04-06.log
catalina.out localhost_access_log.2021-04-06.txt
host-manager.2021-04-06.log manager.2021-04-06.log
[root@server2 logs]# cat catalina.out
Apr 06, 2021 2:08:19 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Apr 06, 2021 2:08:19 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Apr 06, 2021 2:08:19 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Apr 06, 2021 2:08:19 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 553 ms
Apr 06, 2021 2:08:19 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Apr 06, 2021 2:08:19 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.37
Apr 06, 2021 2:08:19 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/ROOT
Apr 06, 2021 2:08:20 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/docs
Apr 06, 2021 2:08:20 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/examples
Apr 06, 2021 2:08:20 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/host-manager
Apr 06, 2021 2:08:20 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/tomcat/webapps/manager
Apr 06, 2021 2:08:20 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Apr 06, 2021 2:08:20 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Apr 06, 2021 2:08:20 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 541 ms
user1 = 111
user2 = 222
11。 恢复cooket,去掉sticky千前面的注释
[root@server2 logs]# cd ..
[root@server2 tomcat]# ls
bin lib logs RELEASE-NOTES temp work
conf LICENSE NOTICE RUNNING.txt webapps
[root@server2 tomcat]# bin/shutdown.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
交叉存储
nginx下面挂了2个tomcat
下面还有2个memcache存储点,这是没人负责的(copy的作用,额外的操作)
由nginx来负责,如果其中1个tomcat挂了,可以从memcahche2找回数据
tomcat1向memcache2上存储
tomcat2向memcache1上存储
tomcat1挂了,可以从memcache2里找回数据,由tomcat2负责
如果整个节点挂了(tomcat1和memcache1),tomcat2可以向memcache2上再存一份数据,
1。 2 lamp里的jar下载
删除里面的tc6,留下7
2。 cp
[root@server2 ~]# cd jar/
[root@server2 jar]# ls
asm-3.2.jar memcached-session-manager-tc7-1.6.3.jar
kryo-1.04.jar minlog-1.2.jar
kryo-serializers-0.10.jar msm-kryo-serializer-1.6.3.jar
memcached-session-manager-1.6.3.jar reflectasm-1.01.jar
memcached-session-manager-tc6-1.6.3.jar spymemcached-2.7.3.jar
[root@server2 jar]# rm -fr memcached-session-manager-tc6-1.6.3.jar
[root@server2 jar]# cp * /usr/local/tomcat/lib/
到liib
server3也需要一份
[root@server2 ~]# scp jar/* server3:/usr/local/tomcat/lib/
[root@server2 ~]# netstat -antuple | grep 8080
[root@server2 ~]# cd /usr/local/tomcat/
[root@server2 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
3。 2,3 都要关闭shutdown
server3安装bet
[root@server3 ROOT]# yum install -y net-tools
[root@server3 ROOT]# netstat -antuple | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 0 32544 3917/java
[root@server3 ROOT]# cd /usr/local/tomcat/
[root@server3 tomcat]# bin/shutdown.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@server2 tomcat]# bin/shutdown.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
4,配置jar那些文件
在conf,textent文件写
n1:第一个节点
failovernode:出现故障找n1,正常找n2;另一个节点反之
[root@server2 tomcat]# cd /usr/local/tomcat/conf/
[root@server2 conf]# vim context.xml
####
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.0.91:11211,n2:192.168.0.92:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
####
swerver2安装memcached,enable
[root@server2 conf]# yum install -y memcached
[root@server2 conf]# systemctl enable --now memcached.service
Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.
3也是
[root@server3 tomcat]# pwd
/usr/local/tomcat
[root@server3 tomcat]# cd conf/
[root@server3 conf]# vim context.xml
####
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.0.91:11211,n2:192.168.0.92:11211"
failoverNodes="n2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
####
4。都有11211端口
[root@server2 tomcat]# pwd
/usr/local/tomcat
[root@server2 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
5。 配置server3,
故障找n2,(出故障了,才找自己,没有故障就是交叉
(上面已经完成了)
6。 启动tomcat
查看日志,out,有一句话,说明成功
[root@server2 tomcat]# cd /usr/local/tomcat/logs/
[root@server2 logs]# ls
catalina.2021-04-06.log localhost.2021-04-06.log
catalina.out localhost_access_log.2021-04-06.txt
host-manager.2021-04-06.log manager.2021-04-06.log
[root@server2 logs]# cat catalina.2021-04-06.log
####
INFO: MemcachedSessionService finished initialization, sticky true, operation timeout 1000, with node ids [n2] and failover node ids [n1]
####
[root@server3 tomcat]# pwd
/usr/local/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]# cat /usr/local/tomcat/logs/catalina.2021-04-06.log
####
INFO: MemcachedSessionService finished initialization, sticky true, operation timeout 1000, with node ids [n2] and failover node ids [n1]
####
7。成功
8。 模拟故障
server3,shutdown
3的seesion在2上
网页上提交的数据交给server2
上面结果可以通过telnet查看
srever2安装telnet
结果就在其中
[root@server3 tomcat]# yum install -y memcached
[root@server3 tomcat]# systemctl enable --now memcached.service
Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.
[root@server3 tomcat]# yum install -y telnet
[root@server3 logs]# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
get 52339D5DA8C277C90FCD2CB430B12FF0
9。有个问题:
如果2刮掉(shutdown),3启动,那么之前的数据就没有了。因为mem2,3是不互通的,只有tomcat向厘里面存数据
但是,如果server2只是systemctl stop memcached,那么,不会有事,玦续在网页输入数据,会存在memcached2里面
可以通过telnet查看,此时,彻底shutdownserver2,也没有关系
[root@server2 ~]# systemctl stop memcached.service