Networking

多個子網 IP 的網路負載均衡器

  • June 28, 2020

我們能否在 LAN 中具有不同子網 IP 的伺服器之間進行網路負載平衡。基本上我的網站在這 2 台伺服器上,網站名稱映射到虛擬 IP。什麼類型的負載均衡器可以實現這一點。NAT應該可以嗎?

您幾乎可以使用任何常見的負載均衡器。您的服務的傳入請求需要定向到負載均衡器而不是您的伺服器,並且負載均衡器需要能夠到達後端伺服器。

負載均衡器將獲取 nat (snat)傳入數據包,也就是說,它將用自己的地址替換源地址,然後將它們傳遞到您的一台伺服器。

因此後端伺服器將回复負載均衡器而不是原始客戶端。對於響應數據包,負載均衡器將再次進行地址替換,這次將目標地址替換為原始客戶端地址。

為了讓後端伺服器服務了解原始客戶端地址,負載均衡器通常(但不總是)配置為將此地址作為應用程序欄位注入,後端服務可以解釋和/或記錄該欄位。對於 http,這可能是一個 http 標頭,例如 x-forwarded-for 或 x-client-ip 或類似的。

負載均衡器可以為每個服務配置多個後端伺服器,只要伺服器應用程序要求允許,它們可以放置在不同的子網上。負載均衡器通常對後端的位置漠不關心,只要它們可以訪問。

您可以通過配置 haproxy、nginx 或 apache httpd 或市場上任何其他開源和商業負載均衡器來嘗試此操作。

警告:有些負載平衡器使用了一些不同的方法,例如 Microsoft Windows NLB。NLB 通常安裝在實際的後端伺服器上,用於將負載均衡與後端集成。這就要求後端伺服器通常需要位於同一子網上才能使 NLB 集群內通信正常工作。NLB 還可以與 IIS ARR 結合,提供更普通的負載平衡前端(例如與其他負載平衡器一起使用),其中後端節點可以放置在不同的子網中。

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