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.
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.
El proceso de comprobación de estado de TCP es el siguiente:
- El balanceador de carga envía un paquete TCP SYN al servidor backend (en el formato de Private IP address}:{Health check port).
- 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:
- Use Comprobación de estado de HTTP.
- Haga que el servidor backend ignore el error de conexión.
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.
El proceso de comprobación de estado de UDP es el siguiente:
- 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.
- 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.
El proceso de comprobación de estado HTTPS es el siguiente:
- 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.)
- 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.
El proceso de comprobación de estado HTTPS es el siguiente:
- El balanceador de carga envía un paquete de Client Hello para establecer una conexión SSL con el servidor backend.
- 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.)
- 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:
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)
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?