1、系統(tǒng)架構(gòu)
2、服務器情況
? 服務器 1:Nginx(80)、redis(6379)
? 服務器 2:Tomcat1(8080)、tomcat2(8080)
? 服務器 3:MySQL(3306)
3、Nginx 主要配置
http { ...... upstream tomcat { ip_hash; server tomcat1:8080 max_fails=3 fail_timeout=15s; server tomcat2:8080 max_fails=3 fail_timeout=15s; } server { ...... location /tomcat { proxy_pass http://tomcat; } } }
4、會話保持的幾個方案說明
1. nginx 的 ip_hash 算法
實現(xiàn)原理就是同一個客戶端的所有請求只調(diào)度給同一個后臺 tomcat,這樣會話就能保持在同一臺服務器上。
優(yōu)點:配置最簡單,在 nginx的 upstream 調(diào)度里加一句ip_hash 即可。
缺點:后端 tomcat 宕機,用戶 session 會丟失。
2. tomcat 的 session 復制集群
多臺 tomcat 通過組播互相溝通會話信息,以保持不同tomcat 之間的會話一致性。
優(yōu)點:后端 tomcat 宕機,用戶 session 不丟失。
缺點:使用組播將信息復制到多個 tomcat 節(jié)點,網(wǎng)絡開
銷大。
3. 緩存集中式管理 session
session 可以保存在文件、數(shù)據(jù)庫和內(nèi)存中,利用 redis 或 memcached 將 session 信息緩存,以達到會話信息不丟失,也不影響負載均衡的目的。
優(yōu)點:只要緩存服務器沒問題,用戶 session 不會丟,也沒有額外的網(wǎng)絡開銷。
缺點:太依賴緩存服務器,需要額外的緩存服務器,成本也高,當然要求維護人員技術水平也較高,適合于性能要求高的大型環(huán)境。
5、測試功能
1. 啟動好相關服務;
2. 通過 nginx 登陸后臺,并確定連接的是哪個 tomcat;
3. 關閉目前使用的 tomcat,刷新后臺頁面,確認是否存在掉線情況;
4. 啟動已關閉的 tomcat,關閉另外一個 tomcat,確認是否還在登陸狀態(tài)。