Azure 负载均衡器浮动 IP 配置

负载均衡器针对 UDP 和 TCP 应用程序提供了多种功能。

浮动 IP

某些应用程序方案更喜欢或要求后端池中单个 VM 上的多个应用程序实例使用相同端口。 端口重用的常见示例包括:

  • 进行群集来实现高可用性
  • 网络虚拟设备
  • 在不重新加密的情况下公开多个 TLS 终结点。

如果想要在多个规则中重复使用后端端口,必须在规则定义中启用浮动 IP。

启用浮动 IP 时,Azure 会更改 IP 地址映射,使其映射到负载均衡器前端的前端 IP 地址,而不是后端实例的 IP。 如果没有浮动 IP,Azure 将公开 VM 实例的 IP。 启用浮动 IP 会更改负载均衡器前端 IP 的 IP 地址映射,以实现更大的灵活性。 在此处了解更多信息。

在关系图中,你可以了解启用浮动 IP 之前和之后 IP 地址映射的工作原理:This diagram shows network traffic through a load balancer before enabling Floating IP.

This diagram shows network traffic through a load balancer after enabling Floating IP.

可以通过 Azure 门户、REST API、CLI、PowerShell 或其他客户端在负载均衡器规则上配置浮动 IP。 除了进行规则配置外,还必须配置虚拟机的来宾 OS 才能使用浮动 IP。

浮动 IP 来宾 OS 配置

为了正常运行,需要将虚拟机的来宾 OS 配置为接收发往负载均衡器前端 IP 和端口的所有流量。 配置 VM 需要:

  • 添加环回网络接口
  • 使用负载均衡器的前端 IP 地址配置环回
  • 确保系统可以在未将 IP 地址分配给该环回接口的接口上发送/接收数据包。Windows 系统要求将接口设置为使用“弱主机”模型。 对于 Linux 系统,默认情况下通常会使用此模型。
  • 将主机防火墙配置为允许前端 IP 端口上的流量。

注意

以下示例全都使用 IPv4;若要使用 IPv6,请将“ipv4”替换为“ipv6”。 另请注意,IPv6 的浮动 IP 不适用于内部负载均衡器。

Windows Server

展开

对于后端池中的每个 VM,请在服务器上的 Windows 命令提示符下运行以下命令。

若要获取 VM 上的接口名称列表,请键入以下命令:

netsh interface ipv4 show interface 

对于 VM NIC(Azure 托管),请键入此命令。

netsh interface ipv4 set interface "interfacename" weakhostreceive=enabled

(请将“interfacename”替换为此接口的名称)

对于添加的每个环回接口,重复以下命令:

netsh interface ipv4 add addr floatingipaddress floatingip floatingipnetmask
netsh interface ipv4 set interface floatingipaddress weakhostreceive=enabled  weakhostsend=enabled 

(请将 loopbackinterface 替换为此环回接口的名称,并将 floatingipfloatingipnetmask 替换为对应于负载均衡器前端 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

(请将 floatingipfloatingipnetmask 替换为对应于负载均衡器前端 IP 的相应值)

最后,如果来宾主机使用防火墙,请确保设置一个规则,使流量能够通过相应的端口到达 VM。

此示例配置假设负载均衡器前端 IP 配置为 1.2.3.4,并针对端口 80 设置了负载均衡规则。

sudo ip addr add 1.2.3.4/24 dev lo:0
sudo ufw allow 80/tcp

限制

  • 对于负载均衡方案,不能在辅助 IP 配置上使用浮动 IP。 此限制不适用于具有双堆栈配置的公共负载均衡器,也不适用于使用 NAT 网关进行出站连接的体系结构。

后续步骤