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。 除了配置规则之外,还必须配置虚拟机的来宾操作系统,才能使用浮动 IP。

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

浮动 IP 客户机操作系统配置

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

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

注意

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

Windows Server

展开

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

  1. 若要获取 VM 上具有的接口名称列表,请输入以下命令:

    netsh interface ipv4 show interface 
    
  2. 对于 VM NIC(Azure 托管),在将 接口名称 替换为要使用的接口名称后,输入以下命令:

    netsh interface ipv4 set interface <interface-name> weakhostreceive=enabled
    
  3. 对于添加的每个环回接口,请在将 环回接口名称替换为环回 接口的名称,并将 floating-IPfloating-IPnetmask 替换为与负载均衡器前端 IP 对应的相应值后输入这些命令:

    netsh interface ipv4 add addr <loopback-interface-name> <floating-IP> <floating-IPnetmask>
    netsh interface ipv4 set interface <loopback-interface-name> weakhostreceive=enabled  weakhostsend=enabled 
    
  4. 如果访客主机使用防火墙,确保你设置了规则,确保流量能通过相应端口到达虚拟机。 本示例配置假设负载均衡器前端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

展开

对于后端池中的每个虚拟机,通过SSH会话执行以下命令。 Linux已经提供了 lo 环回设备;该命令用作 lo:0 地址标签,因此你不需要创建单独的环回接口。

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

    ip addr
    
  2. 把前端IP地址添加到环回设备上。 将 floating-IP 替换为负载均衡器的前端IP地址,并将 floating-IPnetmask 替换为Linux CIDR前缀长度,例如 24

    sudo ip addr add <floating-IP>/<floating-IPnetmask> dev lo:0
    
  3. 如果访客主机使用防火墙,确保你设置了规则,确保流量能通过相应端口到达虚拟机。 该示例配置假设负载均衡器前端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
    
  4. 确认环回设备已分配前端IP地址:

    ip address show dev lo
    

    确认输出中是否包含前端IP地址。 从能够访问负载均衡器的客户端,连接到前端IP地址和规则端口,以验证流量是否到达虚拟机。

限制

当你启用浮动IP时,出站连接取决于应用使用的网络接口IP配置以及应用如何绑定回环前端IP地址。

  • 在负载均衡规则上启用浮动 IP 后,你的应用程序必须为出站流量使用网络接口的主要 IP 配置。
  • 如果应用程序绑定到来宾操作系统中环回接口上配置的前端 IP 地址,则 Azure 的出站连接不会重写出站流,因而该流会失败。 审查出站场景
  • 对于负载均衡方案,不能在辅助 IP 配置上使用浮动 IP。 此限制不适用于公共负载均衡器,其中辅助 IP 配置为 IPv6 和双堆栈配置的一部分,也不适用于使用 NAT 网关进行出站连接的体系结构。

后续步骤