使用httpd反代负载均衡后端tomcat,tomcat使用自带的集群服务实现会话集群;

实现环境:

node1:172.18.11.111 TomcatA

node2:172.18.11.112 TomcatB

node3:172.18.11.113 反代调度器httpd

wKiom1deydWhuhoMAABcpOSvHto380.png

分别在node1和node2上安装tomcat:


]# vim /etc/profile.d/java.sh

export JAVA_HOME=/usr

]# . /etc/profile.d/java.sh

]# yum install tomcat tomcat-lib tomcat-webapps tomcat-admin-webapps -y

]# cd /var/lib/tomcat/webapps/

]# mkdir testapp

]# cd testapp/

]# mkdir classes lib WEB-INF META-INF

]# vim /var/lib/tomcat/webapps/testapp/test.jsp

<%@ page language="java" %>

<html>

  <head><title>TomcatA</title></head>

  <body>

    <h1><font color="red">TomcatA.magedu.com</font></h1>

    <table align="centre" border="1">

      <tr>

        <td>Session ID</td>

    <% session.setAttribute("magedu.com","magedu.com"); %>

        <td><%= session.getId() %></td>

      </tr>

      <tr>

        <td>Created on</td>

        <td><%= session.getCreationTime() %></td>

     </tr>

    </table>

  </body>

</html>


]# scp -r /var/lib/tomcat/webapps/testapp/ node2:/var/lib/tomcat/webapps/

]# vim /etc/tomcat/server.xml

添加在host配置段:

<Context path="/test" docBase="testapp"/>


在node2:

]# vim /var/lib/tomcat/webapps/testapp/test.jsp

<%@ page language="java" %>

<html>

  <head><title>TomcatB</title></head>

  <body>

    <h1><font color="blue">TomcatB.magedu.com</font></h1>

    <table align="centre" border="1">

      <tr>

        <td>Session ID</td>

    <% session.setAttribute("magedu.com","magedu.com"); %>

        <td><%= session.getId() %></td>

      </tr>

      <tr>

        <td>Created on</td>

        <td><%= session.getCreationTime() %></td>

     </tr>

    </table>

  </body>

</html>


分别启动node1和node2上的tomcat:

]# systemctl start tomcat.service

]# ss -tnl 监听在8080端口;


(1)配置tomcat启用集群:

在node1:

]# vim /etc/tomcat/server.xml 

wKioL1de0ODTH0nXAADjUD8rZog374.png


在node2:

]# vim /etc/tomcat/server.xml 

wKioL1de0RnQw4RxAADlfl1Dcb8032.png


(2)添加<distributable/>指令:

在node1:

]# cp /etc/tomcat/web.xml /var/lib/tomcat/webapps/testapp/WEB-INF/

]# vim /var/lib/tomcat/webapps/testapp/WEB-INF/web.xml 

添加:<distributable/>


把该配置文件复制一份到node2上:

]# scp /var/lib/tomcat/webapps/testapp/WEB-INF/web.xml node2:/var/lib/tomcat/webapps/testapp/WEB-INF/


在node1和node2分别启动tomcat:

]# systemctl start tomcat.service


在node3上:

使用httpd的mod_proxy模块、mod_proxy_ajp模块、mod_proxy_balancer模块:

httpd使用ajp模块就意味着tomcat只能使用ajp链接器了。

安装httpd:

]# yum -y install httpd

]# vim /etc/httpd/conf.d/mod_proxy_ajp.conf

wKiom1dezbTRiSuwAABf2xYv8Gg835.png

]# httpd -t

]# systemctl start httpd.service


在浏览器输入:http://172.18.11.113/test/test.jsp

基于调度器后端不同主机,但会话保持不变;

wKiom1de0bvy5uJ4AABXnHun03k176.png

wKioL1de0szC5ZEdAABbc6Gkj34474.png

以上就是基于tomcat会话集群方式实现会话保持的。