Varios servidores front-end para Azure Load BalancerMultiple Frontends for Azure Load Balancer

Azure Load Balancer permite utilizar servicios de equilibrio de carga en varios puertos, varias direcciones IP, o en ambos.Azure Load Balancer allows you to load balance services on multiple ports, multiple IP addresses, or both. Puede usar las definiciones de equilibrador de carga públicas e internas para flujos de equilibrio de carga entre un conjunto de máquinas virtuales.You can use public and internal load balancer definitions to load balance flows across a set of VMs.

En este artículo se describen los fundamentos de esta capacidad, los conceptos importantes y las restricciones.This article describes the fundamentals of this ability, important concepts, and constraints. Si solo desea exponer los servicios en una dirección IP, puede encontrar instrucciones simplificadas para configuraciones públicas o internas del equilibrador de carga.If you only intend to expose services on one IP address, you can find simplified instructions for public or internal load balancer configurations. Agregar varios servidores front-end es una acción incremental de la configuración de un único front-end.Adding multiple frontends is incremental to a single frontend configuration. Mediante los conceptos de este artículo, puede expandir una configuración simplificada en cualquier momento.Using the concepts in this article, you can expand a simplified configuration at any time.

Al definir un Azure Load Balancer, las configuraciones de un grupo de servidores front-end y back-end están conectadas con reglas.When you define an Azure Load Balancer, a frontend and a backend pool configuration are connected with rules. El sondeo de estado a que hace referencia la regla se utiliza para determinar cómo se envían nuevos flujos a un nodo en el grupo de back-end.The health probe referenced by the rule is used to determine how new flows are sent to a node in the backend pool. El front-end (también llamada VIP) se define mediante una tupla de 3 elementos formada por una dirección IP (pública o interna), un protocolo de transporte (UDP o TCP) y un número de puerto de la regla de equilibrio de carga.The frontend (aka VIP) is defined by a 3-tuple comprised of an IP address (public or internal), a transport protocol (UDP or TCP), and a port number from the load balancing rule. El grupo de servidores back-end es una colección de configuraciones de IP de máquinas virtuales (parte del recurso NIC) que hace referencia al grupo de servidores back-end de Load Balancer.The backend pool is a collection of Virtual Machine IP configurations (part of the NIC resource) which reference the Load Balancer backend pool.

La tabla siguiente contiene algunas configuraciones de front-end de ejemplo:The following table contains some example frontend configurations:

Front-endFrontend Dirección IPIP address protocoloprotocol puertoport
11 65.52.0.165.52.0.1 TCPTCP 8080
22 65.52.0.165.52.0.1 TCPTCP 80808080
33 65.52.0.165.52.0.1 UDPUDP 8080
44 65.52.0.265.52.0.2 TCPTCP 8080

En la tabla se muestran cuatro front-end diferentes.The table shows four different frontends. Los servidores front-end 1, 2 y 3 son un único servidor front-end con varias reglas.Frontends #1, #2 and #3 are a single frontend with multiple rules. Se utiliza la misma dirección IP, pero el puerto o el protocolo es diferente para cada front-end.The same IP address is used but the port or protocol is different for each frontend. Los servidores front-end 1 y 4 son un ejemplo de varios servidores front-end, donde el mismo protocolo y puerto de front-end se reutilizan entre varios servidores front-end.Frontends #1 and #4 are an example of multiple frontends, where the same frontend protocol and port are reused across multiple frontends.

Azure Load Balancer proporciona flexibilidad para definir las reglas de equilibrio de carga.Azure Load Balancer provides flexibility in defining the load balancing rules. Una regla declara cómo se asigna una dirección y el puerto en el front-end a la dirección de destino y al puerto en el back-end.A rule declares how an address and port on the frontend is mapped to the destination address and port on the backend. El hecho de que los puertos back-end se reutilicen o no a través de las reglas depende del tipo de regla.Whether or not backend ports are reused across rules depends on the type of the rule. Cada tipo de regla tiene requisitos específicos que pueden afectar al diseño del sondeo y a la configuración del host.Each type of rule has specific requirements that can affect host configuration and probe design. Existen dos tipos de reglas:There are two types of rules:

  1. La regla predeterminada sin la reutilización de un puerto back-endThe default rule with no backend port reuse
  2. La regla de dirección IP flotante donde se reutilizan puertos back-endThe Floating IP rule where backend ports are reused

Azure Load Balancer permite combinar ambos tipos de regla en la misma configuración de equilibrador de carga.Azure Load Balancer allows you to mix both rule types on the same load balancer configuration. El equilibrador de carga puede utilizarlos simultáneamente para una máquina virtual determinada, o cualquier combinación, siempre y cuando se cumplan las restricciones de la regla.The load balancer can use them simultaneously for a given VM, or any combination, as long as you abide by the constraints of the rule. El tipo de regla que elija depende de los requisitos de la aplicación y la complejidad de la compatibilidad con dicha configuración.Which rule type you choose depends on the requirements of your application and the complexity of supporting that configuration. Debe evaluar qué tipos de reglas son mejores para su escenario.You should evaluate which rule types are best for your scenario.

Se analizan aún más estos escenarios empezando con el comportamiento predeterminado.We explore these scenarios further by starting with the default behavior.

Tipo de regla 1: No reutilización de puerto back-endRule type #1: No backend port reuse

Ilustración de varios servidores front-end con el front-end en verde y violeta

En este escenario, los servidores front-end están configurados del modo siguiente:In this scenario, the frontends are configured as follows:

Front-endFrontend Dirección IPIP address protocoloprotocol puertoport
front-end verde 11 65.52.0.165.52.0.1 TCPTCP 8080
front-end violeta 22 65.52.0.265.52.0.2 TCPTCP 8080

La DIP es el destino del flujo de entrada.The DIP is the destination of the inbound flow. En el grupo back-end, cada máquina virtual expone el servicio deseado en un puerto único en una DIP.In the backend pool, each VM exposes the desired service on a unique port on a DIP. Este servicio está asociado con el front-end a través de una definición de regla.This service is associated with the frontend through a rule definition.

Se definen dos reglas:We define two rules:

ReglaRule Asignación de front-endMap frontend Para grupo back-endTo backend pool
11 front-end verde Frontend1:80Frontend1:80 back-end DIP1:80,DIP1:80, back-end DIP2:80DIP2:80
22 IP virtual Frontend2:80Frontend2:80 back-end DIP1:81,DIP1:81, back-end DIP2:81DIP2:81

La asignación completa en Azure Load Balancer ahora se realiza como sigue:The complete mapping in Azure Load Balancer is now as follows:

ReglaRule Dirección IP del front-endFrontend IP address protocoloprotocol puertoport DestinoDestination puertoport
regla verde 11 65.52.0.165.52.0.1 TCPTCP 8080 Dirección IP de DIPDIP IP Address 8080
regla violeta 22 65.52.0.265.52.0.2 TCPTCP 8080 Dirección IP de DIPDIP IP Address 8181

Cada regla debe generar un flujo con una combinación única de dirección IP de destino y puerto de destino.Each rule must produce a flow with a unique combination of destination IP address and destination port. Al variar el puerto de destino del flujo, varias reglas pueden entregar flujos en la misma DIP en puertos diferentes.By varying the destination port of the flow, multiple rules can deliver flows to the same DIP on different ports.

Los sondeos de estado siempre se dirigen a la DIP de una máquina virtual.Health probes are always directed to the DIP of a VM. Debe asegurarse de que el sondeo refleja el estado de la máquina virtual.You must ensure you that your probe reflects the health of the VM.

Tipo de regla 2: reutilización de puerto back-end mediante IP flotanteRule type #2: backend port reuse by using Floating IP

Azure Load Balancer ofrece la flexibilidad de reutilizar el puerto front-end en varios servidores front-end con independencia del tipo de regla usado.Azure Load Balancer provides the flexibility to reuse the frontend port across multiple frontends regardless of the rule type used. Además, algunos escenarios de aplicación prefieren o requieren que varias instancias de la aplicación usen el mismo puerto en una sola máquina virtual en el grupo back-end.Additionally, some application scenarios prefer or require the same port to be used by multiple application instances on a single VM in the backend pool. 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.Common examples of port reuse include clustering for high availability, network virtual appliances, and exposing multiple TLS endpoints without re-encryption.

Si desea reutilizar el puerto back-end en varias reglas, debe habilitar la IP flotante en la definición de la regla.If you want to reuse the backend port across multiple rules, you must enable Floating IP in the rule definition.

La "IP flotante" es el término de Azure para referirse a una parte de lo que se conoce como Direct Server Return (DSR)."Floating IP" is Azure's terminology for a portion of what is known as Direct Server Return (DSR). DSR consta de dos partes: una topología de flujo y un esquema de asignación de direcciones IP.DSR consists of two parts: a flow topology and an IP address mapping scheme. En un nivel de plataforma, Azure Load Balancer siempre funciona en una topología de flujo DSR independientemente de si la dirección IP flotante está habilitada o no.At a platform level, Azure Load Balancer always operates in a DSR flow topology regardless of whether Floating IP is enabled or not. Esto significa que la parte de salida de un flujo siempre se reescribe correctamente para que se dirija de nuevo al origen.This means that the outbound part of a flow is always correctly rewritten to flow directly back to the origin.

Con el tipo de regla predeterminada, Azure expone un esquema de asignación de direcciones IP de equilibrio de carga tradicional a efectos de facilitar el uso.With the default rule type, Azure exposes a traditional load balancing IP address mapping scheme for ease of use. Habilitar la dirección IP flotante cambia el esquema de asignación de direcciones IP para permitir una flexibilidad adicional, como se explica a continuación.Enabling Floating IP changes the IP address mapping scheme to allow for additional flexibility as explained below.

En el siguiente diagrama, se ilustra esta configuración:The following diagram illustrates this configuration:

Ilustración de varios servidores front-end con el front-end en verde y violeta con DSR

En este escenario, cada máquina virtual del grupo back-end tiene tres interfaces de red:For this scenario, every VM in the backend pool has three network interfaces:

  • DIP: una NIC virtual asociada a la máquina virtual (configuración IP del recurso NIC de Azure)DIP: a Virtual NIC associated with the VM (IP configuration of Azure's NIC resource)
  • Frontend 1: una interfaz de bucle invertido en el sistema operativo invitado que se configura con la dirección IP de Frontend 1Frontend 1: a loopback interface within guest OS that is configured with IP address of Frontend 1
  • Frontend 2: una interfaz de bucle invertido en el sistema operativo invitado que se configura con la dirección IP de Frontend 2Frontend 2: a loopback interface within guest OS that is configured with IP address of Frontend 2

Importante

La configuración de las interfaces de bucle invertido se ejecuta en el sistema operativo invitado.The configuration of the loopback interfaces is performed within the guest OS. Esta configuración no se ejecuta ni administra en Azure.This configuration is not performed or managed by Azure. Sin esta configuración, las reglas no funcionarán.Without this configuration, the rules will not function. Las definiciones de sondeo de mantenimiento usan la DIP de la máquina virtual en lugar de la interfaz de bucle invertido que representa el front-end de DSR.Health probe definitions use the DIP of the VM rather than the loopback interface representing the DSR Frontend. Por lo tanto, el servicio debe proporcionar respuestas de sondeo en un puerto DIP que reflejen el estado del servicio ofrecido en la interfaz de bucle invertido que representa el front-end de DSR.Therefore, your service must provide probe responses on a DIP port that reflect the status of the service offered on the loopback interface representing the DSR Frontend.

Se asume que la configuración front-end es la misma que en el escenario anterior:Let's assume the same frontend configuration as in the previous scenario:

Front-endFrontend Dirección IPIP address protocoloprotocol puertoport
front-end verde 11 65.52.0.165.52.0.1 TCPTCP 8080
front-end violeta 22 65.52.0.265.52.0.2 TCPTCP 8080

Se definen dos reglas:We define two rules:

ReglaRule Front-endFrontend Asignar a grupo de servidores back-endMap to backend pool
11 Regla Frontend1:80Frontend1:80 back-end Frontend1:80 (en VM1 y VM2)Frontend1:80 (in VM1 and VM2)
22 Regla Frontend2:80Frontend2:80 back-end Frontend2:80 (en VM1 y VM2)Frontend2:80 (in VM1 and VM2)

En la tabla siguiente se muestra la asignación completa en el equilibrador de carga:The following table shows the complete mapping in the load balancer:

ReglaRule Dirección IP del front-endFrontend IP address protocoloprotocol puertoport DestinoDestination puertoport
regla verde 11 65.52.0.165.52.0.1 TCPTCP 8080 igual que el front-end (65.52.0.1)same as frontend (65.52.0.1) igual que el front-end (80)same as frontend (80)
regla violeta 22 65.52.0.265.52.0.2 TCPTCP 8080 igual que el front-end (65.52.0.2)same as frontend (65.52.0.2) igual que el front-end (80)same as frontend (80)

El destino del flujo de entrada es la dirección IP de front-end en la interfaz de bucle invertido de la máquina virtual.The destination of the inbound flow is the frontend IP address on the loopback interface in the VM. Cada regla debe generar un flujo con una combinación única de dirección IP de destino y puerto de destino.Each rule must produce a flow with a unique combination of destination IP address and destination port. Al variar la dirección IP de destino del flujo, se puede reutilizar el puerto en la misma máquina virtual.By varying the destination IP address of the flow, port reuse is possible on the same VM. El servicio se expone al equilibrador de carga mediante su enlace a la dirección IP del front-end y al puerto de la interfaz de bucle invertido correspondiente.Your service is exposed to the load balancer by binding it to the frontend’s IP address and port of the respective loopback interface.

Observe que este ejemplo no cambia el puerto de destino.Notice that this example does not change the destination port. Aunque se trata de un escenario de IP flotante, Azure Load Balancer también admite la definición de una regla para volver a escribir el puerto de destino back-end y para que sea diferente del puerto de destino front-end.Even though this is a Floating IP scenario, Azure Load Balancer also supports defining a rule to rewrite the backend destination port and to make it different from the frontend destination port.

El tipo de regla de dirección IP flotante es el fundamento de varios modelos de configuración del equilibrador de carga.The Floating IP rule type is the foundation of several load balancer configuration patterns. Un ejemplo que está disponible actualmente es la configuración SQL AlwaysOn con varios agentes de escucha .One example that is currently available is the SQL AlwaysOn with Multiple Listeners configuration. Con el tiempo, se documentarán varios de estos escenarios.Over time, we will document more of these scenarios.

LimitacionesLimitations

  • Solo se admiten configuraciones de varios servidores front-end con máquinas virtuales de IaaS.Multiple frontend configurations are only supported with IaaS VMs.
  • Con la regla de dirección IP flotante, la aplicación debe utilizar la configuración IP principal para los flujos salientes.With the Floating IP rule, your application must use the primary IP configuration for outbound flows. Si la aplicación se enlaza a la dirección IP del front-end configurada en la interfaz de bucle invertido en el sistema operativo invitado, entonces SNAT de Azure no está disponible para volver a escribir el flujo de salida y, por tanto, se produce un error en el flujo.If your application binds to the frontend IP address configured on the loopback interface in the guest OS, Azure's SNAT is not available to rewrite the outbound flow and the flow fails.
  • Las direcciones IP públicas repercuten en la facturación.Public IP addresses have an effect on billing. Para obtener más información, vea Precios de las direcciones IPFor more information, see IP Address pricing
  • Se aplican los límites de suscripción.Subscription limits apply. Para más información, vea los límites de servicio .For more information, see Service limits for details.

Pasos siguientesNext steps

  • Revise Conexiones salientes para entender el impacto de varios front-ends en el comportamiento de conexión de salida.Review Outbound connections to understand the impact of multiple frontends on outbound connection behavior.