nginx負載均衡實現tomcat集羣方案簡要小結

點兩部分:1、負載均衡2、tomcat集羣 nginx

 

        所謂tomcat集羣,就是能夠向外提供並行服務的多臺機器,任何一臺服務器宕機,其它服務器能夠替代它向外提供服務,而不影響用戶訪問。 redis

        nginx是一個經常使用的反向代理服務,可自定義模塊,實現請求轉發及負載均衡(根具體採用策略有關)。爲了tomcat集羣的高可用性,還須要實現nginx的雙機熱備。 後端

        一,若是僅是對外提供一個頁面訪問,不用區分單一用戶(不區分每一個訪問session,不涉及用戶權限,用戶資料等內容),僅僅配置nginx負載均衡策略便可。 緩存

 nginx負載均衡策略主要分一下四種: tomcat

1)、輪詢(默認) 服務器

每一個請求按時間順序逐一分配到不一樣的後端服務器,若是後端服務器宕機,能自動剔除。 cookie

2)、ip_hash 每一個請求按訪問ip的hash結果分配,這樣每一個訪客固定訪問一個後端服務器。 session

3)、fair 按後端服務器的響應時間來分配請求,響應時間短的優先分配。 負載均衡

4)、url_hash 按訪問url的hash結果來分配請求,使每一個url定向到同一個後端服務器,後端服務器爲緩存時比較有效。 memcached

          二,若是涉及到用戶session,作一些鑑權緩存、存放臨時信息時,就必須作tomcat的session共享。

目前可參考到的session共享方式主要分爲兩種。

1)利用tomcat自帶的組播機制,實現session複製。

對tomcat及應用的若干配置文件進行配置便可實現,網上有不少資料可參考。但這種方式些弊端,看過一些資料,不建議用session複製的方式。在實際使用過程當中,也發現有存在session莫名失蹤的現象。

2)利用第三方機制存儲session。

比較常見的是tomcat集成memcached服務器來存儲session。實際項目中,咱們採用過利用redis實現session存儲,redis高效的存取性能爲高效的訪問提供了保障,可是目前redis的集羣功能彷佛沒有發佈,如何解決redis的單點故障須要研究。

 

          結:是否實現session共享與nginx的負載策略有很大關係。好比採用輪詢策略,就必須實現session共享,由於客戶端會訪問到每臺服務器;而若是採用ip_hash策略,就能夠不用考慮session共享的問題了,可是ip_hash有些缺陷使它不能隨便使用(如多臺pc使用同一個外網ip)。

最近發現一個nginx的粘連模塊(相似session粘連),能夠看作nginx的第5種均衡策略。它利用客戶端cookie,對其寫入一個route參數,每次訪問能夠根據route的值,固定的訪問一臺服務器,解決的session共享的問題。

相關文章
相關標籤/搜索