Leer en inglés

Compartir a través de

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 端口上的流量。

Nota

以下示例全都使用 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. 最后,如果来宾主机使用防火墙,请确保设置一个规则,使流量能够通过相应的端口到达 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 会话运行以下命令。

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

    ip addr
    
  2. 对于添加的每个环回接口,请在将 环回接口名称替换为环回 接口的名称,并将 floating-IPfloating-IPnetmask 替换为与负载均衡器前端 IP 对应的相应值后输入这些命令:

    sudo ip addr add <floating-IP>/<floating-IPnetmask> dev lo:0
    
  3. 最后,如果来宾主机使用防火墙,请确保设置一个规则,使流量能够通过相应的端口到达 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 配置。
  • 如果应用程序绑定到来宾操作系统中环回接口上配置的前端 IP 地址,则 Azure 的出站连接不会重写出站流,因而该流会失败。 查看出站方案
  • 对于负载均衡方案,不能在辅助 IP 配置上使用浮动 IP。 此限制不适用于公共负载均衡器,其中辅助 IP 配置为 IPv6 和双堆栈配置的一部分,也不适用于使用 NAT 网关进行出站连接的体系结构。

后续步骤