日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tomcat服务器介绍之二 、session服务器实现方法

發布時間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tomcat服务器介绍之二 、session服务器实现方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上次講到了session會話的綁定,通過nginx和apache(3種方式)實現;session會話的復制,通過DeltaManager和apache(mod_jk)實現;這次講解基于msm實現session服務器的過程,需要用到的軟件包如下:

一、準備工作,先部署nginx可以反向代理客戶端請求至2臺tomcat服務器

測試環境在centos7上,使用nginx和tomcat7實現;參考網頁

https://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration

nginx:對于客戶端發來的請求做反向代理至后端的2臺tomcat服務器,配置如下

[root@node3?~]#?yum?install?-y?nginx [root@node3?~]#?cd?/etc/nginx [root@node3?nginx]#?vim?nginx.confupstream?tomcatservs?{???????????????//http段加入的內容server?172.16.116.231:80?max_fails=1?fail_timeout=5;???//加入監控檢測server?172.16.116.232:80?max_fails=1?fail_timeout=5;}location?/?{?????????????????????//server段加入的內容proxy_pass?http://tomcatservs/;?????index?index.jsp?index.html;}


node1:172.16.116.231 ; 作為tomcat服務器1來使用,安裝httpd和tomcat,使用httpd基于mod_proxy_ajp模塊反向代理前端nginx調度來的所有請求給tomcat;配置如下

[root@node1?~]#?yum?install?-y?httpd?tomcat[root@node1?~]#?cd?/etc/httpd/conf.d??//配置httpd基于mod_proxy_ajp模塊反向代理 [root@node1?conf.d]#?vim?mod_proxy_ajp.conf <VirtualHost?*:80>ServerName?node3ProxyVia?OnProxyRequests?OffProxyPreserveHost?On<Proxy?*>Require?all?granted</Proxy>ProxyPass?/?ajp://172.16.116.231:8009/??????????ProxyPa***everse?/?ajp://172.16.116.231:8009/<Location?/>Require?all?granted</Location> </VirtualHost>[root@node1?~]#?cd?/etc/tomcat/ [root@node1?tomcat]#?vim?server.xml?<Engine?name="Catalina"?defaultHost="node1"?jvmRoute="Tomcat1">???//Engine組件修改<Host?name="node1"?appBase="/web/webapps/"?autoDeploy="false"?>??//添加虛擬主機<Context?path=""?docBase="ROOT"?reloadable="true"/><Valve?className="org.apache.catalina.valves.AccessLogValve"?directory="/web/logs"prefix="localhost_access_log."?suffix=".txt"pattern="%h?%l?%u?%t?&quot;%r&quot;?%s?%b"?/></Host>[root@node1?~]#?tree?/web/????????//創建node1虛擬主機的根目錄,并提供測試頁index.jsp /web/ |--?logs `--?webapps`--?ROOT|--?META-INF|--?WEB-INF|???`--?web.xml|--?classes|--?index.jsp`--?lib


node2:172.16.116.232;?作為tomcat服務器2來使用,安裝httpd和tomcat,使用httpd基于mod_proxy_ajp模塊反向代理前端nginx調度來的所有請求給tomcat;配置如下

[root@node2?~]#?yum?install?-y?httpd?tomcat[root@node2?~]#?cd?/etc/httpd/conf.d??//配置httpd基于mod_proxy_ajp模塊反向代理 [root@node2?conf.d]#?vim?mod_proxy_ajp.conf <VirtualHost?*:80>ServerName?node3ProxyVia?OnProxyRequests?OffProxyPreserveHost?On<Proxy?*>Require?all?granted</Proxy>ProxyPass?/?ajp://172.16.116.232:8009/??????????ProxyPa***everse?/?ajp://172.16.116.232:8009/<Location?/>Require?all?granted</Location> </VirtualHost>[root@node2?~]#?cd?/etc/tomcat/ [root@node2?tomcat]#?vim?server.xml?<Engine?name="Catalina"?defaultHost="node2"?jvmRoute="Tomcat2">???//Engine組件修改<Host?name="node2"?appBase="/web/webapps/"?autoDeploy="false"?>??//添加虛擬主機<Context?path=""?docBase="ROOT"?reloadable="true"/><Valve?className="org.apache.catalina.valves.AccessLogValve"?directory="/web/logs"prefix="localhost_access_log."?suffix=".txt"pattern="%h?%l?%u?%t?&quot;%r&quot;?%s?%b"?/></Host>[root@node2?~]#?tree?/web/????????//創建node2虛擬主機的根目錄,?并提供測試頁index.jsp /web/ |--?logs `--?webapps`--?ROOT|--?META-INF|--?WEB-INF|???`--?web.xml|--?classes|--?index.jsp`--?lib

測試結果如圖,可以看出已實現nginx的反向代理至后端的node1和node2上的tomcat服務器

此時Session信息并不一致,接下來我們通過配置MSM實現Session共享!?


二、什么是MSM

? ? ??MSM–Memcached Session Manager是一個高可用的Tomcat Session共享解決方案,除了可以從本機內存快速讀取Session信息(僅針對黏性Session)外,同時可使用Memcached存取Session,以實現高可用。


三、MSM的工作原理

①?Sticky Session(黏性) 模式下的工作原理

#Tomcat本地Session為主Session,Memcached 中的Session為備Session

? ? 安裝在Tomcat上的MSM使用本機內存保存Session,當一個請求執行完畢之后,如果對應的Session在本地不存在(即某用戶的第一次請求),則將該Session復制一份至Memcached;當該Session的下一個請求到達時,會使用Tomcat的本地Session,請求處理結束之后,Session的變化會同步更新到 Memcached,保證數據一致。

? ?當集群中的一個Tomcat掛掉,下一次請求會被路由到其他Tomcat上。負責處理此此請求的Tomcat并不清楚Session信息,于是從Memcached查找該Session,更新該Session并將其保存至本機。此次請求結束,Session被修改,送回Memcached備份。

②?Non-sticky Session (非黏性)模式下的工作原理

#Tomcat本地Session為中轉Session,Memcached為主備Session

收到請求,加載備Session至本地容器,若備Session加載失敗則從主Session加載

請求處理結束之后,Session的變化會同步更新到Memcached,并清除Tomcat本地Session ?


四、MSM的實現過程:?

?4.1、在后端的memcached服務器(centos6.6)上安裝系統自帶的memcached軟件包

? ?m1: 172.16.16.11 ; m2:172.16.16.12 ,安裝完成啟動service memcached start即可


4.2、rpm包安裝的tomcat,將下載的跟MSM相關的jar包放到/usr/share/tomcat/lib目錄中;編譯安裝的tomcat需要將所需jar包放入各tomcat節點的tomcat安裝目錄下的lib目錄中?


4.3、配置node1和node2節點?

[root@node1?~]#?vim?/etc/tomcat/server.xml?<Host?name="node1"?appBase="/web/webapps/"?autoDeploy="false"?><Context?path=""?docBase="ROOT"?reloadable="true"><Manager?className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="m1:172.16.16.11:11211,m2:172.16.16.12:11211"??//memcached服務器failoverNodes="m1"???????????requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"?/></Context><Valve?className="org.apache.catalina.valves.AccessLogValve"?directory="/web/logs"prefix="localhost_access_log."?suffix=".txt"pattern="%h?%l?%u?%t?&quot;%r&quot;?%s?%b"?/></Host>[root@node2?~]#?vim?/etc/tomcat/server.xml?<Host?name="node2"?appBase="/web/webapps/"?autoDeploy="false"?><Context?path=""?docBase="ROOT"?reloadable="true"><Manager?className="de.javakaffee.web.msm.MemcachedBackupSessionManager"memcachedNodes="m1:172.16.16.11:11211,m2:172.16.16.12:11211"?????//memcached服務器failoverNodes="m1"requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"?/></Context><Valve?className="org.apache.catalina.valves.AccessLogValve"?directory="/web/logs"prefix="localhost_access_log."?suffix=".txt"pattern="%h?%l?%u?%t?&quot;%r&quot;?%s?%b"?/></Host>


4.4、測試結果 ?

額外測試,關掉node2的httpd服務(即tomcat也無法響應);測試結果nginx只調度給node1節點,重新啟動node2的httpd服務,訪問的結果session值仍沒有發生變化,證明session會話是共享的!!!

4.5、Memcached圖形管理工具---memcachephp

需要安裝httpd和php才可以使用 ;將memcache.php復制到httpd的根目錄中即可,如果是rpm包安裝的將其復制到/var/www/html目錄下?

define('ADMIN_USERNAME','memcached');???//?Admin?Username????設置管理員用戶 define('ADMIN_PASSWORD','123456');??????//?Admin?Password????密碼 define('DATE_FORMAT','Y/m/d?H:i:s'); define('GRAPH_SIZE',200); define('MAX_ITEM_DUMP',50);$MEMCACHE_SERVERS[]?=?'172.16.16.11:11211';?//?add?more?as?an?array?添加memcached服務器 $MEMCACHE_SERVERS[]?=?'172.16.16.12:11211';?//?add?more?as?an?array


監控界面:

???????? 在下面監控畫面看出,左側顯示的是memcache的主機、端口,運行時間等信息;右側顯示的是cache利用率、緩存命中率、點擊率(Hit)等信息。

???????? 注意:右則顯示的信息,默認是多個memcache緩存的總數,需要選中Memcached Hosts對單個主機進行刷新,顯示單個主機的信息;Variables里面是key和value,可以刪除

至此,tomcat基于MSM+Memcached實現的session服務器(即session會話共享)已實現!這次講解到此完成!!O(∩_∩)O~~~?



轉載于:https://blog.51cto.com/bengbengtu/1707346

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的tomcat服务器介绍之二 、session服务器实现方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。