Comprobaciones del estado

Las comprobaciones del sistema del equilibrador de carga son pruebas para confirmar la disponibilidad de los servidores backend.

Estas pruebas se realizan en forma de solicitud o intento de conexión según el protocolo. La política de comprobación del sistema incluye un intervalo de tiempo especificado para garantizar que los servidores backend se supervisan continuamente. Si un servidor no supera una comprobación de estado, el equilibrador, de carga, saca temporalmente al servidor de la rotación. Si posteriormente el servidor pasa una comprobación del sistema posterior, el LB devuelve ese servidor backend a la rotación de balance.

La política de comprobación del sistema se configura al crear un juego de backends. Se pueden configurar comprobaciones del sistema a nivel de TCP o a nivel de HTTP para los servidores de backend. Para los juegos de backends configurados con SSL, las comprobaciones del sistema también utilizan el cifrado SSL.

  • Las comprobaciones del sistema a nivel de TCP intentan realizar una conexión TCP con los servidores backend y validar la respuesta en función del estado de conexión.

  • Las comprobaciones del sistema a nivel de HTTP envían las solicitudes a los servidores de backend de una determinada URI y validan la respuesta en función del código de estado o de los datos de entidad (cuerpo) devueltos.

Configure el protocolo de comprobación del sistema para que coincida con su aplicación o servicio. Si ejecuta un servicio HTTP, configure una comprobación del sistema a nivel de HTTP. Si ejecuta una comprobación del sistema a nivel de TCP en un servicio HTTP, es posible que no reciba una respuesta precisa. El establecimiento de comunicación TCP puede ser correcto e indicar que el servicio está activo, incluso si el servicio HTTP no está configurado correctamente o tiene otros problemas. Aunque la comprobación del sistema no devuelve ningún error, es posible que experimente fallos en las transacciones.

Por ejemplo:

  • El servicio HTTP de backend tiene incidencias al comunicarse con la URL de comprobación del sistema y la URL de comprobación del sistema devuelve mensajes 5nn. Una comprobación del sistema HTTP captura el mensaje de la URL de comprobación del sistema y marca el servicio como caído. En este caso, el establecimiento de comunicación de la comprobación del sistema TCP se realiza correctamente y marca el servicio como en buen estado, aunque el servicio HTTP podría no poder usarse.

  • El servicio HTTP de backend responde con mensajes 4nn debido a incidencias de autorización o a que no hay ningún contenido configurado. Una comprobación del sistema TCP no detecta estos errores.

El servicio proporciona capacidades de comprobación del sistema específicas de la aplicación para ayudar a aumentar la disponibilidad y reducir la ventana de mantenimiento de la aplicación.

Los indicadores de estado se utilizan para informar del estado general de un equilibrador de carga y sus servidores/juegos de backend. Los estados posibles son: ok, warning, critical, unknown. El estado del sistema se actualiza cada tres minutos. No hay disponible granularidad más precisa. No se proporcionan datos históricos de salud.

Interpretación de incidencias de estado del equilibrador de carga

En el nivel superior, el estado del equilibrio de carga refleja el estado de sus componentes. Los indicadores de estado proporcionan información que podría necesitar para aumentar detalle e investigar más a fondo. A continuación se muestran varios problemas comunes que los indicadores de estado pueden ayudar a detectar y corregir.

Comprobación de sistema no configurada correctamente

Todos los servidores backend de uno o más listeners afectados informan de un mal estado. Si tras la comprobación se detecta que los servidores de backend no tienen problemas, es probable que un juego de backends contenga una comprobación del sistema con una configuración incorrecta.

El listener no está configurado correctamente

Todos los indicadores de estado del servidor de backend muestran el estado CORRECTO, pero el equilibrador de carga no transfiere tráfico en un listener. Es posible que el listener esté configurado para recibir en el puerto incorrecto, utilizar el protocolo incorrecto o utilizar la política incorrecta. Si al investigar se detecta que el listener no está fallando, compruebe la configuración de la regla de seguridad.

Regla de seguridad mal configurada

Los indicadores de estado le ayudan a diagnosticar estos casos de reglas de seguridad incorrectas:

  • Todos los indicadores de estado muestran el estado correcto, pero el tráfico no fluye (como con listeners configurados incorrectamente). Si el listener no tiene fallos, compruebe la configuración de la regla de seguridad.

  • Todos los indicadores de estado de salud se declaran insalubres. Ha comprobado la configuración de la comprobación del sistema y los servicios se ejecutan correctamente en los servidores de backend. En este caso, es posible que las reglas de seguridad no incluyan el rango de direcciones IP para el origen de las solicitudes de comprobación del sistema. La IP de origen para las solicitudes de comprobación del sistema pertenece a una instancia informática gestionada por el servicio de equilibrio de carga.

Nota

El tráfico también puede bloquearse debido a tablas de rutas mal configuradas en las instancias informáticas.

Servidor de backend en mal estado

Puede que un servidor de backend esté en mal estado o que la comprobación del sistema tenga una configuración incorrecta. Para ver el código de error correspondiente, compruebe el campo de estado de los detalles del servidor backend mediante la consola o la CLI.

¿Cuáles son los efectos secundarios posibles de Load Balancer?

Se sabe que los escenarios de configuración incorrecta se producen regularmente. Esta página ayuda con la resolución de problemas.

Puerto incorrecto
En este escenario, se notifica que todos los servidores de backend están en mal estado. Si ha confirmado que no hay problemas con los servidores de backend, es posible que haya cometido un error al definir el puerto. Se debe permitir el tráfico y el backend debe estar escuchando en ese puerto.
Ruta incorrecta

En este escenario, se notifica que todos los servidores de backend están en mal estado. Si ha confirmado que no hay problemas con los servidores backend, puede que haya cometido un error al definir la ruta de acceso para la comprobación del sistema HTTP. Debe coincidir con una aplicación real en el backend.

Puede usar la utilidad curl para ejecutar una prueba desde un sistema de la misma red. Por ejemplo, curl -i http://backend_ip_address/health.

Aparece el código de estado configurado en la respuesta:
"msg":"invalid statusCode","statusCode":404,"expected":"200"
Protocolo incorrecto

En este escenario, se notifica que todos los servidores de backend están en mal estado. Si ha confirmado que no hay problemas con los servidores backend, para una comprobación del sistema HTTP puede que haya cometido un error al definir el código de estado. Debe coincidir con el código de estado real que se devuelve desde el backend. Una discrepancia típica se produce cuando un backend devuelve un código de estado 302 mientras que se espera un código de estado 200. Esto suele deberse al backend que le dirige a una página de conexión o a otra ubicación del servidor. Puede hacer que el backend devuelva el código esperado o utilizar 302 en la configuración de comprobación del sistema.

Mensaje de error: msg:invalid statusCode, statusCode:nnn,expected:200 (donde nnn representa el código de estado real devuelto).

Error de patrón de expresión regular

En este escenario, se notifica que todos los servidores de backend están en mal estado. Si ha confirmado que no hay problemas con los servidores de backend, es posible que haya cometido un error al definir un patrón de expresión regular que no sea consistente con el cuerpo o que el backend no devuelva el cuerpo esperado. En este caso, puede cambiar el backend para que coincida con el patrón o corregir el patrón para que coincida con el backend.

Mensaje de error: response match resulte: failed.

Reglas de seguridad mal configuradas

En este caso, todos o algunos servidores de backend informan de que están en mal estado. Si ha confirmado que no hay problemas con los servidores de backend, puede que haya configurado incorrectamente los grupos de seguridad de red, las listas de seguridad o los firewalls locales (como firewalld, iptables o SELinux).

En este escenario, puede utilizar las utilidades curl o netcat para ejecutar una prueba desde un sistema en la misma subred y grupo de seguridad de red (NSG) que el HTTP de instancia del equilibrador de carga. Por ejemplo: curl -i http://backend_ip_address/health TCP or nc -zvw3 backend_ip_address 443.

Los firewalls locales se pueden verificar mediante el comando: firewall-cmd --list-all --zone=public. Si faltan las reglas esperadas en la configuración del firewall, agregue el servicio necesario. Por ejemplo, para agregar el puerto HTTP 80:

firewall-cmd --zone=public --add-service=http
firewall-cmd --zone=public --permanent --add-service=http