Solución de problemas de Azure Load Balancer
Azure Load Balancer funciona en el nivel de transporte de la pila de red. Load Balancer anuncia una única IP pública a la que se conectan todos los clientes. Después, Load Balancer usa sus propias reglas de enrutamiento y de traducción de direcciones para dirigir las solicitudes TCP entrantes a una dirección de entre un conjunto de direcciones de salida. Normalmente, cada dirección de salida se asocia a una máquina virtual diferente y cada una de estas ejecuta una instancia de la aplicación.
Load Balancer usa un sondeo de estado para determinar la disponibilidad de cada máquina virtual del grupo de back-end. Load Balancer solo envía solicitudes a las máquinas virtuales que indican que tienen un estado correcto.
En el escenario de ejemplo, se han obtenido alertas que indican que Load Balancer no puede dirigir las solicitudes a las máquinas virtuales del grupo de back-end. Sospecha que un cambio reciente en la configuración de red puede estar provocando el problema. Sin embargo, debe comprender cómo afectan los cambios en la red al funcionamiento de Load Balancer.
Al final de esta unidad, podrá hacer lo siguiente:
- Describir una configuración típica de Load Balancer y los componentes implicados en el enrutamiento de solicitudes a las máquinas virtuales.
- Explicar los problemas comunes que pueden hacer que Load Balancer produzca un error a la hora de distribuir las solicitudes a las máquinas virtuales.
¿Cómo funciona Load Balancer?
Azure Load Balancer incluye algunos componentes clave:
- Una dirección IP de front-end
- Un grupo de back-end de direcciones de máquinas virtuales
- Una o varias reglas de enrutamiento
- Un sondeo de estado.
- Un grupo de máquinas virtuales, normalmente en una red virtual
En el diagrama siguiente se muestra el funcionamiento conjunto de los distintos elementos que usa Load Balancer.
Dirección IP de front-end y grupo de back-end
Load Balancer proporciona una conexión transparente, de un extremo a otro, desde un cliente a una aplicación que se ejecuta en un grupo de máquinas virtuales. Load Balancer almacena las direcciones IP de estas máquinas virtuales en un repositorio que se conoce normalmente como grupo de back-end. Load Balancer expone su propia dirección IP de front-end a los clientes. Cuando un cliente envía una solicitud a esta dirección, Load Balancer selecciona la dirección IP de una máquina virtual del grupo de back-end. Después, Load Balancer enruta la solicitud a través de esta dirección IP de back-end a la máquina virtual.
El cliente no tiene constancia de Load Balancer. El cliente observa una dirección IP o un nombre DNS y envía las solicitudes a este destino. Este proceso es el mismo que si el cliente se comunicase directamente con la máquina virtual. Cuando la solicitud llega a la máquina virtual, se conserva la dirección del cliente original.
Además, la carga de mensajes enviados desde el cliente a la máquina virtual es opaca para Load Balancer. Load Balancer no examina el contenido de los mensajes ni los manipula. Redirecciona los mensajes para que se envíen a la máquina virtual seleccionada.
Load Balancer selecciona la dirección IP de una máquina virtual del grupo de back-end mediante un algoritmo diseñado para distribuir las solicitudes uniformemente. Load Balancer genera un código hash mediante la información siguiente:
- IP de origen y dirección del puerto del cliente.
- Dirección IP y puerto de destino.
- Protocolo de red.
El valor con hash se usa como clave de una tabla que contiene las direcciones IP del grupo de back-end.
Escalabilidad
En cualquier momento se pueden iniciar más instancias de máquina virtual y agregar sus direcciones IP al grupo de back-end. Load Balancer incluirá estas instancias nuevas al distribuir las solicitudes de usuario.
Load Balancer puede exponer más de una dirección IP de front-end pública y tener varios grupos de back-end. Este esquema permite volver a usar de nuevo la misma instancia de Load Balancer para controlar las solicitudes de sistemas distintos.
Reglas de enrutamiento
Se definen reglas de equilibrio de carga para especificar cómo se asignan a un grupo de back-end las solicitudes dirigidas a cada dirección IP de front-end. Una regla de equilibrio de carga también especifica el protocolo con el que debe coincidir y, opcionalmente, los puertos de origen (cliente) y de destino. Load Balancer descarta las solicitudes entrantes que lleguen a una dirección IP de front-end que no coincidan con los requisitos de protocolo y puerto. Una regla de equilibrio de carga también puede configurar la persistencia de sesión para que un cliente determinado tenga más probabilidades de que sus solicitudes se dirijan a la misma máquina virtual, lo que permite a las aplicaciones que se ejecutan en una máquina virtual aprovechar el almacenamiento en caché para almacenar información específica de la sesión.
Sondeos de estado
Load Balancer necesita determinar si cada máquina virtual a la que hace referencia el grupo de back-end está disponible para controlar las solicitudes. La disponibilidad se determina mediante la adición de un sondeo de estado. Un sondeo de estado envía mensajes regulares de ping a un puerto que se especifique para las máquinas virtuales del grupo de back-end. Se proporciona un servicio en las máquinas virtuales que responde a estos mensajes ping con el mensaje HTTP 200 OK.
Cuando la máquina virtual no responde después de un número concreto de intentos, Load Balancer supone que tiene un estado incorrecto y la quita de la lista de máquinas virtuales que pueden aceptar solicitudes de usuario. Después, la carga de trabajo se distribuye entre las máquinas virtuales con estado correcto restantes. Load Balancer sigue haciendo ping en una máquina virtual que no tiene capacidad de respuesta. Si la máquina virtual empieza a responder, se vuelve a agregar a la lista de máquinas virtuales con estado correcto y comienza a recibir de nuevo las solicitudes de usuario.
Si no se proporciona un sondeo de estado, Load Balancer no sabrá si una máquina virtual está con estado correcto. En su lugar, supone que todas las máquinas virtuales tienen capacidad de respuesta.
Red virtual
Las máquinas virtuales a las que hace referencia el grupo de back-end se hospedan en una subred de Azure Virtual Network. Para proteger las máquinas virtuales de esta red, configure un grupo de seguridad de red (NSG). Un NSG implementa reglas de seguridad de entrada y de salida que pueden limitar el tráfico que entra y sale de la red virtual a un conjunto de puntos de conexión bien definidos.
Por ejemplo, las máquinas virtuales del grupo de back-end de Load Balancer normalmente permiten que el tráfico que llega desde fuera de la red virtual entre por los puertos 80 (HTTP) y 443 (HTTPS). Sin embargo, es posible que las máquinas virtuales bloqueen el tráfico que circula por otros puertos.
Síntomas y causas de error con Load Balancer
Cuando Load Balancer pierde la conectividad con una o más máquinas virtuales en el grupo de back-end surgen problemas. Entre los síntomas típicos se incluyen los siguientes:
- La aplicación es inaccesible.
- No se puede acceder a las máquinas virtuales que ejecutan la aplicación.
- Los tiempos de respuesta son lentos.
- Se agota el tiempo de espera de las solicitudes de los usuarios.
Puede haber muchas razones para estos errores. Normalmente se asocian a incidencias de sondeo y de ruta de acceso a datos.
Incidencias de sondeo
Las incidencias de sondeo se producen cuando una o varias máquinas virtuales del grupo de back-end no responden a las solicitudes de sondeo de estado. Estas incidencias pueden ser el resultado de los casos siguientes:
- Una configuración de sondeo incorrecta, como una dirección URL o un puerto incorrectos.
- Una máquina virtual no responde al sondeo porque el puerto requerido no está abierto.
Incidencias de ruta de acceso a datos
Las incidencias de ruta de acceso a datos se producen cuando un equilibrador de carga no puede enrutar una solicitud de cliente a la aplicación que se ejecuta en una máquina virtual del grupo de back-end. Entre las causas posibles se incluyen las siguientes:
- Un firewall o una regla de NSG que bloquean los puertos o las direcciones IP que se usan en la aplicación.
- Una máquina virtual está fuera de servicio o no responde. Es posible que la máquina virtual esté deshabilitada o que produzca un error, o que haya una incidencia de seguridad, como un certificado expirado en el servidor.
- La aplicación no responde. Las máquinas virtuales podrían estar sobrecargadas, la aplicación escucha en un puerto incorrecto o la aplicación se bloquea.