2.4 lnmp架构_Tomcat服务器(Tomcat是什么?)

在这里插入图片描述

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 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值