Solución de problemas del equilibrador de carga clásico: errores de HTTP - ELB

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Solución de problemas del equilibrador de carga clásico: errores de HTTP

El método HTTP (también denominado verbo) especifica la acción que se va a realizar en el recurso que recibe una solicitud HTTP. Los métodos estándar para las solicitudes HTTP se definen en RFC 2616, Method Definitions. Los métodos estándar son GET, POST, PUT, HEAD y OPTIONS. Algunas aplicaciones web requieren (y, en ocasiones, introducen) métodos que son extensiones de métodos HTTP/1.1. Algunos ejemplos habituales de métodos HTTP extendidos son PATCH, REPORT, MKCOL, PROPFIND, MOVE y LOCK. ELB acepta todos los métodos HTTP estándar y no estándar.

Las solicitudes y respuestas HTTP utilizan campos de encabezado para enviar información sobre los mensajes HTTP. Los campos de encabezados son pares nombre-valor separados por signos de dos puntos, separados a su vez por un retorno de carro (CR) y un salto de línea (LF). Un conjunto estándar de campos de encabezado HTTP se define en RFC 2616, Message Headers. Para obtener más información, consulte Encabezados HTTP y equilibradores de carga clásicos.

Cuando un equilibrador de carga recibe una solicitud HTTP, comprueba si hay solicitudes con un formato incorrecto y también la longitud del método. La longitud total del método de una solicitud HTTP a un equilibrador de carga no debe ser superior a 127 caracteres. Si la solicitud HTTP supera ambas comprobaciones, el balanceador de cargas envía la solicitud a la instancia. EC2 Si el campo de método de la solicitud no tiene el formato correcto, el equilibrador de carga responde con un error HTTP 400: BAD_REQUEST. Si la longitud del método en la solicitud supera los 127 caracteres, el equilibrador de carga responde con un error HTTP 405: METHOD_NOT_ALLOWED.

La EC2 instancia procesa una solicitud válida implementando el método en la solicitud y enviando una respuesta al cliente. Las instancias deben estar configuradas de tal forma que controlen los métodos admitidos y no admitidos.

A continuación se muestran los mensajes de error devueltos por el equilibrador de carga, sus posibles causas y las medidas que puede adoptar para resolver los problemas.

HTTP 400: BAD_REQUEST

Descripción: indica que el cliente envió una solicitud incorrecta.

Causa 1: el cliente envió una solicitud incorrecta que no se ajusta a las especificaciones de HTTP. Por ejemplo, una solicitud no puede contener espacios en la URL.

Causa 2: el cliente utilizó el método HTTP CONNECT, que ELB no admite.

Solución: conéctese directamente a la instancia y capture los detalles de la solicitud del cliente. Revise los encabezados y la dirección URL para comprobar si el formato de las solicitudes es correcto. Compruebe que la solicitud cumple las especificaciones de HTTP. Verifique que se no se utilice HTTP CONNECT.

HTTP 405: METHOD_NOT_ALLOWED

Descripción: indica que la longitud del método no es válida.

Causa: la longitud del método en el encabezado de la solicitud supera los 127 caracteres.

Solución: compruebe la longitud del método.

HTTP 408: Request timeout

Descripción: indica que el cliente ha cancelado la solicitud o no ha podido enviar una solicitud completa.

Causa 1: una interrupción de la red o una construcción incorrecta de la solicitud; por ejemplo, el encabezado está parcialmente formado; el tamaño del contenido especificado no coincide con el tamaño del contenido real transmitido; etc.

Solución 1: revise el código que realiza la solicitud y pruebe a enviarlo directamente a las instancias registradas (o a un entorno de desarrollo/pruebas), donde disponga de mayor control para inspeccionar la solicitud en sí.

Causa 2: la conexión al cliente está cerrada (el equilibrador de carga no pudo enviar una respuesta).

Solución 2: verifique que el cliente no cierre la conexión antes de que se envíe la respuesta; para ello, utilice un rastreador de paquetes en la máquina que realiza la solicitud.

HTTP 502: Bad gateway

Descripción: indica que el equilibrador de carga no ha podido analizar la respuesta enviada desde una instancia registrada.

Causa: el formato de la respuesta procedente de la instancia es incorrecto o puede haber un problema con el equilibrador de carga.

Solución: verifique que la respuesta enviada desde la instancia cumple las especificaciones de HTTP. Visite el Centro de AWS Support para obtener asistencia.

HTTP 503: Service unavailable

Descripción: indica que el equilibrador de carga o las instancias registradas están provocando el error.

Causa 1: el equilibrador de carga no dispone de suficiente capacidad para controlar la solicitud.

Solución 1: el problema debería ser transitorio y no durar más de unos minutos. Si persiste, visite el Centro de AWS Support para obtener asistencia.

Causa 2: hay instancias no registradas.

Solución 2: registre al menos una instancia en cada zona de disponibilidad en la que el equilibrador de carga deba responder según su configuración. Verifíquelo consultando las HealthyHostCount métricas que aparecen en CloudWatch. Si no puede garantizar que haya una instancia registrada en cada zona de disponibilidad, recomendamos habilitar el balanceo de carga entre zonas. Para obtener más información, consulte Configuración del equilibrio de carga entre zonas en el equilibrador de carga clásico.

Causa 3: no hay instancias con estado correcto.

Solución 3: asegúrese de que haya instancias en buen estado en cada zona de disponibilidad en la que el equilibrador de carga deba responder según su configuración. Para comprobarlo, consulte la métrica HealthyHostCount.

Causa 4: la cola de sobrecarga está llena.

Solución 4: asegúrese de que las instancias dispongan de capacidad suficiente para administrar la tasa de solicitudes. Para comprobarlo, consulte la métrica SpilloverCount.

HTTP 504: Gateway timeout

Descripción: indica que el equilibrador de carga ha cerrado una conexión porque no se completó una solicitud dentro del tiempo de inactividad.

Causa 1: la aplicación tarda más en responder que el tiempo de inactividad configurado.

Solución 1: supervise las métricas HTTPCode_ELB_5XX y Latency. Si se produce un aumento de estas métricas, puede deberse a que la aplicación no responde antes de que transcurra el tiempo de inactividad. Para obtener más información sobre las solicitudes que están agotando el tiempo de espera, habilita los registros de acceso en el balanceador de cargas y revisa los 504 códigos de respuesta de los registros generados por el ELB. Si es necesario, puede aumentar su capacidad o aumentar el tiempo de inactividad configurado de manera que las operaciones largas (como la carga de archivos de gran tamaño) pueden completarse. Para obtener más información, consulta Configuración del tiempo de inactividad de conexión del equilibrador de carga clásico Cómo solucionar problemas de alta latencia del ELB.

Causa 2: las instancias registradas cierran la conexión al ELB.

Solución 2: habilite la configuración de mantenimiento activo en sus EC2 instancias y asegúrese de que el tiempo de espera de mantenimiento activo sea mayor que el tiempo de espera de inactividad del balanceador de cargas.