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

jopen 9年前發布 | 19K 次閱讀 Nginx Web服務器

重點兩部分:一、負載均衡二、tomcat集群

 

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

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

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

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

1)、輪詢(默認)

每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器宕機,能自動剔除。

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

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

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

          二,如果涉及到用戶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共享的問題。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!