九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
用Redis存儲(chǔ)Tomcat集群的Session

前段時(shí)間,我花了不少時(shí)間來(lái)尋求一種方法,把新開(kāi)發(fā)的代碼推送到到生產(chǎn)系統(tǒng)中部署,生產(chǎn)系統(tǒng)要能夠零宕機(jī)、對(duì)使用用戶(hù)零影響。

我的設(shè)想是使用集群來(lái)搞定,通過(guò)通知負(fù)載均衡Nginx,取下集群中的Tomcat節(jié)點(diǎn),然后對(duì)Tomcat上的應(yīng)用進(jìn)行升級(jí),再通知負(fù)載均衡Nginx,把Tomcat節(jié)點(diǎn)重新加載上去。依次這么做,把集群中的所有Tomcat都替換一次即可。

那么問(wèn)題來(lái)了,在取下Tomcat節(jié)點(diǎn)和加載新Tomcat節(jié)點(diǎn)時(shí)如何做到對(duì)用戶(hù)無(wú)影響呢?方法很簡(jiǎn)單,共享Session。
下面,我們用實(shí)例來(lái)說(shuō)明此方案。我們的例子使用了一臺(tái)Nginx做負(fù)載均衡,后端掛接了兩臺(tái)Tomcat,且每臺(tái)Tomcat的Session會(huì)話都保存到Redis數(shù)據(jù)庫(kù)中。其中,Nginx配置為non-sticky運(yùn)行模式,也即每一個(gè)請(qǐng)求都可以被分配到集群中的任何節(jié)點(diǎn)。當(dāng)要上線新代碼時(shí),只需簡(jiǎn)單地取下Tomcat實(shí)例,此時(shí)所有的訪問(wèn)用戶(hù)會(huì)被路由到活動(dòng)的Tomcat實(shí)例中去,而且由于會(huì)話數(shù)據(jù)都是保存在Redis數(shù)據(jù)庫(kù)中,所以活躍用戶(hù)并不會(huì)受影響。當(dāng)Tomcat更新完畢,又可以把此節(jié)點(diǎn)加入到Nginx中。

安裝Nginx

# sudo rpm -ivh nginx-1.4.2-1.el6.ngx.x86_64.rpm

修改配置文件/etc/nginx/nginx.conf,并添加下面的內(nèi)容:

http {upstream tomcat  {        server localhost:8080;        server localhost:8081;    }include       /etc/nginx/mime.types;default_type  application/octet-stream;
修改配置文件/etc/nginx/conf.d/default.conf并替換location部分的內(nèi)容:
location / {    proxy_pass  http://tomcat;  }

重啟Nginx

# sudo service nginx restart
接下來(lái),安裝兩個(gè)Tomcat實(shí)例。由于我們是在同一臺(tái)服務(wù)器上做的演示,要讓兩臺(tái)Tomcat不發(fā)生沖突,需要修改第二個(gè)Tomcat實(shí)例的端口號(hào)。由于Nginx配置為non-sticky運(yùn)行模式,對(duì)每個(gè)請(qǐng)求采用的是Round-robin負(fù)載均衡方式,這意味著它會(huì)為每個(gè)請(qǐng)求都抽獎(jiǎng)一個(gè)新會(huì)話。

接著,下載并安裝Redis。步驟省略,很簡(jiǎn)單。

最后,我們需要配置Tomcat,讓Tomcat把會(huì)話Session保存到Redis數(shù)據(jù)庫(kù)。

我們要使用tomcat-redis-session-manager這樣的第三方庫(kù),主頁(yè)見(jiàn):

https://github.com/jcoleman/tomcat-redis-session-manager

要注意此庫(kù)并非開(kāi)箱即用的,使用時(shí)需要做一些調(diào)整。你需要下載源碼,并在更新了依賴(lài)庫(kù)的版本后,重建項(xiàng)目。比如我使用了commons-pool2-2.2.jar和jedis-2.6.1.jar依賴(lài)庫(kù)。要記住把這些jar文件復(fù)制到每一個(gè)Tomcat實(shí)例的lib子目錄下。

在更新了commons-pool、jedis和tomcat版本這些庫(kù)后,你可以使用build.gradle來(lái)構(gòu)建整個(gè)項(xiàng)目。構(gòu)建完畢后,復(fù)制新生成的tomcat-redis-session-manager-1.2.jar到每一個(gè)Tomcat實(shí)例的lib子目錄下。并在修改每一個(gè)Tomcat實(shí)例的context.xml配置文件:

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /><Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"         host="localhost"         port="6379"         database="0"         maxInactiveInterval="60" />
重啟Tomcat實(shí)例??梢詸z查到Redis確實(shí)保存了Tomcat的會(huì)話。然后我們對(duì)Tomcat實(shí)例取下或恢復(fù)時(shí),訪問(wèn)用戶(hù)確實(shí)沒(méi)受影響。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Spring Boot 一個(gè)依賴(lài)搞定 session 共享,沒(méi)有比這更簡(jiǎn)單的方案了!
Nginx+Tomcat+Redis負(fù)載均衡實(shí)現(xiàn)session共享
java開(kāi)發(fā)之Redis實(shí)現(xiàn)分布式Session管理
轉(zhuǎn)載:淺談web應(yīng)用的負(fù)載均衡、集群、高可用(HA)解決方案
【轉(zhuǎn)】分布式環(huán)境下5種session處理策略(大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析 里面的方案)
linux-tomcat+nginx+redis:分布式session共享(redis配置說(shuō)明)
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服