Cómo funciona Azure Load Balancer
Azure Load Balancer funciona en la capa de transporte del modelo OSI. Esta funcionalidad de capa 4 permite la administración del tráfico en función de las propiedades específicas del tráfico. Propiedades como la dirección de origen y destino, el tipo de protocolo TCP o UDP y el número de puerto.
Load Balancer tiene varios elementos que funcionan conjuntamente para garantizar la alta disponibilidad y el rendimiento de una aplicación:
- Dirección IP de front-end
- Reglas de equilibrador de carga
- Grupo de servidores back-end
- Sondeos de estado
- Reglas NAT de entrada
- Puertos de alta disponibilidad
- Reglas de salida
Dirección IP de front-end
La dirección IP de front-end es la que usan los clientes que se conectan a la aplicación web. Una dirección IP de front-end puede ser una dirección IP pública o privada. Los equilibradores de carga de Azure pueden tener varias direcciones IP de front-end. La selección de una dirección IP pública o privada determina qué tipo de equilibrador de carga se va a crear:
Dirección IP pública > equilibrador de carga público: un equilibrador de carga público asigna la dirección IP pública y el número de puerto del tráfico entrante a la dirección IP privada y el número de puerto de la máquina virtual. Puede distribuir determinados tipos de tráfico entre varias máquinas virtuales o servicios aplicando reglas de equilibrio de carga. Por ejemplo, puede distribuir la carga del tráfico de solicitudes web entre varios servidores web. El equilibrador de carga asigna el tráfico de respuesta desde la dirección IP privada y el puerto de la máquina virtual a la dirección IP pública y el puerto del equilibrador de carga. A continuación, transmite la respuesta al cliente solicitante.
Dirección IP privada > equilibrador de carga interno: un equilibrador de carga interno distribuye el tráfico a los recursos que están dentro de una red virtual. Azure restringe el acceso a las direcciones IP de front-end de una red virtual que tienen equilibrio de carga. Las direcciones IP de front-end y las redes virtuales no se exponen nunca directamente a un punto de conexión de Internet. Las aplicaciones de línea de negocio internas se ejecutan en Azure y se accede a ellas desde Azure o desde los recursos locales a través de una conexión VPN o de ExpressRoute.
Reglas del equilibrador de carga
Una regla del equilibrador de carga define cómo se distribuye el tráfico al grupo de back-end. La regla asigna una combinación dada de dirección IP de front-end y puerto a una combinación de direcciones IP de back-end y puerto.
El tráfico se administra mediante un hash de 5 tuplas creado a partir de los siguientes elementos:
- IP de origen: dirección IP del cliente que realiza la solicitud.
- Puerto de origen: puerto del cliente que realiza la solicitud.
- IP de destino: dirección IP de destino de la solicitud.
- Puerto de destino: puerto de destino de la solicitud.
- Tipo de protocolo: el tipo de protocolo especificado, TCP o UDP.
- Afinidad de sesión: garantiza que el mismo nodo de grupo siempre controle el tráfico de un cliente.
Load Balancer permite utilizar servicios de equilibrio de carga en varios puertos, varias direcciones IP, o en ambos. Puede configurar distintas reglas de equilibrio de carga para cada dirección IP de front-end. Solo se admiten configuraciones de varios servidores front-end con máquinas virtuales de IaaS.
Load Balancer no puede aplicar reglas diferentes basadas en el contenido interno del tráfico porque funciona en la capa 4 (capa de transporte) del modelo OSI. Si necesita administrar el tráfico en función de sus propiedades de capa 7 (capa de aplicación), debe implementar una solución como Azure Application Gateway.
Grupo de servidores back-end
El grupo de back-end es un grupo de máquinas virtuales o instancias de un conjunto de escalado de máquinas virtuales que responde a la solicitud entrante. Para escalar de forma rentable, con el fin de satisfacer grandes volúmenes de tráfico entrante, las guías de procesamiento generalmente recomiendan agregar más instancias al grupo de back-end.
Load Balancer implementa la reconfiguración automática para redistribuir la carga en el número modificado de instancias al escalar o reducir verticalmente las instancias. Por ejemplo, si agregó dos instancias más de máquinas virtuales al grupo de back-end, Load Balancer se reconfiguraría para empezar a equilibrar el tráfico hacia esas instancias en función de las reglas de equilibrio de carga ya configuradas.
Sondeos de estado
Los sondeos de estado se usan para determinar el estado de mantenimiento de las instancias del grupo de back-end. Este sondeo de estado determina si una instancia está en buen estado y puede recibir tráfico. Puede definir el umbral incorrecto de los sondeos de estado. Cuando un sondeo no responde, el equilibrador de carga deja de enviar nuevas conexiones a las instancias incorrectas. Un error de sondeo no afecta a las conexiones existentes. La conexión continúa hasta:
- La aplicación finaliza el flujo.
- Se produce el tiempo de espera de inactividad.
- La máquina virtual se apaga.
Load Balancer le permite configurar diferentes tipos de sondeo de estado para los puntos de conexión: TCP, HTTP y HTTPS.
- Sondeo personalizado de TCP: este se basa en el establecimiento correcto de sesiones TCP para un puerto de sondeo definido. Si existe el agente de escucha especificado en la máquina virtual, el sondeo se realizará correctamente. Si se rechaza la conexión, se producirá un error en el sondeo. Puede especificar el puerto, el intervalo y el umbral incorrecto.
- Sondeo de HTTP o HTTPS personalizado: el equilibrador de carga sondea periódicamente el punto de conexión (de forma predeterminada, cada 15 segundos). La instancia es correcta si responde con HTTP 200 antes de que finalice el tiempo de espera (el valor predeterminado es 31 segundos). Cualquier estado distinto de HTTP 200 hace que se produzca un error en el sondeo. Puede especificar el puerto (Puerto), el URI para solicitar el estado de mantenimiento del back-end (URI), la cantidad de tiempo entre los intentos de sondeo (Intervalo) y el número de errores que deben producirse para que la instancia se considere incorrecta (Umbral incorrecto).
Persistencia de la sesión
De manera predeterminada, Load Balancer distribuye el tráfico de red equitativamente entre varias instancias de máquina virtual. Dicho algoritmo solo proporciona adherencia dentro de una sesión de transporte. La persistencia de la sesión especifica cómo se debe controlar el tráfico de un cliente. El comportamiento predeterminado (Ninguno) es que cualquier máquina virtual correcta puede controlar las solicitudes sucesivas de un cliente.
La persistencia de la sesión también se conoce como afinidad de sesión, afinidad de IP de origen o afinidad de IP de cliente. Este modo utiliza un hash de tupla de dos elementos (IP de origen e IP de destino) o de tres elementos (IP de origen, IP de destino y tipo de protocolo) para enrutar a instancias de back-end. Al usar la persistencia de sesión, las conexiones del mismo cliente van a la misma instancia de back-end del grupo de back-end. Puede configurar una de las siguientes opciones de persistencia de la sesión:
- Ninguno (valor predeterminado): especifica que cualquier máquina virtual en estado correcto puede controlar la solicitud.
- IP de cliente (2 tuplas): especifica que la misma instancia de back-end puede controlar las solicitudes sucesivas de la misma dirección IP de cliente.
- IP y protocolo de cliente (3 tuplas): especifica que la misma instancia de back-end puede controlar las solicitudes sucesivas de la misma combinación de protocolo y dirección IP de cliente.
Puede cambiar este comportamiento al configurar una de las opciones que se describen en las secciones siguientes.
Puertos de alta disponibilidad
Una regla de equilibrador de carga configurada con protocol - all and port - 0
se denomina regla de puerto de alta disponibilidad. Permite proporcionar una única regla para equilibrar la carga de todos los flujos TCP y UDP que llegan a todos los puertos de un equilibrador de carga estándar interno.
La decisión de equilibrio de carga se toma por cada flujo. Esta acción se basa en la siguiente conexión de tupla de cinco elementos:
- Dirección IP de origen
- Puerto de origen
- Dirección IP de destino
- Puerto de destino
- Protocolo
Las reglas de equilibrio de carga de puertos de alta disponibilidad le ayudan a la hora de usar escenarios críticos como aquellos con alta disponibilidad y escalabilidad para dispositivos virtuales de red (NVA) que estén en redes virtuales. La característica puede ayudar cuando hay que equilibrar la carga de un gran número de puertos.
Reglas NAT de entrada
Puede usar reglas de equilibrio de carga combinadas con reglas de traducción de direcciones de red (NAT). Por ejemplo, podría usar NAT desde la dirección pública del equilibrador de carga a TCP 3389 en una máquina virtual específica. Esta combinación de reglas permite el acceso a Escritorio remoto desde fuera de Azure.
Reglas de salida
Una regla de salida configura una traducción de direcciones de red de origen (SNAT) para todas las máquinas virtuales o instancias identificadas por el grupo de back-end. Esta regla permite que las instancias del back-end se comuniquen (saliente) con Internet u otros puntos de conexión públicos.