部署tomcat、nginx整合tomcat、tomcat+memcached集群


一、实验原理

简介:

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。(Tomcat 不太适合高并发,解决方法,增加后端数量)
可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的

tomcat 启动前需要配置JDK环境变量,如果没有配置JDK的环境变量,那么tomcat启动的时候就会报错,也就是无法启动。
JDK 是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。可以从oracle官网下载

实验原理:

如果为了简单使用,你只需要安装一个tomcat(6或者7)和memcached,在生产环境中可能会有多台tomcat服务器以及多台可用的memcached节点,并安装在不同的机器上,我们可以使用黏性session(sticky sessions)或者非黏性session(non-sticky sessions),memcached-session-manager (msm)对这两种操作模式都支持。
下面给出一个黏性session模式的设置示例,此实例中安装了2个tomcat以及2个memcached。
交叉存储:Tomcat-1(t1)的首要选择是把session存储在memcached-2 (m2)上(m2是t1的一个普通节点),而m2是运行在另外的一台机器上。只有当m2不可用(宕机或无法访问)时,t1才会把session存储到memcached-1(m1,m1是t1的故障转移节点)上。使用这种配置,即使机器1宕机了session也不会丢失。具体如下图所示:
在这里插入图片描述

二、部署tomcat

server2上也部署tomcat,步骤一致

[root@server3 ~]# rpm -ivh jdk-8u121-linux-x64.rpm ####配置JDK环境变量
[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
能查询到8080端口,表示查询成功
[root@server3 tomcat]# netstat -antlp|grep :8080
tcp6 0 0 :::8080 ::😗 LISTEN 8482/java
测试
访问:http://192.168.117.13:8080
在这里插入图片描述

三、nginx整合tomcat

[root@server1 ~]# cd /usr/local/nginx/conf/
[root@server1 conf]# vim nginx.conf
upstream tomcat { ##负载均衡
sticky; ##基于cookie的负载均衡
server 192.168.117.12:8080;
server 192.168.117.13:8080;
}
在这里插入图片描述
location ~ .jsp$ { ##jsp结尾的
proxy_pass http://tomcat; ##转发到tomcat列表中
}
在这里插入图片描述
[root@server1 conf]# nginx -s reload

拷贝测试页面在至server2和server3指定目录
[root@server2 ~]# cd /usr/local/tomcat/webapps/ROOT/
test.jsp是写好的页面上传后进行实验
[root@server2 ROOT]# ll test.jsp
-rw-r–r-- 1 root root 968 Feb 24 14:47 test.jsp
测试: http://192.168.117.11/test.jsp
在这里插入图片描述

四、tomcat整合memcached

在这里插入图片描述

[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
配置文件
[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” 出现故障找自己(n1),默认找server3;此处server3上修改为n2
requestUriIgnorePattern=“.*.(ico|png|gif|jpg|css|js)$”
transcoderFactoryClass=“de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory”
/>
在这里插入图片描述
server3上的配置依次类推,server3和server2都配置完成后,再分别重启tomcat,否则报错
[root@server2 conf]# cd …
[root@server2 tomcat]# bin/shutdown.sh
[root@server2 tomcat]# bin/startup.sh
查看日志
[root@server2 tomcat]# cat logs/catalina.out
在这里插入图片描述

测试: http://192.168.117.11/test.jsp
在这里插入图片描述

关闭server2上的tomcat服务后会自动切换到server3
在这里插入图片描述

关闭server3上的memcached服务后,会自动切换到server2上的memcached服务

在这里插入图片描述
以上为tomcat+memcached 基本集群,且整个实验过程中数据未丢
数据存储在tomcat的缓存中存储,memcached理解为是冗余的备份存储;切换的过程中,memcached的数据确实会丢失,但是tomcat中也有缓存,所以tomcatI再往另一台memcached存储一份即可,数据完整!
在这个架构中,无论down任何一个服务或者任何一个节点,都不会影响;除非同时down两个节点


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值