Azure Load Balancer 浮動 IP 設定
負載平衡器為 UDP 和 TCP 應用程式提供數種功能。
浮動 IP
在某些應用程式案例中,後端集區中單一 VM 上的多個應用程式執行個體偏好或必須使用相同的連接埠。 連接埠重複使用的常見範例包括提供高可用性的叢集、網路虛擬裝置、公開多個不會重新加密的 TLS 端點。 如果您想要在多個規則重複使用後端連接埠,必須啟用規則定義中的浮動 IP。 啟用浮動 IP 可提供更多彈性。
浮動 IP 狀態 | 結果 |
---|---|
已啟用浮動 IP | Azure 會將 IP 位址對應變更為 Load Balancer 的前端 IP 位址 |
已停用浮動 IP | Azure 會公開 VM 執行個體的 IP 位址 |
在圖表中,您會看到 IP 位址對應在啟用浮動 IP 之前和之後的運作方式:
您可以透過 Azure 入口網站、REST API、CLI、PowerShell 或其他用戶端,在 Load Balancer 規則上設定浮動 IP。 除了規則設定以外,您還必須設定虛擬機器的客體 OS,才能使用浮動 IP。
浮動 IP 規則類型是數種負載平衡器設定模式的基礎。 目前可用的其中一個範例是設定一個或多個 Always On 可用性群組接聽程式。 經過一段時間,我們會記載更多這類案例。
浮動 IP 客體 OS 設定
若要運作,必須設定虛擬機器的客體 OS,以接收負載平衡器前端 IP 和連接埠所繫結的所有流量。 設定 VM 需要:
- 新增回送網路介面
- 使用負載平衡器的前端 IP 位址設定回送
- 確保系統可以在未將IP位址指派給該介面的介面上傳送/接收封包。 Windows 系統需要設定介面,以使用「弱式主機」模型。 若為 Linux 系統,通常預設會使用此模型。
- 設定主機防火牆以允許前端 IP 連接埠上的流量。
注意
下列範例全都使用 IPv4;若要使用 IPv6,請以「ipv6」取代「ipv4」。
Windows Server
展開
針對後端集區中的每個 VM,在伺服器上的 Windows 命令提示字元中執行下列命令。
若要取得您在 VM 上所擁有的介面名稱清單,請輸入下列命令:
netsh interface ipv4 show interface
針對 (Azure 管理的) VM NIC,請輸入下列命令。
netsh interface ipv4 set interface <interfacename> weakhostreceive=enabled
(將 interfacename 取代為此介面的名稱)
針對所新增的每個回送介面,重複下列命令:
netsh interface ipv4 add addr <loopbackinterfacename> floatingip floatingipnetmask
netsh interface ipv4 set interface <loopbackinterfacename> weakhostreceive=enabled weakhostsend=enabled
(將 loopbackinterfacename 取代為此回送介面的名稱,並將 floatingip 和 floatingipnetmask 取代為對應至負載平衡器前端 IP 的適當值)
最後,如果在客體主機上使用防火牆,請確定已設定規則,讓流量可以在適當的連接埠上抵達 VM。
此範例組態假設負載平衡器前端 IP 組態為 1.2.3.4,以及連接埠 80 的負載平衡規則:
netsh int ipv4 set int "Ethernet" weakhostreceive=enabled
netsh int ipv4 add addr "Loopback Pseudo-Interface 1" 1.2.3.4 255.255.255.0
netsh int ipv4 set int "Loopback Pseudo-Interface 1" weakhostreceive=enabled weakhostsend=enabled
netsh advfirewall firewall add rule name="http" protocol=TCP localport=80 dir=in action=allow enable=yes
Ubuntu
展開
針對後端集區中的每個 VM,透過 SSH 工作階段執行下列命令。
若要取得您在 VM 上所擁有的介面名稱清單,請輸入下列命令:
ip addr
針對每個回送介面,重複下列命令,將浮動 IP 指派給回送別名:
sudo ip addr add <floatingip>/<floatingipnetmask> dev lo:0
(將 floatingip 和 floatingipnetmask 取代為適當值,例如對應至負載平衡器前端 IP 的值)
最後,如果在客體主機上使用防火牆,請確定已設定規則,讓流量可以在適當的連接埠上抵達 VM。
此範例組態假設負載平衡器前端 IP 組態為 1.2.3.4,以及連接埠 80 的負載平衡規則。 此範例也會假設在 Ubuntu 中使用 UFW (Uncomplicated Firewall)。
sudo ip addr add 1.2.3.4/24 dev lo:0
sudo ufw allow 80/tcp
限制
- 在負載平衡規則上啟用浮動 IP 時,您的應用程式必須使用網路介面的主要 IP 設定進行輸出。
- 如果您的應用程式繫結至客體 OS 中回送介面上設定的前端 IP 位址,就無法使用 Azure 的輸出來重寫輸出流程,流程就會失敗。 請檢閱輸出案例。
- 負載平衡案例的次要 IP 組態目前不支援浮動 IP。 這項限制不適用於公用負載平衡器,其中次要IP組態是IPv6雙堆棧組態的一部分,或是使用NAT閘道進行輸出連線的架構。
下一步
- 了解如何搭配 Azure Load Balancer 使用多個前端。
- 深入了解 Azure Load Balancer 輸出連線。