你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 负载均衡器浮动 IP 配置

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

浮动 IP

某些应用程序方案更喜欢或要求后端池中单个 VM 上的多个应用程序实例使用相同端口。 重复使用端口的常见示例包括提供高可用性群集、网络虚拟设备,以及公开多个不重新加密的 TLS 终结点。 如果你想要在多个规则中重复使用后端端口,必须在规则定义中启用浮动 IP。 启用浮动 IP 可以提高灵活性。

浮动 IP 状态 结果
已启用浮动 IP Azure 将 IP 地址映射更改为负载均衡器的前端 IP 地址
已禁用浮动 IP Azure 公开 VM 实例的 IP 地址

在关系图中,你可以了解启用浮动 IP 之前和之后 IP 地址映射的工作原理:此图显示启用浮动 IP 之前通过负载均衡器的网络流量。

此图显示启用浮动 IP 之后通过负载均衡器的网络流量。

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

浮动 IP 规则类型是多种负载均衡器配置模式的基础。 当前可用的一个示例是以下配置:配置一个或多个Always On可用性组侦听器。 今后我们会介绍更多此类方案。

浮动 IP 来宾 OS 配置

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

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

注意

以下示例全都使用 IPv4;若要使用 IPv6,请将“ipv4”替换为“ipv6”。

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 <loopbackinterfacename> floatingip floatingipnetmask
netsh interface ipv4 set interface <loopbackinterfacename> weakhostreceive=enabled  weakhostsend=enabled 

(请将 loopbackinterface 替换为此环回接口的名称,并将 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

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

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

此示例配置假设负载均衡器前端 IP 配置为 1.2.3.4,并针对端口 80 设置了负载均衡规则。 此示例还假设在 Ubuntu 中使用 UFW(简单防火墙)

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 网关进行出站连接的体系结构。

后续步骤