503 Service AVAILABLE - NoActiveTargets

Estás viendo la documentación de Apigee Edge.
Ir a la documentación de Apigee X.
info

Videos

Mira los siguientes videos para obtener más información sobre los errores 503:

Video Descripción
Soluciona problemas y resuelve el error 503 Service Unavailable - NoActiveTargets Obtén información sobre lo siguiente:
  • Importancia de los servidores de destino y los supervisores de estado
  • Solución de problemas y resolución de un error en tiempo real 503 Service Unavailable - NoActiveTargets

Síntoma

La aplicación cliente recibe el código de estado de respuesta HTTP 503 con el mensaje Service Unavailable y el código de error NoActiveTargets para las solicitudes de proxy de API.

Mensaje de error

Verás la siguiente respuesta de error:

HTTP/1.1 503 Service Unavailable
  

Verás el siguiente mensaje de error en la respuesta HTTP:

{
   "fault": {
      "faultstring": "The Service is temporarily unavailable",
      "detail": {
           "errorcode": "messaging.adaptors.http.flow.NoActiveTargets"
       }
    }
}
  

Causas posibles

Por lo general, la respuesta HTTP 503 Service Unavailable con el código de error NoActiveTargets se observa cuando usas uno o más servidores de destino en la configuración del extremo de destino en tu proxy de API.

En la siguiente tabla, se enumeran las posibles causas de la respuesta 503 Service Unavailable con el código de error NoActiveTargets:

Causa Descripción Quién puede realizar los pasos de solución de problemas
Servidor de destino inhabilitado El servidor de destino especificado en la configuración del extremo de destino está inhabilitado. Usuarios de la nube pública y privada de Edge
Errores de conexión debido a una resolución de DNS incorrecta La resolución de DNS del servidor de destino dio como resultado direcciones IP incorrectas que generan errores de conexión. Usuarios de la nube privada de Edge
Errores de conexión Los problemas de red o conectividad impiden que el cliente se conecte al servidor. Usuarios de la nube privada de Edge
Alias de host de destino incorrecto El host del servidor de destino especificado es incorrecto o tiene caracteres no deseados (como un espacio). Usuarios de la nube pública y privada de Edge
Errores en el protocolo de enlace SSL El protocolo de enlace TLS/SSL falló entre el cliente y el servidor. Usuarios de la nube pública y privada de Edge
Errores en la verificación de estado Las verificaciones de estado configuradas para verificar el estado del servidor de destino pueden fallar por algún motivo. Usuarios de la nube privada de Edge

Causa: El servidor de destino está inhabilitado

Si todos los servidores de destino especificados en la configuración del extremo de destino están inhabilitados, entonces obtendrás la respuesta 503 Service Unavailable con el código de error NoActiveTargets.

Diagnóstico

  1. Determina el nombre del servidor de destino que se usa en la configuración de extremo de destino específica del proxy de API con errores de una de las siguientes maneras:
    1. Si hay un solo extremo de destino, verifica ese extremo de destino en particular.
    2. Si hay varios extremos de destino y no estás seguro de cuál tiene el servidor de destino inhabilitado, sigue los pasos que se indican a continuación:
      1. Habilita la sesión de seguimiento, realiza la llamada a la API y reproduce el problema: 503 Service Unavailable.
      2. En el seguimiento, navega a Target Request Flow Started y determina el nombre del extremo de destino como se muestra a continuación:
      3. Cómo determinar el nombre del extremo de destino a partir del registro

  2. Una vez que hayas identificado el extremo de destino, obtén el nombre del servidor de destino que se usa en la configuración del extremo de destino, como se muestra en el siguiente ejemplo:
    <TargetEndpoint name="default">>
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="demo-target" />
        </LoadBalancer>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
          

    En el ejemplo anterior, hay un solo servidor de destino llamado demo-target.

  3. Obtén la definición de cada uno de los servidores de destino que se usan en el extremo de destino con la IU de Edge o la llamada a la API de Edge.

    IU de Edge

    Para obtener la definición con la IU de Edge, haz lo siguiente:

    1. Navega a Administración > Entornos > Servidores de destino.
    2. Selecciona el entorno específico en el que ves la falla.
    3. Busca el nombre del servidor de destino específico para obtener la definición del servidor de destino.

      Por ejemplo, escribe el nombre del servidor de destino demo-target y verás su definición como se muestra a continuación:

      Nombre del servidor de destino y estado habilitado/inhabilitado

      Observa que el servidor de destino demo-target tiene un alias de host, un número de puerto y SSL habilitado. Sin embargo, el servidor de destino está inhabilitado, lo que se indica con el elemento ENABLED atenuado.

    API de Edge

    Para obtener la definición con la API de Edge, haz lo siguiente:

    Usa la API de Get TargetServer para obtener la definición del servidor de destino.

    Resultado de la definición del servidor de destino

    <TargetServer name="demo-target">
      <Host>demo-target.apigee.net</Host>
      <Port>443</Port>
      <IsEnabled>false</IsEnabled>
      <SSLInfo>
          <Enabled>true</Enabled>
      </SSLInfo>
    </TargetServer>
              

    El resultado de la API de Apigee muestra que el servidor de destino demo-target está inhabilitado , ya que el elemento IsEnabled está configurado como falso.

    Como el servidor de destino está inhabilitado, el Message Processor enviará 503 Service Unavailable con el código de error NoActiveTargets de inmediato como respuesta al cliente.

Solución

Asegúrate de que los servidores de destino específicos que se usan en la configuración del extremo de destino de tu proxy de API estén siempre habilitados.

IU de Edge

  1. Navega a Administración > Entornos > Servidores de destino.
  2. Selecciona el entorno específico en el que ves la falla.
  3. Busca el nombre del servidor de destino específico para obtener su definición.
  4. Selecciona el servidor de destino específico y, luego, haz clic en Editar.
  5. Selecciona la casilla de verificación Habilitado.
  6. Haz clic en Actualizar.

API de Edge

Usa la API de Update a Target Server para actualizar la definición del servidor de destino y asegúrate de que IsEnabled esté configurado como true en la carga útil de la solicitud de la API, como se muestra a continuación:

<TargetServer name="demo-target">
  <Host>demo-target.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
      <Enabled>true</Enabled>
  </SSLInfo>
</TargetServer>
        

Si el problema persiste, consulta Recopila información de diagnóstico.

Diagnostica problemas con la supervisión de API

La supervisión de API te permite aislar las áreas con problemas rápidamente para diagnosticar problemas de errores, rendimiento y latencia, y su fuente, como apps para desarrolladores, proxies de API, destinos de backend o la plataforma de API.

Sigue un ejemplo que muestra cómo solucionar problemas de 5xx con tus APIs mediante la supervisión de API. Por ejemplo, es posible que desees configurar una alerta para recibir una notificación cuando la cantidad de messaging.adaptors.http.flow.NoActiveTargets fallas supere un umbral determinado.

Se debe recopilar información de diagnóstico

Si el problema persiste incluso después de seguir las instrucciones anteriores, recopila la siguiente información de diagnóstico. Comunícate con el equipo de asistencia de Apigee y compártela:

  1. Si eres usuario de la nube pública, proporciona la siguiente información:
    1. Nombre de la organización
    2. Nombre del entorno
    3. Nombre del proxy de API
    4. Comando curl completo para reproducir el error
    5. Archivo de seguimiento que contiene las solicitudes con 503 Service Unavailable con el código de error NoActiveTargets
  2. Si eres usuario de la nube privada, proporciona la siguiente información:
    1. Mensaje de error completo observado
    2. Nombre del entorno
    3. Paquete de proxy de API
    4. Archivo de seguimiento que contiene las solicitudes con 503 Service Unavailable con el código de error NoActiveTargets
    5. Registros de acceso de NGINX

      (/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log)

    6. Registros de Message Processor

      (/opt/apigee/var/log/edge-message-processor/logs/system.log)