Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

1.4.2. 直接路由

跟其它 Load Balancer 外掛程式的網路拓樸比起來,建立使用直接路由的 Load Balancer 外掛程式的效能更好。直接路由能讓實體伺服器直接處理封包,並導向至使用者;而非傳給 LVS 路由器處理。直接路由把 LVS 路由器的工作轉為只處理進入的封包,降低了網路效能降低的可能性。
以直接路由來實踐 Load Balancer 外掛程式

圖形 1.4. 以直接路由來實踐 Load Balancer 外掛程式

在典型的直接路由 Load Balancer 外掛程式的設置裡,LVS 路由器透過虛擬 IP(VIP)收取進來的伺服器需求,使用排程演算法則把這些需求導向到實體伺服器去。每個實體伺服器會處理需求,再把結果直接傳回給用戶端,跳過 LVS 路由器。這路由方式能實現可擴充性,因為實體伺服器可以在不需要增加 LVS 路由器的負擔之下加入,幫忙把出去的封包從實體伺服器送往用戶端;否則的話,這會在高網路負載的情形下,變成瓶頸。

1.4.2.1. 直接路由與 ARP 的限制

雖然在 Load Balancer 外掛程式中使用直接路由有許多好處,但還是有限制。其中最常見的問題就是使用「位址解析通訊協定」(ARP,Address Resolution Protocol)。
在一般的情形下,位於網際網路的使用者發送需求到一個 IP 位址。網路路由器會利用 ARP 取得目的地的 MAC 位址,並將 MAC 位址及 IP 位址做上關聯,以發送需求。ARP 會廣播詢問所有連上網路的電腦,擁有正確 IP/MAC 位址的電腦就會收到這封包。IP/MAC 的關聯會儲存在 ARP 快取裡,這快取會定期清除(通常是每十五分鐘),再被重新填入 IP/MAC 的關聯。
ARP 需求用在直接導向負載平衡外掛設定的問題,是因為用戶需求的 IP 必須跟 MAC 位址連在一起,因此 Load Balancer 外掛程式路由器的虛擬 IP 位址也必須跟某個 MAC 位址相關連。然而,因為 LVS 路由器與實體伺服器的 VIP 是一樣的,ARP 需求會廣播到與這 VIP 相關連的所有節點上。這會造成幾個問題,例如 VIP 直接跟一台實體伺服器將關聯並直接處理需求,完全不透過 LVS 路由器,這就違背了使用 LVS 的美意。
要解決這個問題,請確保所有進來的需求都會發送到 LVS 路由器,而非任何一台真實伺服器。這可以透過使用 arptables_jfiptables 封包篩選工具來達成,理由如下:
  • arptables_jf 會避免 ARP 將 VIP 與真實伺服器建立關連。
  • iptables 法會一開始就配置真實伺服器上的 VIP,完全迴避 ARP 的問題。
欲取得更多有關於在一個直接路由的 Load Balancer 外掛程式環境中,使用 arptablesiptables 的相關資訊,請參閱〈節 3.2.1, “直接路由與 arptables_jf〉或〈節 3.2.2, “直接路由與 iptables〉。