Load-Balancing
外部和內部介面上基於 IP 的負載平衡
我有一個特定的分佈式(例如,多台機器上的多個組件)服務,應該可以從外部世界獲得。因此,在 LVS 術語中,客戶端是“在 Internet 上”,而 realservers 在專用網路中。據我了解,使用 LVS 進行設置並不是特別困難。
但是(總是有一個但是!)私有網路上有一些組件,應該是負載均衡的(實際上,對於這部分我並不關心“負載”。我只需要故障轉移能力),但他們的客戶端也是在專用網路上。例如,應用程序伺服器對隊列代理的訪問必須通過負載平衡器。
我可以為這兩個任務使用同一個導演嗎?顯然,它將至少有兩個網路介面(一個在外部,一個在專用網路上)。
理想情況下,我需要通過 VRRP 為導向器提供冗餘(大概是為此使用 keepalived)。
這個設置有意義嗎?這樣做完全正常嗎?也許我最好為內部流量使用單獨的負載均衡器?不過,這有點不可取,因為它將引入至少 2 台不會被大量使用的額外機器,因為隊列代理接收的流量最少(我需要的只是故障轉移)。
對於內部負載平衡,我已在每個原始伺服器上使用 HAProxy 並代理到其他內部伺服器。這對於負載平衡來說不是一個很好的解決方案,因為它只有部分請求視圖,但在故障轉移方面效果很好,而無需設置新的 lb 對/keepalived 或使用面向公眾的基礎設施。您仍然可以使用循環或最小連接平衡和最大連接來減輕影響其他基礎設施的尖峰。
這尤其是在嘗試為新服務自動設置 lb-pairs 之後開始的。經過一年的使用,這項技術沒有遇到任何此設置獨有的問題。這也允許為每個原始節點推出 LB 更改,而不是弄亂單個節點。