每個請求按時間順序逐一分配到不同的後端伺服器,如果後端某台伺服器宕機,則自動剔除故障機器,使使用者訪問不受影響。
指定輪詢權重,weight值越大,分配到的機率就越高,主要用於後端每台伺服器效能不均衡的情況。
每個請求按訪問ip的雜湊結果分配,這樣每個訪客固定訪問乙個後端伺服器,可以有效的解決動態網頁存在的session共享問題。(此為解決session共享的一種方式)
更智慧型的乙個負載均衡演算法,此演算法可以根據頁面大小和載入時間長短智慧型地進行負載均衡,也就是根據後端伺服器的響應時間來分配請求,響應時間短的優先分配。如果想要使用此排程演算法,需要nginx的upstream_fair模組。
按訪問url的雜湊結果來分配請求,使每個url定向到同一台後端伺服器,可以進一步提高後端快取伺服器的效率。如果想要使用此排程演算法,需要nginx的hash軟體包。
思路:因為ip_hash策略的結果是同一ip會訪問同一臺伺服器,實際上session並沒有共享,只是因為同一ip會一直訪問一台伺服器,自然不存在共享的問題。那麼可想而知,換個ip,session並沒有共享。
nginx配置示例:
upstream test思路:直接讓在集群中的伺服器中都複製乙份session唄,那麼不管反代採用的是負載均衡策略,都不會出現session丟失的問題。server
}
tomcat配置為如下兩個步驟:
① 修改server.xml中的cluster節點
② 修改應用的web.xml,增加節點:
兩步實際上用的是tomcat自帶的集群。
配置示例:
這篇寫的不錯。
思路:用redis統一快取session,我們的應用需要連線到redis,用redis裡的session就好了。下面是使用filter的原理。
(配置context.xml也可以,可以看下 或者
優缺點
配置步驟:
① 增加redis client和spring session的依賴(pom.xml)
<② 修改web.xml,增加filter,注意:這個filter必須寫到最前面dependency
>
<
groupid
>org.springframework.session
groupid
>
<
artifactid
>spring-session-data-redis
artifactid
>
<
version
>1.2.1.release
version
>
dependency
>
<
dependency
>
<
groupid
>redis.clients
groupid
>
<
artifactid
>jedis
artifactid
>
<
version
>2.8.1
version
>
dependency
>
③ 修改spring配置檔案,在容器中注入spring session和redis相關的bean。
需要注意的地方:
tomcat集群session共享
才疏學淺且語無倫次,如有誤人子弟,深表歉意 一台tomcat不夠用時,要麼換更好的機器,要麼加機器做集群。做集群就會涉及到負載均衡,比如nginx,會把到來的每個請求按一定的規則 給後端tomcat,這就有乙個逃避不了的問題需要解決,使用者的session需要在不同的tomcat之間共享。比較偷懶的...
WebSocket 集群 session 共享方案
本文聊天室基於 websocket 進行實現,同時也為解決websocket session在集群部署服務時的無法共享導致的收發訊息問題。當我們使用 websocket 實現聊天時,後端服務會將所有的 websocket session快取起來,之後根據收到的訊息,遍歷或者找到某個session進行...
tomcat集群session共享
tomcat集群配置其實很簡單,在tomcat自帶的文件中有詳細的說明 docs cluster howto.html 只不過是英語的,對我這樣的人來說很難懂 下面根據說下怎麼配置吧 第一步 準備工作 準備幾份tomcat程式,比如分別叫tomcat1 tomcat2 如果各tomcat程式放在不同...