在集羣系統中,請求 ->nginx->分發到多個tomcat服務器
DNS層
可以採用一個DNS service 把請求的網址解析成多個ip,每個ip對應到一個tomcat服務器
服務器層
可以在nginx的conf文件中把多個服務器的ip配置好,然後設置轉發規則,對請求做反向代理轉發到不同Ip
- 輪換轉發
- 隨機轉發
- 權重轉發
單點問題
只有一個nginx做轉發,如果故障,會出現單點問題
影子主機:可以弄兩個nginx,一個備用,一個出問題了轉到另一個
怎麼知道出問題了?
keepalived:可以定時給每個nginx發心跳,檢測哪個出問題了,自動把請求轉換到其他機器上
nginx有處理速度上限怎麼辦?
可以用lvs(Linux Virtual Server,Linux虛擬服務器):請求先到lvs(集羣)+keepalived(檢測lvs做主從切換),再轉發到nginx,再轉發到tomcat
當做爲負載均衡服務器的nginx和lvs處理相同的請求時,所有的請求和響應流量都會經過nginx;但是使用lvs時,僅請求流量經過lvs的網絡,響應流量由後端服務器的網絡返回。
當作爲後端的服務器規模龐大時,nginx的網絡帶寬就成了一個巨大的瓶頸。
nginx 工作在第七層(應用層),lvs 工作在第四層(傳輸層),當流量太大的時候可以用lvs做負載均衡