Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-06-28 GMT+08:00

Comprobación de estado

ELB envía periódicamente solicitudes a los servidores backend para comprobar si pueden procesar solicitudes. Este proceso se llama comprobación de estado.

Si se detecta un servidor backend que no está sano, el balanceador de carga detendrá las solicitudes de enrutamiento a él. Después de que el servidor backend se recupere, el balanceador de carga reanudará las solicitudes de enrutamiento a él.

Si los servidores backend tienen que manejar un gran número de solicitudes, las comprobaciones de estado frecuentes pueden sobrecargar los servidores backend y hacer que respondan lentamente. Para solucionar este problema, puede prolongar el intervalo de comprobación de estado o utilizar TCP o UDP en lugar de HTTP. También puede desactivar la comprobación de estado. Si decide desactivar la comprobación de estado, es posible que las solicitudes se enruten a servidores que no estén sanos y que se produzcan interrupciones del servicio.

Protocolo de comprobación de estado

Puede configurar las comprobaciones de estado al configurar grupos de servidores backend. En general, puede utilizar la configuración predeterminada o seleccionar un protocolo de comprobación de estado diferente según lo necesite.

Si desea modificar la configuración de la comprobación de estado, consulte los detalles de Modificación de la configuración de comprobación de estado.

Seleccione un protocolo de comprobación de estado que coincida con el protocolo de backend como se describe en Tabla 1 y Tabla 2.

Tabla 1 El protocolo de backend y los protocolos de comprobación de estado (balanceadores de carga dedicados)

Protocolo backend

Protocolo de comprobación de estado

TCP

TCP, UDP, HTTP o HTTPS

UDP

UDP

QUIC

UDP

HTTP

TCP, HTTP, HTTPS

HTTPS

TCP, HTTP, HTTPS

Tabla 2 Protocolo de back-end y protocolos de comprobación de estado (balanceadores de carga compartidos)

Protocolo backend

Protocolo de comprobación de estado

TCP

TCP o HTTP

UDP

UDP

HTTP

TCP o HTTP

HTTPS

TCP o HTTP

Comprobación de estado de TCP

Para los protocolos de backend TCP, HTTP y HTTPS, puede usar TCP para iniciar acuerdos de enlace de tres vías para obtener los estados de los servidores de backend.

Figura 1 Comprobación de estado de TCP

El proceso de comprobación de estado de TCP es el siguiente:

  1. El balanceador de carga envía un paquete TCP SYN al servidor backend (en el formato de Private IP address}:{Health check port).
  2. El servidor backend devuelve un paquete SYN-ACK.
    • Si el balanceador de carga no recibe el paquete SYN-ACK dentro de la duración del tiempo de espera, declara que el servidor backend no está sano y envía un paquete RST al servidor backend para terminar la conexión de TCP.
    • Si el balanceador de carga recibe el paquete SYN-ACK desde el servidor backend dentro de la duración del tiempo de espera, envía un paquete ACK al servidor backend y declara que el servidor backend está en buen estado. Después de eso, el balanceador de carga envía un paquete RST al servidor back-end para terminar la conexión de TCP.

Después de un protocolo de enlace de tres vías TCP exitoso, se enviará un paquete RST para cerrar la conexión TCP. La aplicación en el servidor backend puede considerar este paquete como un error de conexión y responder con un mensaje, por ejemplo, "Connection reset by peer". Para evitar este problema, realice cualquiera de las siguientes acciones:

Comprobación de estado de UDP

Para el protocolo backend de UDP, ELB envía paquetes de sondeo ICMP y UDP a los servidores backend para comprobar su estado.

Figura 2 Comprobación de estado de UDP

El proceso de comprobación de estado de UDP es el siguiente:

  1. El balanceador de carga envía un paquete de ICMP Echo Request al servidor backend.
    • Si el balanceador de carga no recibe un paquete ICMP Echo Reply dentro de la duración del tiempo de espera de comprobación de estado, el servidor backend se declara no saludable.
    • Si el balanceador de carga recibe un paquete ICMP Echo Reply dentro del período de tiempo de espera, envía un paquete de sondeo UDP al servidor backend.
  2. Si el balanceador de carga no recibe un error ICMP Port Unreachable dentro de la duración del tiempo de espera de comprobación de estado, declara que el servidor backend está en buen estado. Si el balanceador de carga recibe un error ICMP Port Unreachable, el servidor backend se declara insalubre.

Comprobación de estado de HTTP

También puede configurar las comprobaciones de estado de HTTP para obtener los estados del servidor con las solicitudes HTTP GET si selecciona TCP, HTTP o HTTPS como protocolo backend. Figura 3 Figura 3 muestra cómo funciona una comprobación de estado HTTP.

Figura 3 Comprobación de estado de HTTP

El proceso de comprobación de estado HTTPS es el siguiente:

  1. El balanceador de carga envía una solicitud de HTTP GET al servidor backend (en formato de {Private IP address}:{Health check port}/{Health check path}). (Puede especificar un nombre de dominio al configurar una comprobación de estado.)
  2. El servidor backend devuelve un código de estado HTTP a ELB.
    • Si el balanceador de carga recibe el código de estado dentro de la duración del tiempo de espera de comprobación de estado, compara el código de estado con el preestablecido. Si los códigos de estado son los mismos, el servidor backend se declara en buen estado.
    • Si el balanceador de carga no recibe ninguna respuesta del servidor backend dentro de la duración del tiempo de espera de comprobación de estado, declara que el servidor backend no está sano.

Comprobación de estado de HTTPS

Para los protocolos de backend TCP, HTTP y HTTPS, puede usar HTTPS para establecer una conexión SSL a través de TLS para obtener los estados de los servidores de backend. Figura 4 muestra cómo funciona una comprobación de estado HTTPS.

Figura 4 Comprobación de estado de HTTPS

El proceso de comprobación de estado HTTPS es el siguiente:

  1. El balanceador de carga envía un paquete de Client Hello para establecer una conexión SSL con el servidor backend.
  2. Después de recibir el paquete Server Hello desde el servidor back-end, el balanceador de carga envía una solicitud de HTTP GET encriptada al servidor back-end (en el formato de {Dirección IP privada}:{Puerto de comprobación de salud}/{Ruta de comprobación de salud}). (Puede especificar un nombre de dominio al configurar una comprobación de estado.)
  3. El servidor backend devuelve un código de estado HTTP al balanceador de carga.
    • Si el balanceador de carga recibe el código de estado dentro de la duración del tiempo de espera de comprobación de estado, compara el código de estado con el preestablecido. Si los códigos de estado son los mismos, el servidor backend se declara en buen estado.
    • Si el balanceador de carga no recibe ninguna respuesta del servidor backend dentro de la duración del tiempo de espera de comprobación de estado, declara que el servidor backend no está sano.

Ventana de tiempo de comprobación de estado

Las comprobaciones de estado mejoran considerablemente la disponibilidad del servicio. Sin embargo, si los controles de estado son demasiado frecuentes, la disponibilidad del servicio se verá comprometida. Para evitar el impacto, ELB declara un servidor backend en buen estado o en mal estado después de varias comprobaciones de estado consecutivas.

La ventana de tiempo de comprobación de estado viene determinada por los factores de Tabla 3:

Tabla 3 Factores que afectan a la ventana de tiempo de comprobación de estado

Factor

Descripción

Intervalo de verificación

Con qué frecuencia se realizan comprobación de salud.

Duración del tiempo de espera

Cuánto tiempo espera el balanceador de carga para la respuesta del servidor backend.

Umbral de comprobación de estado

Número de comprobaciones de estado exitosas o fallidas consecutivas requeridas para determinar si el servidor backend está sano o no.

La siguiente es una fórmula para calcular la ventana de tiempo de comprobación de estado:

  • Ventana de tiempo para que un servidor backend se detecte sano = Duración de tiempo de espera x umbral saludable + Intervalo x (umbral saludable – 1)
  • Ventana de tiempo para que un servidor backend se detecte insalubre = Duración de tiempo de espera x umbral insalubre + Intervalo x (umbral insalubre – 1)
Como se muestra en Figura 5, si el intervalo de comprobación de salud es 4s, la duración del tiempo de espera de comprobación de salud es 2s, y el umbral de insalubridad es 3, la ventana de tiempo para que un servidor backend se considere insalubridad se calcula de la siguiente manera: 2 x 3 + 4 x (3 – 1) = 14s.
Figura 5 Duración del tiempo de espera de la comprobación de estado

Rectificación de un servidor backend poco saludable

Si se detecta un servidor backend que no está sano, consulte ¿Cómo soluciono problemas de un servidor backend insalubre?