加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

最简配置!3 步完成Nginx+tomcat负载均衡的会话保持

发布时间:2019-06-21 08:06:56 所属栏目:外闻 来源:拜托了王教授
导读:副标题#e# 什么是会话保持 会话是指一个终端用户与交互系统进行通讯的过程,比如从输入账户密码进入操作系统到退出操作系统就是一个会话过程。会话较多用于网络上,TCP的三次握手就创建了一个会话,TCP关闭连接就是关闭会话。 Http协议是一种无状态协议,所

2.manager决定如何管理集群的session信息

  • className-指定实现org.apache.catalina.ha.ClusterManager接口的类,用于信息之间的管理.
  • expireSessionsOnShutdown-设置为true时,一个节点关闭,将导致集群下的所有Session失效
  • notifyListenersOnReplication-集群下节点间的Session复制、删除操作,是否通知session listeners

3.Channel是Tomcat节点之间进行通讯的工具。

  • Channel包括5个组件:Membership、Receiver、Sender、Transport、Interceptor

4.Membership维护集群的可用节点列表。用于检测新增节点及掉线节点

  • address-组播地址(任意定义组播地址),如果需要阿里云ECS部署tomcat,因为ECS不支持组播,建议改用memcache或redis存储session实现会话保持
  • port-组播端口 (两个tomcat组播端口要一致)
  • frequency-发送心跳(向组播地址发送UDP数据包)的时间间隔(单位:ms)。默认值为500
  • dropTime-Membership在dropTime(单位:ms)内未收到某一节点的心跳,则将该节点从可用节点列表删除。默认值为3000

5.Receiver : 接收器

  • address-接收消息的地址(默认auto,但是在虚拟机上开启tomcat会报错,建议配置本机IP地址)
  • port-接收消息的端口(如果在一台服务器配置多个tomcat,需区分开端口)
  • autoBind-端口的变化区间

如果port为4000,autoBind为100,接收器将在4000-4099间取一个端口,进行监听

  • selectorTimeout-NioReceiver 轮询超时时间
  • maxThreads-线程池的最大线程数

6.sender:发送器负责发送消息

  1. <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> 
  2.  <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> 
  3.  </Channel> 

7.Valve :过滤器

8.Deployer:同步集群下的所有节点的一致性

9.ClusterListener : 监听器,监听Cluster组件接收的消息,使用DeltaManager时,Cluster接收的信息通过ClusterSessionListener传递给DeltaManager

配置web.xml

在web.xml中添加属性,用于告诉web容器,该项目属于分布式项目

添加标签到web项目WEB-INF目录

最简配置!3 步完成Nginx+tomcat负载均衡的会话保持

会话保持验证

webapps/ROOT/index.jsp 创建测试页面获取sessionID

  1. tomcatA 
  2.  <%@ page language="java" %> 
  3.  <html> 
  4.  <head><title>TomcatA</title></head> 
  5.  <body> 
  6.  <h1><font color="red">TomcatA</font></h1> 
  7.  <table align="centre" border="1"> 
  8.  <tr> 
  9.  <td>Session ID</td> 
  10.  <% session.setAttribute("TomcatA","TomcatA"); %> 
  11.  <td><%= session.getId() %></td> 
  12.  </tr> 
  13.  <tr> 
  14.  <td>Created on</td> 
  15.  <td><%= session.getCreationTime() %></td> 
  16.  </tr> 
  17.  </table> 
  18.  </body> 
  19. </html> 
  20. tomcatB 
  21. <%@ page language="java" %> 
  22. <html> 
  23.  <head><title>TomcatB</title></head> 
  24.  <body> 
  25.  <h1><font color="red">TomcatB</font></h1> 
  26.  <table align="centre" border="1"> 
  27.  <tr> 
  28.  <td>Session ID</td> 
  29.  <% session.setAttribute("TomcatB","TomcatB"); %> 
  30.  <td><%= session.getId() %></td> 
  31.  </tr> 
  32.  <tr> 
  33.  <td>Created on</td> 
  34.  <td><%= session.getCreationTime() %></td> 
  35.  </tr> 
  36.  </table> 
  37.  </body> 
  38. </html> 

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读