tomcat session cluster的实现

1.环境准备

IP 主机名 服务
10.0.0.150 proxy.tan.com httpd
10.0.0.160 tomcat1.tan.com JDK8、tomcat8
10.0.0.170 tomcat2.tan.com JDK8、tomcat8

2.在proxy主机配置httpd实现后端tomcat主机轮询

[root@proxy ~]#vim /etc/httpd/conf.d/tomcat.conf
<Proxy balancer://tomcat-server>
BalancerMember http://tomcat1.tan.com:8080 loadfactor=1
BalancerMember http://tomcat2.tan.com:8080 loadfactor=1

<VirtualHost *:80>
ServerName proxy.tan.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
ProxyPass / balancer://tomcat-server/
ProxyPassReverse / balancer://tomcat-server/

[root@proxy ~]#systemctl restart httpd

或者使用nginx来实现后端轮询

在http语句块中添加upstream模块

upstream tomcat-server{
server tomcat1.tan.com:8080;
server tomcat2.tan.com:8080;
}

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name proxy.tan.com; #修改此行
root /usr/share/nginx/html;

Load configuration files for the default server block.

include /etc/nginx/default.d/*.conf;

location / {
proxy_pass http://tomcat-server;#添加此行
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
[root@proxy ~]#systemctl start nginx

编写hosts解析

[root@proxy ~]#cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.160 tomcat1.tan.com
10.0.0.170 tomcat2.tan.com

3.在后端tomcat1主机上安装tomcat并修改conf/server.xml

安装脚本请见上一此作业

[root@tomcat1 ~]#bash tomcat8.5.sh
[root@tomcat1 ~]#vim /usr/local/tomcat/conf/server.xml
...#略

...#略




<Membership className="org.apache.catalina.tribes.membership.McastService"
address="230.188.188.188" #配置多播地址
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="10.0.0.160" #配置本机ip
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>











...#略

[root@tomcat1 ~]#cat /usr/local/tomcat/webapps/ROOT/index.jsp
<%@ page import="java.util.*" %>




tomcat test


On <%=request.getServerName() %>

<%=request.getLocalAddr() + ":" + request.getLocalPort() %>

SessionID = <%=session.getId() %>

<%=new Date()%>

[root@tomcat1 ~]#systemctl restart tomcat

4.在后端tomcat2主机上安装tomcat并修改conf/server.xml

安装脚本请见上一此作业

[root@tomcat2 ~]#bash tomcat8.5.sh
[root@tomcat2 ~]#vim /usr/local/tomcat/conf/server.xml
...#略

...#略

















...#略
[root@tomcat2 ~]#cat /usr/local/tomcat/webapps/ROOT/index.jsp
<%@ page import="java.util.*" %>




tomcat test


On <%=request.getServerName() %>

<%=request.getLocalAddr() + ":" + request.getLocalPort() %>

SessionID = <%=session.getId() %>

<%=new Date()%>

[root@tomcat2 ~]#systemctl restart tomcat

5.修改应用的web.xml文件开启该应用程序的分布式

修改tomcat1主机的应用的web.xml文件

[root@tomcat1 ~]#tail -n3 /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml

#添加此行

[root@tomcat1 ~]#systemctl restart tomcat

修改tomcat2主机的应用的web.xml文件

[root@tomcat2 ~]#tail -n3 /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml

#添加此行

[root@tomcat2 ~]#systemctl restart tomcat

6.访问测试,此时主机轮询但是session不会变

[root@proxy ~]#curl -I proxy.tan.com/index.jsp HTTP/1.1 200
Server: nginx/1.14.1
Date: Mon, 29 Aug 2022 05:05:28 GMT
Content-Type: text/html;charset=ISO-8859-1
Connection: keep-alive
Set-Cookie: JSESSIONID=06CEDA54AEFBBE67465BC4307874000D; Path=/; HttpOnly

[root@proxy ~]#curl -b "JSESSIONID=06CEDA54AEFBBE67465BC4307874000D" proxy.tan.com/index.jsp





tomcat test


On tomcat-server

10.0.0.170:8080

SessionID = 06CEDA54AEFBBE67465BC4307874000D

Mon Aug 29 13:05:48 CST 2022


[root@proxy ~]#curl -b "JSESSIONID=06CEDA54AEFBBE67465BC4307874000D" proxy.tan.com/index.jsp





tomcat test


On tomcat-server

10.0.0.160:8080

SessionID = 06CEDA54AEFBBE67465BC4307874000D

Mon Aug 29 13:05:52 CST 2022

posted @ 2023-10-08 09:31  小糊涂90  阅读(41)  评论(0)    收藏  举报