¿Cómo soluciono problemas de un servidor backend insalubre?
Síntoma
Si un cliente no puede acceder a un servidor backend con un balanceador de carga, el servidor backend se declara no saludable. Puede ver los resultados de la comprobación de estado de un servidor backend en la consola de ELB.
- Balanceadores de carga dedicados
En la página Load Balancers, haga clic en el nombre del balanceador de carga para ver sus detalles. Haga clic en Backend Server Groups y busque el grupo de servidores. Puede encontrar los resultados de la comprobación de estado de los servidores backend en el área Basic Information.
- Balanceadores de carga compartidos:
En la página Load Balancers, haga clic en el nombre del balanceador de carga para ver sus detalles. Haga clic en Backend Server Groups y busque el grupo de servidores. Puede encontrar los resultados de la comprobación de estado de los servidores backend en el área Basic Information.
Antecedentes
Para comprobar el estado de los servidores backend, los balanceadores de carga dedicados usan las direcciones IP de la subred backend donde trabajan para enviar solicitudes de latidos a los servidores backend. mientras que los balanceadores de carga compartidos utilizan direcciones IP en 100.125.0.0/16.
Balanceadores de carga dedicados: Para asegurarse de que las comprobaciones de estado se pueden realizar según lo esperado, asegúrese de que se permita el tráfico desde la subred backend donde el balanceador de carga está trabajando a los servidores backend.
Balanceadores de carga compartidos: Para asegurarse de que las comprobaciones de estado se pueden realizar como se esperaba, asegúrese de que el tráfico esté permitido desde 100.125.0.0/16 a los servidores backend.
- Las reglas de grupo de seguridad configuradas para servidores backend asociados con balanceadores de carga dedicados son diferentes de las configuradas para servidores backend asociados con balanceadores de carga compartidos.
- Balanceadores de carga dedicados: asegúrese de que las reglas de grupo de seguridad permitan el acceso desde direcciones IP en la VPC donde reside el servidor backend. Para obtener más información acerca de cómo configurar grupos de seguridad para servidores backend asociados con balanceadores de carga dedicados, consulte Configuración de reglas de grupo de seguridad para servidores backend (balanceadores de carga dedicados).
- Balanceadores de carga compartidos: asegúrese de que el grupo de seguridad permita el tráfico desde 100.125.0.0/16 al servidor backend. Para obtener más información, consulte Configuración de un grupo de seguridad para servidores backend (balanceadores de carga compartidos).
Si se considera que un servidor backend no está sano, ELB no encaminará el tráfico hasta que se declare sano de nuevo.
Si cambia la ponderación de un servidor backend sano a 0, el resultado de la comprobación de estado de este servidor se convierte en Unhealthy.
- Cuando se detecta que un servidor backend no está sano, el balanceador de carga detendrá las solicitudes de enrutamiento a este servidor.
- Si las comprobaciones de estado están deshabilitadas, el balanceador de carga considerará el servidor backend de forma predeterminada en buen estado y seguirá enrutándole las solicitudes.
- Si Transfer Client IP Address está habilitado para oyentes de TCP y UDP de balanceadores de carga dedicados y compartidos, las direcciones IP del cliente en lugar de las direcciones IP en 100.125.0.0/16 se utilizan para comunicarse con el servidor backend.
- ELB utiliza direcciones IP en 100.125.0.0/16 para realizar comprobaciones de estado y enrutar solicitudes a servidores backend.
- El tráfico no se enrutará a un servidor backend con una ponderación de 0, por lo que el resultado de la comprobación de estado para este servidor backend no es relevante.
Solución de problemas
Las posibles causas se describen aquí en el orden de la probabilidad de que ocurran.
Compruebe estas causas una por una hasta que encuentre la causa de este problema.
La modificación tarda un tiempo en surtir efecto después de cambiar la configuración de comprobación de estado. El tiempo requerido depende del intervalo de comprobación de estado y de la duración del tiempo de espera. Puede ver el resultado de la comprobación de estado en la lista del servidor backend del balanceador de carga de destino.
Causa posible |
Solución |
---|---|
Grupo de servidores backend |
Comprobación de si el grupo de servidores backend está asociado con un oyente |
EIP o dirección IP privada |
Comprobación de si una EIP o una dirección IP privada están vinculadas al balanceador de carga |
Configuración de comprobación de estado |
|
Reglas de grupos de seguridad |
|
Reglas de ACL de red |
|
Configuración de escucha del servidor backend |
|
Reglas de ACL de red |
|
Ruta del servidor backend |
|
Carga del servidor backend |
|
Archivo host.deny del servidor backend |
Comprobación de si el grupo de servidores backend está asociado con un oyente
- Si el grupo de servidores backend no está asociado con un oyente, compruebe si se ha agregado un oyente al balanceador de carga.
- Si hay un oyente, asocia el grupo de servidores backend con el oyente.
- Si no hay oyentes, agregue un oyente. Seleccione Use existing y, a continuación, seleccione el grupo de servidores backend cuando agregue el oyente.
- Si el grupo de servidores backend se ha asociado con un oyente, proceda con las siguientes operaciones.
Comprobación de si una EIP o una dirección IP privada están vinculadas al balanceador de carga
- Compruebe esto solo cuando agregue un oyente TCP o UDP al balanceador de carga.
- Si agrega un oyente de HTTP o de HTTPS al balanceador de carga, las comprobaciones de estado no se verán afectadas sin importar si una dirección IP privada o EIP está vinculada al balanceador de carga.
Si agrega un oyente de TCP o UDP al balanceador de carga, compruebe si el balanceador de carga tiene una EIP o una dirección IP privada vinculada.
Si el balanceador de carga no tiene EIP o dirección IP privada vinculada, enlace uno.
Cuando se crea un balanceador de carga por primera vez, si no hay una dirección IP privada o EIP vinculada al balanceador de carga, el resultado de la comprobación de estado de los servidores backend asociados con un oyente de TCP o UDP es Unhealthy. Después de vincular una EIP o una dirección IP privada al balanceador de carga, el resultado de la comprobación de estado se convierte en Healthy. Si desvincula la EIP o la dirección IP privada del balanceador de carga, el resultado de la comprobación de estado sigue siendo Healthy.
Comprobación de la configuración de comprobación de estado
- Domain Name: Si utiliza HTTP para las comprobaciones de estado y el servidor backend está configurado para verificar el encabezado del host, introduzca el nombre de dominio configurado para el servidor backend.
- Protocol: El protocolo utilizado para las comprobaciones de estado.
- Port: El puerto debe ser el que se usa en el servidor backend, y no se puede cambiar. Compruebe si el puerto de comprobación de estado está en el estado de escucha en el servidor backend. Si no lo es, el servidor backend se identificará como insalubre.
- Check Path: Si se utiliza HTTP para las comprobaciones de estado, debe comprobar este parámetro. Se recomienda un simple archivo HTML estático.
- Si el protocolo de comprobación de estado es HTTP, el puerto y la ruta se utilizan para las comprobaciones de estado.
- Si el protocolo de comprobación de estado es TCP, solo se utiliza el puerto para las comprobaciones de estado.
- Si el protocolo de comprobación de estado es HTTP y el puerto de comprobación de estado es normal, cambie la ruta o cambie el protocolo de comprobación de estado a TCP.
- Escriba una ruta absoluta.
Si la dirección URL es http://www.example.com o http://192.168.63.187:9096 escriba / como ruta de comprobación de estado.
Si la dirección URL es http://www.example.com/chat/try/, escriba /chat/try/ como ruta de comprobación de estado.
Si la dirección URL es http://192.168.63.187:9096/chat/index.html, escriba /chat/index.html como ruta de comprobación de estado.
Comprobación de reglas de grupo de seguridad
- Balanceadores de carga dedicados
- Oyentes de TCP, de HTTP o de HTTPS: Verifique que la regla de grupo de seguridad entrante permita el tráfico TCP desde la VPC donde reside el balanceador de carga dedicado al servidor backend a través del puerto de comprobación de estado.
- Si el puerto de comprobación de estado es el mismo que el puerto backend: la regla de entrada debe permitir el tráfico sobre el puerto backend, por ejemplo, el puerto 80.
- Si el puerto (puerto 80 como ejemplo) para la comprobación de la salud es diferente del utilizado por el servidor backend (puerto 443 como ejemplo), las reglas de grupo de seguridad entrante deben permitir el tráfico a través de ambos puertos.
Puede comprobar el protocolo y el puerto en el área Basic Information del grupo de servidores backend.
Figura 3 Ejemplo de regla entrante
- Oyentes de UDP: Verifique que la regla de grupo de seguridad entrante permita el tráfico desde la VPC donde reside el balanceador de carga dedicado al servidor backend mediante el protocolo de comprobación de estado y sobre el puerto de comprobación de estado. Además, la regla debe permitir el tráfico de ICMP entrante.
Figura 4 Ejemplo de regla de entrada que permite el tráfico de ICMP
- Oyentes de TCP, de HTTP o de HTTPS: Verifique que la regla de grupo de seguridad entrante permita el tráfico TCP desde la VPC donde reside el balanceador de carga dedicado al servidor backend a través del puerto de comprobación de estado.
- Balanceadores de carga compartidos
- Oyentes de TCP, de HTTP o de HTTPS: Verifique que la regla entrante del grupo de seguridad que contiene el servidor backend permita el acceso desde 100.125.0.0/16 y permite el tráfico desde el puerto de comprobación de estado.
- Si el puerto de comprobación de estado es el mismo que el puerto backend: la regla de entrada debe permitir el tráfico sobre el puerto backend, por ejemplo, el puerto 80.
- Si el puerto (puerto 80 como ejemplo) para la comprobación de la salud es diferente del utilizado por el servidor backend (puerto 443 como ejemplo), las reglas de grupo de seguridad entrante deben permitir el tráfico a través de ambos puertos.
Puede comprobar el protocolo y el puerto en el área Basic Information del grupo de servidores backend.
Figura 5 Ejemplo de regla entrante
- Oyentes de UDP: Verifique que la regla de grupo de seguridad entrante permita el tráfico de 100.125.0.0/16 al servidor backend mediante el protocolo de comprobación de estado y sobre el puerto de comprobación de estado. Además, la regla debe permitir el tráfico de ICMP entrante.
Figura 6 Ejemplo de regla de entrada que permite el tráfico de ICMP
- Oyentes de TCP, de HTTP o de HTTPS: Verifique que la regla entrante del grupo de seguridad que contiene el servidor backend permita el acceso desde 100.125.0.0/16 y permite el tráfico desde el puerto de comprobación de estado.
- Se debe permitir el acceso al servidor backend desde direcciones IP en 100.125.0.0/16. Esto se debe a que el balanceador de carga se comunica con los servidores backend utilizando estas direcciones IP. Después de enrutar el tráfico a los servidores backend, las direcciones IP de origen se convierten en direcciones IP de 100.125.0.0/16. Además, el balanceador de carga utiliza estas direcciones IP para enviar solicitudes de latidos a los servidores backend para comprobar su estado.
- Si no está seguro acerca de las reglas del grupo de seguridad, cambie el Protocol & Port a All para realizar pruebas.
- Para oyentes de UDP, véase ¿Cómo realiza ELB las comprobaciones de estado de UDP? ¿Cuáles son las precauciones para las comprobaciones de estado de UDP?
Comprobación de reglas de ACL de red
- Balanceadores de carga dedicados
Para controlar el tráfico dentro y fuera de una subred, puede asociar una ACL de red a la subred. Las reglas de ACL de red controlan el acceso a las subredes y agregan una capa adicional de defensa a las subredes. Las reglas predeterminadas de ACL de red rechazan todo el tráfico entrante y saliente. Si la subred de un balanceador de carga o de los servidores backend asociados tiene asociada una ACL de red, el balanceador de carga no puede recibir tráfico de Internet ni enrutar el tráfico a los servidores backend, y los servidores backend no pueden recibir tráfico del balanceador de carga ni responder al mismo.
Configure una regla entrante de ACL de red para permitir el tráfico desde la VPC donde reside el balanceador de carga hacia los servidores backend.
- Inicie sesión en la consola de gestión.
- En la esquina superior izquierda de la página, haga clic en y seleccione la región y el proyecto deseados.
- Haga clic en en la esquina superior izquierda de la página y elija Networking > Virtual Private Cloud.
- En el panel de navegación de la izquierda, elija Access Control > Network ACLs.
- En la lista de ACL de red, haga clic en el nombre de la ACL de red para cambiar a la página que muestra sus detalles.
- En la página Inbound Rules o Outbound Rules, haga clic en Add Rule para agregar una regla.
- Action: Seleccione Allow.
- Protocol: El protocolo debe ser el mismo que seleccionó para el oyente.
- Source: Establezca el bloque CIDR de VPC.
- Source Port Range: Seleccione un rango de puertos.
- Destination: Ingrese una dirección de destino permitida en esta dirección. Si mantiene el valor predeterminado 0.0.0.0/0 se permitirá el tráfico para todas las direcciones IP de destino.
- Destination Port Range: Seleccione un rango de puertos.
- (Opcional) Descripción: Describa la regla de ACL de red si es necesario.
- Haga clic en OK.
- Balanceadores de carga compartidos
Para controlar el tráfico dentro y fuera de una subred, puede asociar una ACL de red a la subred. Las reglas de ACL de red controlan el acceso a las subredes y agregan una capa adicional de defensa a las subredes. Las reglas predeterminadas de ACL de red rechazan todo el tráfico entrante y saliente. Si la subred de un balanceador de carga o de los servidores backend asociados tiene asociada una ACL de red, el balanceador de carga no puede recibir tráfico de Internet ni enrutar el tráfico a los servidores backend, y los servidores backend no pueden recibir tráfico del balanceador de carga ni responder al mismo.
Puede configurar una regla de ACL de red entrante para permitir el acceso desde 100.125.0.0/16.
- Inicie sesión en la consola de gestión.
- En la esquina superior izquierda de la página, haga clic en y seleccione la región y el proyecto deseados.
- Haga clic en en la esquina superior izquierda de la página y elija Networking > Virtual Private Cloud.
- En el panel de navegación de la izquierda, elija Access Control > Network ACLs.
- En la lista de ACL de red, haga clic en el nombre de la ACL de red para cambiar a la página que muestra sus detalles.
- En la página Inbound Rules o Outbound Rules, haga clic en Add Rule para agregar una regla.
- Action: Seleccione Allow.
- Protocol: El protocolo debe ser el mismo que seleccionó para el oyente.
- Source: Póngalo en 100.125.0.0/16.
- Source Port Range: Seleccione un rango de puertos.
- Destination: Ingrese una dirección de destino permitida en esta dirección. Si mantiene el valor predeterminado 0.0.0.0/0 se permitirá el tráfico para todas las direcciones IP de destino.
- Destination Port Range: Seleccione un rango de puertos.
- (Opcional) Descripción: Describa la regla de ACL de red si es necesario.
- Haga clic en OK.
Comprobación del servidor backend
Si el servidor backend se ejecuta en Windows, utilice un navegador para acceder a https://{Backend server IP address}:{Health check port}. Si se devuelve un código 2xx o 3xx, el servidor backend se está ejecutando normalmente.
- Ejecute el siguiente comando en el servidor backend para comprobar si se escucha el puerto de comprobación de estado:
netstat -anlp | grep port
Si se muestran el puerto de comprobación de estado y el LISTEN, el puerto de comprobación de estado se encuentra en estado de escucha. Como se muestra en la Figura 7, se escucha en el puerto TCP 880.
Si no especifica un puerto de comprobación de estado, los puertos backend se utilizan de forma predeterminada.Figura 8 No se escucha el puerto del servidor backend
Si el puerto de comprobación de estado no está en estado de escucha, el servidor backend no está en estado de escucha. Debe iniciar la aplicación en el servidor backend y comprobar si se escucha el puerto de comprobación de estado.
- Para las comprobaciones de estado HTTP, ejecute el siguiente comando en el servidor backend para comprobar el código de estado:
curl Private IP address of the backend server:Health check port/Health check path -iv
Para realizar una comprobación de estado HTTP, el balanceador de carga inicia una solicitud de GET al servidor backend. Si se muestran los siguientes códigos de estado de respuesta, el servidor backend se considera saludable:
Oyentes de TCP: 200
Balanceadores de carga dedicados: 200 para comprobaciones de estado HTTP/HTTPS
Balanceadores de carga compartidos: 200, 202 o 401 para la comprobación de estado HTTP
Figura 9 Servidor backend insalubre
Figura 10 Servidor backend saludable
- Si se utiliza HTTP para las comprobaciones de estado y se detecta que el servidor backend no está en estado, realice los siguientes pasos para configurar una comprobación de estado TCP:
En la página de ficha Listeners, modifique el oyente de destino, seleccione el grupo de servidores backend para el que se ha configurado la comprobación de estado TCP o agregue un grupo de servidores backend y seleccione TCP como protocolo de comprobación de estado. Después de completar la configuración, espere un tiempo y compruebe el resultado de la comprobación de estado.
Checking the Firewall on the Backend Server
Si el firewall u otro software de seguridad está habilitado en el servidor de back-end, el software puede bloquear las direcciones IP en la subred de back-end del balanceador de carga o 100.125.0.0/16.
Para los balanceadores de carga dedicados, configure las reglas de firewall entrantes para permitir el tráfico desde la subred backend donde el balanceador de carga trabaja a los servidores backend.
Para los balanceadores de carga compartidos, configure las reglas de firewall entrantes para permitir el tráfico de 100.125.0.0/16 a los servidores backend.
Comprobación de la ruta del servidor backend
Compruebe si la ruta predeterminada configurada para la NIC principal se ha modificado manualmente. Si se cambia la ruta predeterminada, es posible que los paquetes de comprobación de estado no lleguen al servidor backend.
ip route
Alternativamente, ejecute el siguiente comando:
route -n
Figura 11 muestra la salida del comando cuando la ruta del servidor backend es normal.
Si la salida del comando no contiene la primera ruta, o la ruta no apunta al gateway, configure o modifique la ruta predeterminada para que apunte al gateway.
Comprobación de la carga del servidor backend
Vea el uso de la vCPU, el uso de la memoria y las conexiones de red del servidor backend en la consola de Cloud Eye para comprobar si el servidor backend está sobrecargado.
Si la carga es alta, las conexiones o las solicitudes de comprobaciones de estado pueden agotarse.
Comprobación del archivo hosts.deny
Verifique que las direcciones IP de la VPC donde funcionan los balanceadores de carga y 100.125.0.0/16 no se escriban en el archivo /etc/hosts.deny del servidor backend.
Para los balanceadores de carga dedicados, verifique que las direcciones IP de la VPC donde funcionan los balanceadores de carga no estén escritas en el archivo.
Para los balanceadores de carga compartidos, verifique que las direcciones IP de 100.125.0.0/16 no estén escritas en el archivo.
Envío de un ticket de servicio
Si el problema persiste, envíe un ticket de servicio.