¿Cómo soluciono los errores relacionados con las comprobaciones de estado de los equilibradores de carga de aplicación?

8 minutos de lectura
0

Quiero saber por qué los destinos que están registrados en mi equilibrador de carga de aplicación no están en buen estado.

Resolución

Para solucionar los errores en las comprobaciones de estado de su equilibrador de carga de aplicación, busque el código del motivo y la descripción del problema. A continuación, lleve a cabo las siguientes tareas para resolver el problema.

Búsqueda del código de motivo y descripción del problema

Utilice el mapa de recursos en lugar de la consola del grupo de destino para ver los recursos del equilibrador de carga e identificar los objetivos en mal estado. El mapa de recursos muestra todos los recursos del equilibrador de carga de aplicación en una sola página.

Nota: Si la respuesta HTTP de destino del equilibrador de carga de aplicación no es la esperada, compruebe la respuesta de su aplicación. Asegúrese de que la aplicación envíe la respuesta correcta al equilibrador de carga.

Resolución del problema según el código de motivo

Según el código de motivo de la comprobación de estado que encuentre, lleve a cabo las siguientes tareas para resolver el problema.

Elb.InitialHealthChecking

Antes de que un destino pueda recibir solicitudes del equilibrador de carga, este destino debe superar las comprobaciones de estado iniciales. Espere a que el destino supere las comprobaciones de estado iniciales y, a continuación, vuelva a comprobar su estado.

Elb.RegistrationInProgress

El equilibrador de carga comienza a enrutar las solicitudes al destino en cuanto se completa el proceso de registro y el destino supera las comprobaciones de estado iniciales.

Target.DeregistrationInProgress

Al anular el registro de un destino, el equilibrador de carga deja de enviar solicitudes al destino. Elastic Load Balancing espera 300 segundos antes de completar la cancelación del registro. Sin embargo, puede usar la consola Amazon EC2 o la Interfaz de la línea de comandos de AWS (AWS CLI) para actualizar el valor de retardo. Para obtener más información, consulte Deregistration delay.

Nota: Si se muestran errores al ejecutar comandos de la AWS CLI, consulte Errores de solución de problemas de la AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.

Target.FailedHealthChecks

Para resolver este problema, complete estas tareas:

  • Confirme que la aplicación se esté ejecutando. Ejecute el comando service para comprobar el estado de los servicios en los destinos de Linux. En el caso de los destinos de Windows, consulte la pestaña Servicios del Administrador de tareas de Windows. Si el servicio se ha detenido, inícielo. Si no se reconoce el servicio, compruebe si está instalado.

  • Compruebe si el destino está escuchando el tráfico en el puerto de comprobación de estado. Puede ejecutar el comando ss en los destinos de Linux para verificar los puertos en los que escucha su servidor. En el caso de los destinos de Windows, puede ejecutar el comando netstat.

  • Lance o use una instancia existente en la misma Amazon Virtual Private Cloud (VPC) que la instancia de destino. Asegúrese de tener acceso a esta instancia. O bien, si el destino es de acceso público, envíe una solicitud de comprobación de estado directamente a la dirección IP pública del objetivo.

    Utilice el siguiente comando CURL:

    $curl -vkso /dev/null <HealthCheck_protocol>://<Target_IP>:<HealthCheck_port>/<HealthCheck_path>

    Nota: Use este método para omitir el equilibrador de carga de aplicación y verificar si el destino responde correctamente a las solicitudes de comprobación de estado del equilibrador de carga.

  • Compruebe si su aplicación responde a las solicitudes de comprobación de estado del equilibrador de carga. En el siguiente ejemplo se muestra una solicitud de comprobación de estado típica del equilibrador de carga de aplicación que sus destinos deben devolver con una respuesta HTTP válida:

    GET / HTTP/1.1Host: 10.0.0.1:80
    Connection: close
    User-Agent: ELB-HealthChecker/2.0
    Accept-Encoding: gzip, compressed

    Nota: En el ejemplo anterior, el valor del encabezado Host contiene la dirección IP privada del destino, seguida del puerto de comprobación de estado. User-agent se ha definido como ELB-HealthChecker/2.0. El terminador de línea para los campos message-header es la secuencia CRLF. El encabezado termina en la primera línea vacía seguida de CRLF. Para recibir las solicitudes de comprobación de estado, puede que tenga que añadir un host virtual predeterminado a la configuración de su servidor web.

  • Si ha adjuntado varias interfaces al destino, verifique que su aplicación esté escuchando en la interfaz de red correcta. Para obtener más información, consulte Target type.

  • Confirme que el destino proporciona un certificado de servidor y una clave en el formato especificado en la política de seguridad de Elastic Load Balancing. Además, compruebe que el destino admita los cifrados coincidentes y el protocolo que proporciona el equilibrador de carga para establecer el protocolo de enlace TLS.

Target.InvalidState

Si el destino es una instancia de Amazon EC2, utilice la consola de Amazon EC2 para comprobar que la instancia se esté ejecutando. Si la instancia no se está ejecutando, iníciela manualmente.

Target.IpUnusable

Si su tipo de destino es ip, no seleccione una dirección IP que ya esté usando un equilibrador de carga.

Target.NotInUse

Para resolver este problema, complete estas tareas:

  • Compruebe el grupo de destino y asegúrese de que esté configurado para recibir tráfico del equilibrador de carga.
  • Asegúrese de que la zona de disponibilidad del destino esté activada para el equilibrador de carga.

Target.NotRegistered

Compruebe que el destino esté registrado en el grupo de destino.

Target.ResponseCodeMismatch

Para resolver este problema, complete estas tareas:

  • Revise la configuración de la comprobación de estado para verificar los códigos de éxito que el equilibrador de carga espera recibir. De forma predeterminada, el código de éxito es 200, pero puede especificar valores entre 200 y 499. Revise los registros de acceso al servidor web para ver si se están devolviendo los códigos de éxito esperados.
  • Compruebe que la ruta de ping sea válida. Asegúrese de especificar una URI válido. El valor predeterminado es /.

Para cambiar el valor del código de éxito o la ruta de ping, consulte Modify the health check settings of a target group.

Target.Timeout

Si puede conectarse, es posible que la página de destino no responda antes de transcurra el periodo de espera de la comprobación de estado. La mayoría de los servidores web, como NGINX e IIS, permiten registrar el tiempo que tarda el servidor en responder. Para obtener más información, consulte Configuring Logging en el sitio web de NGINX y Configure logging in IIS en el sitio web de Microsoft.

Si las solicitudes de verificación de estado tardan más que el tiempo de espera configurado, lleve a cabo las siguientes tareas:

Si no puede conectarse, haga lo siguiente:

  • Utilice el puerto de comprobación de estado y el protocolo de comprobación de estado para verificar que el grupo de seguridad asociado con el destino permita tráfico desde el equilibrador de carga. Puede agregar una regla al grupo de seguridad para permitir todo el tráfico del grupo de seguridad del equilibrador de carga. Además, el grupo de seguridad del equilibrador de carga debe permitir el tráfico a los destinos.
  • Confirme que la lista de control de acceso a la red (ACL de la red) asociada a las subredes de su destino permita el tráfico entrante en el puerto de comprobación de estado. La ACL de la red también debe permitir el tráfico saliente en los puertos efímeros (1024-65535).
  • Verifique que la ACL de la red asociada a las subredes de sus nodos permita el tráfico entrante en los puertos efímeros. La ACL de la red también debe permitir el tráfico saliente en los puertos efímeros y de verificación de estado.
  • Compruebe que los firewalls del sistema operativo del destino permitan comprobar el estado del tráfico de entrada y salida.
  • Compruebe que la tabla de enrutamiento de las subredes del destino contenga una entrada que permita que el tráfico de comprobación de estado vuelva al equilibrador de carga.
  • Confirme que la utilización de la memoria y la CPU de su destino esté dentro de la capacidad aceptable. Si el uso de memoria o CPU es demasiado alto, añada destinos adicionales o aumente la capacidad de su grupo de escalamiento automático. Si su objetivo es una instancia EC2, cámbiela por un tipo de instancia más grande.

Información relacionada

Troubleshoot your Application Load Balancers

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año