Load-Balancing

為什麼 MetalLB 不能在 layer 2 模式下提供真正的負載均衡功能?

  • April 22, 2022

MetalLB的文件指出:

在第 2 層模式下,服務 IP 的所有流量都流向一個節點。

據我了解,這主要是由於以下事實:

一個節點負責向本地網路發布服務。

如上述文件的其餘部分所述,此行為意味著嚴重的限制。流量頻寬被限制在可以通過當選節點的範圍內。但它是由於文件中聲稱的 ARP 造成的嗎?

我可以想像的消除此限制的解決方案是每個節點有一個“揚聲器”。當部署一組新的 pod 和服務時,執行新節點的節點上執行的揚聲器負責 ARP 公告。這樣,入站流量始終採用最佳路由。技術上可行嗎?

MetalLB 是正確的。玩 2 級定址遊戲意味著一次只有一台主機可以接收單播流量。每個服務地址。

Say2001:db8:c0ba:4816::a是服務地址,目前指向 Ethernet 上的 NIC 6E:17:C2:2E:F4:A4。該主機中的故障會觸發故障轉移。發生了一些鄰居發現,現在它指向不同的主機6E:17:C2:2E:E7:B8。沒有機會多路徑,HA 協議和單播工作負載太簡單了。當然可以有更多的服務地址,所以添加2001:db8:c0ba:4816::b可以轉到另一個可能未使用的主機。

VRRP 或 PowerHA 集群的使用者將熟悉此類主動/被動設置。除了 MetalLB 出於某種原因重新實現了他們自己的東西。

MetalLB BGP模式不同,3層路由。如果為服務地址路由安裝了多個下一躍點,這使得 ECMP 成為可能。與使用 ECMP 的大型多層負載平衡器的設計進行比較。

根據設計,每個服務 IP 一個活動主機可能不是問題。主機可以擴展得非常大,可能使用 25 Gb 連結。如有必要,可以將實際工作轉移到其他主機,只留下一個代理來終止前端連接。

引用自:https://serverfault.com/questions/1099140