Configuración de la dirección IP flotante de Azure Load Balancer

Load Balancer proporciona varias funcionalidades para las aplicaciones UDP y TCP.

Dirección IP flotante

Algunos escenarios de aplicación prefieren o requieren que varias instancias de la aplicación usen el mismo puerto en una única VM en el grupo back-end. Entre los ejemplos comunes de reutilización de puertos se incluyen la agrupación en clústeres para alta disponibilidad, dispositivos de red virtuales y la exposición de varios puntos de conexión TLS sin volver a cifrar. Si quiere reutilizar el puerto de back-end en varias reglas, debe habilitar la IP flotante en la definición de la regla. La habilitación de IP flotante permite una mayor flexibilidad.

Estado de IP flotante Resultado
Dirección IP flotante habilitada Azure cambia la asignación de direcciones IP a la dirección IP de front-end del equilibrador de carga
IP flotante deshabilitada Azure expone la dirección IP de las instancias de máquina virtual

En los diagramas, se observa cómo funciona la asignación de direcciones IP antes y después de habilitar la IP flotante: Este diagrama muestra el tráfico de red a través de un equilibrador de carga antes de habilitar la IP flotante.

Este diagrama muestra el tráfico de red a través de un equilibrador de carga después de habilitar la IP flotante.

Configuras la dirección IP flotante en una regla del equilibrador de carga mediante el portal de Azure, la API REST, la CLI, PowerShell u otro cliente. Además de la configuración de la regla, también debe configurar el sistema operativo invitado de la máquina virtual para utilizar la dirección IP flotante.

El tipo de regla de dirección IP flotante es el fundamento de varios modelos de configuración del equilibrador de carga. Un ejemplo que está disponible actualmente es la configuración de uno o varios agentes de escucha de grupo de disponibilidad Always On. Con el tiempo, se documentarán más escenarios de este tipo.

Configuración del sistema operativo invitado para la dirección IP flotante

Para que el sistema operativo invitado de la máquina virtual funcione correctamente, debe configurarse para que pueda recibir todo el tráfico que se enlace a la IP y el puerto de front-end del equilibrador de carga. La configuración de VM requiere:

  • agregar una interfaz de red de bucle invertido
  • configurar el bucle invertido con la dirección IP de front-end del equilibrador de carga.
  • asegurarse de que el sistema pueda enviar o recibir paquetes en interfaces que no tienen la dirección IP asignada a esa interfaz. Los sistemas Windows requieren establecer interfaces para usar el modelo de "host débil". En el caso de los sistemas Linux, este modelo se usa normalmente de manera predeterminada.
  • Configurar el firewall de host para permitir el tráfico en el puerto IP de front-end.

Nota

En los ejemplos siguientes se usa el protocolo IPv4. Para usar IPv6, sustituya "ipv6" por "ipv4".

Servidor de Windows

Expandir

Para cada máquina virtual del grupo de backend, añada primero un adaptador de red de bucle invertido mediante la gestión de adaptadores de red de Windows Server. A continuación, ejecute los siguientes comandos en una ventana de la línea de comandos de Windows con privilegios elevados en el servidor.

  1. Para obtener la lista de nombres de interfaz que tiene en la máquina virtual, escriba este comando:

    netsh interface ipv4 show interface 
    
  2. Para la NIC de máquina virtual (administrada por Azure), escriba el siguiente comando después de reemplazar interface-name por el nombre de la interfaz que desea usar:

    netsh interface ipv4 set interface <interface-name> weakhostreceive=enabled
    
  3. Para cada interfaz de bucle invertido agregada, escriba estos comandos después de reemplazar loopback-interface-name por el nombre de la interfaz de bucle invertido e IP flotante y máscara de subred de IP flotante con los valores numéricos adecuados que corresponden a la interfaz frontend del equilibrador de carga:

    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. Si el host invitado usa un firewall, asegúrate de configurar una regla para que el tráfico pueda llegar a la VM en los puertos correspondientes. Esta configuración de ejemplo asume una configuración IP frontal de balanceador de carga 1.2.3.4 y una regla de balanceo de carga para el puerto 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
    
  5. Verifica que la interfaz de loopback tenga asignada la dirección IP del frontend:

    netsh interface ipv4 show addresses name="<loopback-interface-name>"
    

    Confirma que la salida incluye la dirección IP del frontend. Desde un cliente que pueda llegar al balanceador de carga, conéctate a la dirección IP del frontend y al puerto de reglas para verificar que el tráfico llega a la máquina virtual.

Ubuntu

Expandir

Para cada VM en el pool backend, ejecuta los siguientes comandos a través de una sesión SSH. Linux ya proporciona el dispositivo de loopback lo; el comando usa lo:0 como etiqueta de dirección IP, por lo que no es necesario crear una interfaz de loopback independiente.

  1. Para obtener la lista de nombres de interfaz que tiene en la máquina virtual, escriba este comando:

    ip addr
    
  2. Añade la dirección IP del frontend a la interfaz de loopback. Sustituye floating-IP por la dirección IP de front-end del balanceador de carga y floating-IPnetmask por la longitud del prefijo CIDR de Linux, como 24:

    sudo ip addr add <floating-IP>/<floating-IPnetmask> dev lo:0
    
  3. Si el host invitado usa un firewall, asegúrate de configurar una regla para que el tráfico pueda llegar a la VM en los puertos correspondientes. Esta configuración de ejemplo asume una configuración de IP frontend balanceadora de carga 1.2.3.4, una regla de balanceo de carga para el puerto 80 y el uso de UFW (Uncomplicated Firewall) en Ubuntu.

    sudo ip addr add 1.2.3.4/24 dev lo:0
    sudo ufw allow 80/tcp
    
  4. Verifica que el dispositivo de loopback tenga asignada la dirección IP del frontend:

    ip address show dev lo
    

    Confirma que la salida incluye la dirección IP del frontend. Desde un cliente que pueda llegar al balanceador de carga, conéctate a la dirección IP del frontend y al puerto de reglas para verificar que el tráfico llega a la máquina virtual.

Limitaciones

Cuando activas la IP flotante, la conectividad saliente depende de la configuración de la interfaz de red que utilice la aplicación y de cómo se vincule a la dirección IP del frontend de loopback.

  • Con la IP flotante habilitada en una regla de equilibrio de carga, la aplicación debe usar la configuración IP principal de la interfaz de red para la salida.
  • Si la aplicación se enlaza a la dirección IP de front-end configurada en la interfaz de bucle invertido en el sistema operativo invitado, entonces la traducción de direcciones de red saliente de Azure no volverá a escribir el flujo de salida y, por tanto, se producirá un error en el flujo. Revise los escenarios salientes.
  • No puede usar IP flotante en las configuraciones de IP secundarias para escenarios de balanceo de carga. Esta limitación no se aplica a los equilibradores de carga públicos en los que la configuración de IP secundaria es IPv6 y parte de una configuración de pila doble, o a las arquitecturas que usan una puerta de enlace NAT para la conectividad saliente.

Pasos siguientes