503 Служба недоступна — NoActiveTargets

Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee
X.info

Видео

Для получения дополнительной информации об ошибках 503 смотрите следующие видеоролики:

Видео Описание
Устранение неполадок и решение проблемы 503 Service Unavailable - NoActiveTargets Узнайте о следующем:
  • Важность целевых серверов и средств мониторинга состояния.
  • Устранение неполадок и решение проблемы с ошибкой 503 Service Unavailable - NoActiveTargets в режиме реального времени.

Симптом

Клиентское приложение получает HTTP-ответ со статусом 503 , сообщением " Сервис недоступен" и кодом ошибки NoActiveTargets для запросов к API-прокси.

Сообщение об ошибке

Вы увидите следующее сообщение об ошибке:

HTTP/1.1 503 Service Unavailable
  

В HTTP-ответе вы увидите следующее сообщение об ошибке:

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

Возможные причины

HTTP-ответ 503 Service Unavailable с кодом ошибки NoActiveTargets обычно наблюдается при использовании одного или нескольких целевых серверов в конфигурации целевой конечной точки в вашем API-прокси.

В таблице ниже перечислены возможные причины ошибки 503 Service Unavailable с кодом NoActiveTargets :

Причина Описание Кто может выполнить действия по устранению неполадок?
Целевой сервер отключен Указанный в конфигурации целевой конечной точки целевой сервер отключен. Пользователи публичных и частных облачных сервисов на периферии сети
Ошибки подключения из-за некорректного разрешения DNS. При разрешении DNS-запросов целевого сервера были получены некорректные IP-адреса, что привело к ошибкам подключения. Пользователи Edge Private Cloud
Ошибки подключения Проблемы с сетью или подключением к интернету препятствуют соединению клиента с сервером. Пользователи Edge Private Cloud
Неверный псевдоним целевого хоста Указанный целевой сервер неверен или содержит нежелательные символы (например, пробел). Пользователи публичных и частных облачных сервисов на периферии сети
Сбои при установлении SSL-соединения Соединение TLS/SSL между клиентом и сервером не удалось. Пользователи публичных и частных облачных сервисов на периферии сети
Сбои при проверке состояния здоровья Настроенные проверки работоспособности целевого сервера могут завершиться неудачей по какой-либо причине. Пользователи Edge Private Cloud

Причина: Целевой сервер отключен

Если все целевые серверы, указанные в конфигурации целевой конечной точки, отключены, вы получите ответ 503 Service Unavailable с кодом ошибки NoActiveTargets.

Диагноз

  1. Определите имя целевого сервера, используемого в конкретной конфигурации целевой конечной точки неисправного API-прокси, одним из следующих способов:
    1. Если существует единственная целевая конечная точка, то проверьте именно эту целевую конечную точку.
    2. Если целевых конечных точек несколько, и вы не уверены, на какой из них отключен целевой сервер, выполните следующие действия:
      1. Включите сеанс трассировки , выполните вызов API и воспроизведите проблему — ошибка 503 «Сервис недоступен».
      2. В трассировке перейдите к разделу «Запуск потока целевого запроса» и определите имя целевой конечной точки, как показано ниже:
      3. Determining target endpoint name from trace

  2. После определения целевой конечной точки получите имя целевого сервера из конфигурации целевой конечной точки, как показано в примере ниже:
    <TargetEndpoint name="default">>
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="demo-target" />
        </LoadBalancer>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
          

    В приведенном выше примере имеется единственный целевой сервер с именем demo-target .

  3. Получите определение для каждого из целевых серверов, используемых в целевой конечной точке, с помощью пользовательского интерфейса Edge или вызова API Edge.

    Edge UI

    Чтобы получить определение с помощью пользовательского интерфейса Edge:

    1. Перейдите в раздел Администрирование > Среды > Целевые серверы .
    2. Выберите конкретную среду, в которой наблюдается сбой.
    3. Чтобы получить определение целевого сервера, выполните поиск по конкретному имени целевого сервера.

      Например, введите имя целевого сервера demo-target , и вы увидите его определение, как показано ниже:

      Target server name and enabled/disabled status

      Обратите внимание, что целевой сервер demo-target имеет псевдоним хоста, номер порта, и SSL включен. Однако сам целевой сервер отключен, о чем свидетельствует неактивный (серый) элемент ENABLED .

    API Edge

    Чтобы получить определение с помощью Edge API:

    Используйте API Get TargetServer для получения определения целевого сервера.

    Вывод определения целевого сервера

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

    Вывод API Apigee показывает, что целевой сервер demo-target отключен , поскольку элемент IsEnabled имеет значение false.

    Поскольку целевой сервер отключен, обработчик сообщений немедленно отправит клиенту ответ с кодом ошибки 503 Service Unavailable и кодом ошибки NoActiveTargets .

Разрешение

Убедитесь, что указанные целевые серверы, используемые в конфигурации целевой конечной точки вашего API-прокси, всегда включены.

Edge UI

  1. Перейдите в раздел Администрирование > Среды > Целевые серверы .
  2. Выберите конкретную среду, в которой наблюдается сбой.
  3. Найдите конкретное имя целевого сервера, чтобы получить его определение.
  4. Выберите конкретный целевой сервер и нажмите «Редактировать» .
  5. Установите флажок «Включено» .
  6. Нажмите «Обновить» .

API Edge

Используйте API «Обновить целевой сервер» , чтобы обновить определение целевого сервера, и убедитесь, что параметр IsEnabled установлен в значение true в полезной нагрузке запроса API, как показано ниже:

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

Если проблема сохраняется, перейдите к разделу «Необходимо собрать диагностическую информацию» .

Диагностика проблем с помощью мониторинга API.

Мониторинг API позволяет быстро выявлять проблемные области для диагностики ошибок, проблем с производительностью и задержкой, а также определять их источник, например, приложения разработчиков, API-прокси, целевые серверы или API-платформу.

Рассмотрим пример сценария , демонстрирующий, как устранять проблемы 5xx в ваших API с помощью мониторинга API. Например, вы можете настроить оповещение, которое будет отправляться, когда количество ошибок messaging.adaptors.http.flow.NoActiveTargets превысит определенный порог.

Необходимо собрать диагностическую информацию.

Если проблема сохраняется даже после выполнения вышеуказанных инструкций, пожалуйста, соберите следующую диагностическую информацию. Свяжитесь со службой поддержки Apigee и предоставьте её:

  1. Если вы являетесь пользователем публичного облака, предоставьте следующую информацию:
    1. Название организации
    2. Название среды
    3. Имя API-прокси
    4. Выполните команду curl для воспроизведения ошибки.
    5. Файл трассировки, содержащий запросы с кодом ошибки 503 Service Unavailable и кодом ошибки NoActiveTargets.
  2. Если вы являетесь пользователем частного облака, предоставьте следующую информацию:
    1. Полное сообщение об ошибке.
    2. Название среды
    3. Пакет API-прокси
    4. Файл трассировки, содержащий запросы с кодом ошибки 503 Service Unavailable и кодом ошибки NoActiveTargets.
    5. Журналы доступа NGINX

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

    6. Журналы обработки сообщений

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