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

文章目录

  • 前言:
  • 一、实验原理
  • 二、部署tomcat
  • 三、nginx整合tomcat
  • 四、tomcat整合memcached

前言:

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。(Tomcat 不太适合高并发,解决方法,增加后端数量)
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、nginx整合tomcat、tomcat+memcached集群_第1张图片

二、部署tomcat

server2上也部署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
能查询到8080端口,表示查询成功
[root@server3 tomcat]# netstat -antlp|grep :8080
tcp6 0 0 :::8080 :: LISTEN 8482/java
测试
访问:http://192.168.117.13:8080
部署tomcat、nginx整合tomcat、tomcat+memcached集群_第2张图片

三、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;
}
部署tomcat、nginx整合tomcat、tomcat+memcached集群_第3张图片
location ~ .jsp$ { ##jsp结尾的
proxy_pass http://tomcat; ##转发到tomcat列表中
}
部署tomcat、nginx整合tomcat、tomcat+memcached集群_第4张图片
[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、nginx整合tomcat、tomcat+memcached集群_第5张图片

四、tomcat整合memcached

部署tomcat、nginx整合tomcat、tomcat+memcached集群_第6张图片

[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
添加管理器定义

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”
/>
部署tomcat、nginx整合tomcat、tomcat+memcached集群_第7张图片
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
部署tomcat、nginx整合tomcat、tomcat+memcached集群_第8张图片

关闭server2上的tomcat服务后会自动切换到server3
部署tomcat、nginx整合tomcat、tomcat+memcached集群_第9张图片

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

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


你可能感兴趣的:(nginx,memcached,tomcat,nginx)