91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Redis存儲Tomcat集群的Session

發布時間:2021-12-14 15:32:02 來源:億速云 閱讀:120 作者:小新 欄目:云計算

小編給大家分享一下怎么用Redis存儲Tomcat集群的Session,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

前段時間,我花了不少時間來尋求一種方法,把新開發的代碼推送到到生產系統中部署,生產系統要能夠零宕機、對使用用戶零影響。 我的設想是使用集群來搞定,通過通知負載均衡Nginx,取下集群中的Tomcat節點,然后對Tomcat上的應用進行升級,再通知負載均衡Nginx,把Tomcat節點重新加載上去。依次這么做,把集群中的所有Tomcat都替換一次即可。 那么問題來了,在取下Tomcat節點和加載新Tomcat節點時如何做到對用戶無影響呢?方法很簡單,共享Session。 下面,我們用實例來說明此方案。我們的例子使用了一臺Nginx做負載均衡,后端掛接了兩臺Tomcat,且每臺Tomcat的Session會話都保存到Redis數據庫中。其中,Nginx配置為non-sticky運行模式,也即每一個請求都可以被分配到集群中的任何節點。當要上線新代碼時,只需簡單地取下Tomcat實例,此時所有的訪問用戶會被路由到活動的Tomcat實例中去,而且由于會話數據都是保存在Redis數據庫中,所以活躍用戶并不會受影響。當Tomcat更新完畢,又可以把此節點加入到Nginx中。 安裝Nginx

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

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

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部分的內容:

location / {  
    proxy_pass  http://tomcat;  
  }

重啟Nginx

# sudo service nginx restart

接下來,安裝兩個Tomcat實例。由于我們是在同一臺服務器上做的演示,要讓兩臺Tomcat不發生沖突,需要修改第二個Tomcat實例的端口號。由于Nginx配置為non-sticky運行模式,對每個請求采用的是Round-robin負載均衡方式,這意味著它會為每個請求都抽獎一個新會話。
接著,下載并安裝Redis。步驟省略,很簡單。
最后,我們需要配置Tomcat,讓Tomcat把會話Session保存到Redis數據庫。
我們要使用tomcat-redis-session-manager這樣的第三方庫,主頁見:
https://github.com/jcoleman/tomcat-redis-session-manager 要注意此庫并非開箱即用的,使用時需要做一些調整。你需要下載源碼,并在更新了依賴庫的版本后,重建項目。比如我使用了commons-pool2-2.2.jar和jedis-2.6.1.jar依賴庫。要記住把這些jar文件復制到每一個Tomcat實例的lib子目錄下。 在更新了commons-pool、jedis和tomcat版本這些庫后,你可以使用build.gradle來構建整個項目。構建完畢后,復制新生成的tomcat-redis-session-manager-1.2.jar到每一個Tomcat實例的lib子目錄下。并在修改每一個Tomcat實例的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實例。可以檢查到Redis確實保存了Tomcat的會話。然后我們對Tomcat實例取下或恢復時,訪問用戶確實沒受影響。

以上是“怎么用Redis存儲Tomcat集群的Session”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

同江市| 仲巴县| 舞阳县| 宿迁市| 宜春市| 淮安市| 邢台县| 广汉市| 平乐县| 右玉县| 武胜县| 河东区| 凭祥市| 彰化县| 黄浦区| 西平县| 临夏市| 沧源| 福安市| 六枝特区| 封开县| 林周县| 新和县| 宕昌县| 久治县| 巩留县| 新巴尔虎右旗| 龙岩市| 得荣县| 德钦县| 牡丹江市| 博兴县| 古交市| 搜索| 嘉荫县| 大名县| 绥江县| 尤溪县| 维西| 博罗县| 芷江|