重點兩部分:一、負載均衡二、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共享的問題。
nginx粘連模組:
參考:
Nginx實現負載均衡
負載均衡 建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬 增加吞吐量 加強網路資料處理能力 提高網路的靈活性和可用性。負載均衡,英文名稱為load balance,其意思就是分攤到多個操作單元上進行執行,例如web伺服器 ftp伺服器 企業關鍵應用伺服器和其它關...
nginx實現負載均衡
目錄結構 conf 配置目錄 html 靜態頁面目錄 logs 日誌目錄 sbin 主程式 nginx支援的負載均衡方式 輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。weight 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的...
nginx實現負載均衡
初步設想 1個前端伺服器 n個應用伺服器,實現不宕機發布。前提 後端應用共享session,可以考慮redis實現。初步實驗 nginx 2個tomcat執行測試 先準備乙個nginx,nginx.conf檔案內容如下 然後準備2個tomcat 設定埠分別為8084 8086。在root資料夾下面各...