nginx負載均衡多臺tomcat,session共享,session丟失
Windows下Nginx+Tomcat整合的安裝與配置(一)【精】(分類裡都值得一看)
start nginx
//啟動
nginx -t
//測試nginx配置是否正確
nginx -s stop
//結束nginx程式
nginx -s reload
//重啟nginx程式
一. 配置負載均衡
自己嘗試的例子:
訪問:
發現請求被根據權重weight分發到兩個Tomcat中。其中一個Down掉後也會切換到另一個上。
註釋掉可使用#號也可使用down:
upstream localhost2 { # server localhost:8080 weight=1; server localhost:28080 weight=2; } upstream localhost2 { server localhost:8080 down; server localhost:28080 weight=2; }
QC:
window下權重 weight設定為一樣時,切換無法成功,原因未知
配置多個:
server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } } server { listen 80; server_name t.test.com; charset utf-8; access_log logs/hostzs.access.log; location / { proxy_pass http://127.0.0.1:9000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } server { listen 80; server_name www.test.com; charset utf-8; access_log logs/hostzs.access.log; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
二. 實現Session共享
多個tomcat要一起協同工作有幾種辦法,可以考慮的方案有以下幾個:
1. 使用tomcat自帶的cluster方式,多個tomcat間自動實時複製session資訊,配置起來很簡單。但這個方案的效率比較低,在大併發下表現並不好。
2. 利用nginx的基於訪問ip的hash路由策略,保證訪問的ip始終被路由到同一個tomcat上,這個配置更簡單。但如果應用是某一個區域網大量使用者同時登入,這樣負載均衡就沒什麼作用了。
3. 利用memcached把多個tomcat的session集中管理,前端在利用nginx負載均衡和動靜態資源分離,在兼顧系統水平擴充套件的同時又能保證較高的效能。