加入收藏 | 设为首页 | 会员中心 | 我要投稿 湘西站长网 (https://www.0743zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

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

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

 什么是会话保持

会话是指一个终端用户与交互系统进行通讯的过程,比如从输入账户密码进入操作系统到退出操作系统就是一个会话过程。会话较多用于网络上,TCP的三次握手就创建了一个会话,TCP关闭连接就是关闭会话。

Http协议是一种无状态协议,所以需要使用Session机制来保存用户的状态,比如登录状态、常用信息等。

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

Session用于保存一次会话的相关信息,可以实现在多个页面之间共享这些数据。

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

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

例如:你打开淘宝登录了个人账号,即使你浏览了再多的店铺宝贝,切换了很多的页面,用户名是不变的,这个就是Session起的作用。直到你关闭浏览器,Session被销毁,才会清除掉之前的登录记录。

今天和大家分享“Nginx+tomcat实现负载均衡的会话保持”就是实现:如果网站某个负载节点挂掉,请求被分配到新节点Session也会同步过来,实现会话保持,由此保证用户无感知的浏览。

实现原理

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

  • 使用Manager对象实现HTTP会话管理
  • DeltaManager作为会话管理器
  • 用户访问nginx,nginx负载均衡到tomcat,用于Tomcat集群的会话管理器,将所有session会话的改变同步给集群中的每一个节点,实现会话复制。

实验配置

Nginx配置

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

测试环境单台服务器开了两个tomcat,一台对应8080端口,另一台对应8090端口。

创建TomcatA TomcatB,分别配置tomcat server.xml

复制以下内容到 Engine下

添加此模块:

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

  1. <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" 
  2.  channelSendOptions="8"> 
  3.  <Manager className="org.apache.catalina.ha.session.DeltaManager" 
  4.  expireSessionsOnShutdown="false" 
  5.  notifyListenersOnReplication="true"/> 
  6.  <Channel className="org.apache.catalina.tribes.group.GroupChannel"> 
  7.  <Membership className="org.apache.catalina.tribes.membership.McastService" 
  8.  address="228.0.0.4" 
  9.  port="45564" 
  10.  frequency="500" 
  11.  dropTime="3000"/> 
  12.  <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
  13.  address="192.168.224.145" 
  14.  port="4001" 
  15.  autoBind="100" 
  16.  selectorTimeout="5000" 
  17.  maxThreads="6"/> 
  18.  <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> 
  19.  <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> 
  20.  </Sender> 
  21.  <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> 
  22.  <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> 
  23.  </Channel> 
  24.  <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 
  25.  filter=""/> 
  26.  <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> 
  27.  <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" 
  28.  tempDir="/tmp/war-temp/" 
  29.  deployDir="/tmp/war-deploy/" 
  30.  watchDir="/tmp/war-listen/" 
  31.  watchEnabled="false"/> 
  32.  <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> 
  33.  <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> 
  34.  </Cluster> 

备注:

(编辑:湘西站长网)

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

热点阅读