激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

云服務(wù)器|WEB服務(wù)器|FTP服務(wù)器|郵件服務(wù)器|虛擬主機|服務(wù)器安全|DNS服務(wù)器|服務(wù)器知識|Nginx|IIS|Tomcat|

香港云服务器
服務(wù)器之家 - 服務(wù)器技術(shù) - 服務(wù)器知識 - 3步完成Nginx+tomcat負載均衡的會話保持

3步完成Nginx+tomcat負載均衡的會話保持

2019-08-15 07:30拜托了王教授老王 服務(wù)器知識

會話是指一個終端用戶與交互系統(tǒng)進行通訊的過程,比如從輸入賬戶密碼進入操作系統(tǒng)到退出操作系統(tǒng)就是一個會話過程。會話較多用于網(wǎng)絡(luò)上,TCP的三次握手就創(chuàng)建了一個會話,TCP關(guān)閉連接就是關(guān)閉會話。

什么是會話保持

會話是指一個終端用戶與交互系統(tǒng)進行通訊的過程,比如從輸入賬戶密碼進入操作系統(tǒng)到退出操作系統(tǒng)就是一個會話過程。會話較多用于網(wǎng)絡(luò)上,TCP的三次握手就創(chuàng)建了一個會話,TCP關(guān)閉連接就是關(guān)閉會話。

Http協(xié)議是一種無狀態(tài)協(xié)議,所以需要使用Session機制來保存用戶的狀態(tài),比如登錄狀態(tài)、常用信息等。

3步完成Nginx+tomcat負載均衡的會話保持

Session用于保存一次會話的相關(guān)信息,可以實現(xiàn)在多個頁面之間共享這些數(shù)據(jù)。

3步完成Nginx+tomcat負載均衡的會話保持

3步完成Nginx+tomcat負載均衡的會話保持

例如:你打開淘寶登錄了個人賬號,即使你瀏覽了再多的店鋪寶貝,切換了很多的頁面,用戶名是不變的,這個就是Session起的作用。直到你關(guān)閉瀏覽器,Session被銷毀,才會清除掉之前的登錄記錄。

今天和大家分享“Nginx+tomcat實現(xiàn)負載均衡的會話保持”就是實現(xiàn):如果網(wǎng)站某個負載節(jié)點掛掉,請求被分配到新節(jié)點Session也會同步過來,實現(xiàn)會話保持,由此保證用戶無感知的瀏覽。

實現(xiàn)原理

3步完成Nginx+tomcat負載均衡的會話保持

使用Manager對象實現(xiàn)HTTP會話管理

DeltaManager作為會話管理器

用戶訪問nginx,nginx負載均衡到tomcat,用于Tomcat集群的會話管理器,將所有session會話的改變同步給集群中的每一個節(jié)點,實現(xiàn)會話復(fù)制。

實驗配置

Nginx配置

3步完成Nginx+tomcat負載均衡的會話保持

測試環(huán)境單臺服務(wù)器開了兩個tomcat,一臺對應(yīng)8080端口,另一臺對應(yīng)8090端口。

創(chuàng)建TomcatA TomcatB,分別配置tomcat server.xml

復(fù)制以下內(nèi)容到 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>  

備注:

1.classname配置tomcat集群在進行信息傳遞時互相使用什么類來進行傳遞

channelsendoptions可以設(shè)置為2,4,8.10

2-確認發(fā)送 4-同步發(fā)送 8-異步發(fā)送

10-在異步模式下,可以通過加上確認發(fā)送(Acknowledge)來提高可靠性

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

className-指定實現(xiàn)org.apache.catalina.ha.ClusterManager接口的類,用于信息之間的管理.

expireSessionsOnShutdown-設(shè)置為true時,一個節(jié)點關(guān)閉,將導(dǎo)致集群下的所有Session失效

notifyListenersOnReplication-集群下節(jié)點間的Session復(fù)制、刪除操作,是否通知session listeners

3.Channel是Tomcat節(jié)點之間進行通訊的工具。

Channel包括5個組件:Membership、Receiver、Sender、Transport、Interceptor

4.Membership維護集群的可用節(jié)點列表。用于檢測新增節(jié)點及掉線節(jié)點

address-組播地址(任意定義組播地址),如果需要阿里云ECS部署tomcat,因為ECS不支持組播,建議改用memcache或redis存儲session實現(xiàn)會話保持

port-組播端口 (兩個tomcat組播端口要一致)

frequency-發(fā)送心跳(向組播地址發(fā)送UDP數(shù)據(jù)包)的時間間隔(單位:ms)。默認值為500

dropTime-Membership在dropTime(單位:ms)內(nèi)未收到某一節(jié)點的心跳,則將該節(jié)點從可用節(jié)點列表刪除。默認值為3000

5.Receiver : 接收器

address-接收消息的地址(默認auto,但是在虛擬機上開啟tomcat會報錯,建議配置本機IP地址)

port-接收消息的端口(如果在一臺服務(wù)器配置多個tomcat,需區(qū)分開端口)

autoBind-端口的變化區(qū)間

如果port為4000,autoBind為100,接收器將在4000-4099間取一個端口,進行監(jiān)聽

selectorTimeout-NioReceiver 輪詢超時時間

maxThreads-線程池的***線程數(shù)

6.sender:發(fā)送器負責(zé)發(fā)送消息

  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:同步集群下的所有節(jié)點的一致性

9.ClusterListener : 監(jiān)聽器,監(jiān)聽Cluster組件接收的消息,使用DeltaManager時,Cluster接收的信息通過ClusterSessionListener傳遞給DeltaManager

配置web.xml

在web.xml中添加屬性,用于告訴web容器,該項目屬于分布式項目

添加標簽到web項目WEB-INF目錄

3步完成Nginx+tomcat負載均衡的會話保持

會話保持驗證

webapps/ROOT/index.jsp 創(chuàng)建測試頁面獲取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>  

瀏覽器訪問驗證

3步完成Nginx+tomcat負載均衡的會話保持

3步完成Nginx+tomcat負載均衡的會話保持

總結(jié):

tomcat實現(xiàn)會話保持有多種實現(xiàn)方式,這里只介紹了Manager對象實現(xiàn),優(yōu)點是利用tomcat自身集群session復(fù)制實現(xiàn)會話保持配置方便,缺點是像阿里云ECS這種不支持組播就無法用這種方式實現(xiàn)了。也可以使用memcache或redis存儲session會話,但這個要下載tomcat版本相對應(yīng)的memcache jar包。

延伸 · 閱讀

精彩推薦
850
主站蜘蛛池模板: 人人玩人人爽 | 中文字幕综合 | 黄色影院网站 | 久久精品国产一区二区电影 | 久久福利小视频 | 一级黄色大片在线观看 | 久久精品中文字幕一区二区 | 中文字幕在线不卡视频 | 87成人免费看片 | 久久一级 | 久久国产精品二区 | 一本一道久久久a久久久精品91 | 亚洲综合中文 | 李宗瑞国产福利视频一区 | 精品人人人人 | 免费人成在线观看网站 | 欧美成人一二三区 | 毛片免费观看视频 | 成人短视频在线播放 | 亚洲av一级毛片特黄大片 | 国产女厕一区二区三区在线视 | 免费观看高清视频网站 | 国产1区2 | 中文字幕免费一区 | 欧美 日韩 国产 成人 | 午夜小网站 | 久久久久国产一区二区三区不卡 | 亚洲欧美日韩精品久久亚洲区色播 | 日本不卡视频在线观看 | 欧美中文字幕一区二区三区亚洲 | 国内精品伊人久久 | 国产91在线高潮白浆在线观看 | 欧美性精品videofree | 国产伦久视频免费观看视频 | 黑人一级片视频 | 国产日产精品一区四区介绍 | 99精品视频在线免费观看 | 九九热精品视频在线 | 免费嗨片首页中文字幕 | 最近中文字幕一区二区 | 婷婷一区二区三区 |