503 Usługa niedostępna – brak aktywnych celów

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Filmy

Więcej informacji o błędach 503 znajdziesz w filmach:

Wideo Opis
Rozwiązywanie problemów z komunikatem 503 (Usługa niedostępna – NoActiveTargets) Dowiedz się więcej o tych kwestiach:
  • Znaczenie serwerów docelowych i monitorów zdrowia
  • Rozwiązywanie problemów z błędem 503 Service (niedostępny w czasie rzeczywistym) – błąd NoActiveTargets

Krótki opis problemu

Aplikacja kliencka otrzymuje kod stanu odpowiedzi HTTP 503 z kodem stanu komunikat Service Unavailable (Usługa niedostępna) i kod błędu NoActiveTargets (NoActiveTargets). dla żądań serwera proxy interfejsu API.

Komunikat o błędzie

Wyświetli się następująca odpowiedź o błędzie:

HTTP/1.1 503 Service Unavailable
  

W odpowiedzi HTTP wyświetli się następujący komunikat o błędzie:

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

Możliwe przyczyny

Zwykle występuje odpowiedź HTTP 503 Service Unavailable (usługa niedostępna) z kodem błędu NoActiveTargets. gdy używasz co najmniej 1 serwera docelowego w konfiguracji docelowego punktu końcowego na serwerze proxy interfejsu API.

W tabeli poniżej znajdziesz możliwe przyczyny odpowiedzi 503 Service Unavailable (Usługa niedostępna – niedostępna) z kodem błędu NoActiveTargets:

Przyczyna Opis Kto może wykonywać czynności związane z rozwiązywaniem problemów
Serwer docelowy jest wyłączony Serwer docelowy określony w konfiguracji docelowego punktu końcowego jest wyłączony. Użytkownicy chmury publicznej i prywatnej Edge
Błędy połączenia z powodu nieprawidłowego rozpoznawania nazw DNS Rozpoznawanie nazw DNS serwera docelowego spowodowało nieprawidłowe adresy IP, które doprowadziły do błędów połączenia. Użytkownicy Edge Private Cloud
Błędy połączeń Problemy z siecią lub połączeniem uniemożliwiają klientowi połączenie się z serwerem. Użytkownicy Edge Private Cloud
Nieprawidłowy alias hosta docelowego Podany host serwera docelowego jest nieprawidłowy lub zawiera niechciane znaki (np. spację). Użytkownicy chmury publicznej i prywatnej Edge
Błędy uzgadniania połączenia SSL Nie udało się nawiązać połączenia TLS/SSL między klientem a serwerem. Użytkownicy chmury publicznej i prywatnej Edge
Nieudane kontroli stanu Kontrola stanu skonfigurowana pod kątem sprawdzania stanu serwera docelowego może z jakiegoś powodu zakończyć się niepowodzeniem. Użytkownicy Edge Private Cloud

Przyczyna: serwer docelowy jest wyłączony

Jeśli wszystkie serwery docelowe określone w konfiguracji docelowego punktu końcowego są wyłączone: otrzyma odpowiedź 503 Service Unavailable (usługa niedostępna) z kodem błędu NoActiveTargets.

Diagnostyka

  1. Określ nazwę serwera docelowego używanego w konkretnym docelowym punkcie końcowym Skonfiguruj serwer proxy interfejsu API z błędem, korzystając z jednego z tych sposobów:
    1. Jeśli istnieje 1 docelowy punkt końcowy, sprawdź ten konkretny docelowy punkt końcowy.
    2. Jeśli masz wiele docelowych punktów końcowych i nie wiesz, który z nich wyłączył serwer docelowy, wykonaj te czynności:
      1. Włącz sesję śledzenia, wykonaj wywołanie interfejsu API i odtwórz problem – 503 Service (Usługa niedostępna).
      2. Na podstawie logu czasu przejdź do sekcji Target Request Przepływ uruchomiony i określ nazwę docelowego punktu końcowego, jak pokazano poniżej:
      3. Określanie nazwy docelowego punktu końcowego na podstawie logu czasu

  2. Gdy określisz docelowy punkt końcowy, pobierz nazwę serwera docelowego z konfiguracji docelowego punktu końcowego, jak pokazano w tym przykładzie:
    <TargetEndpoint name="default">>
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="demo-target" />
        </LoadBalancer>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
          

    W powyższym przykładzie mamy jeden serwer docelowy o nazwie demo-target.

  3. Pobierz definicję każdego z serwerów docelowych używanych w docelowym punkcie końcowym za pomocą wywołania interfejsu Edge UI lub Edge API.

    Interfejs Edge

    Aby pobrać definicję za pomocą interfejsu Edge:

    1. Wybierz kolejno Administracja > Środowiska > Serwery docelowe.
    2. Wybierz konkretne środowisko, w którym występuje błąd.
    3. Wyszukaj nazwę konkretnego serwera docelowego, aby uzyskać jego definicję.

      Jeśli na przykład wpiszesz nazwę serwera docelowego demo-target, zobaczysz jego definicję w następujący sposób:

      Nazwa serwera docelowego oraz stan (włączone/wyłączone)

      Zwróć uwagę, że element demo-target serwera docelowego ma alias hosta, port # i włączony protokół SSL. Sam serwer docelowy jest jednak wyłączony , na co wskazuje element ENABLED wyszarzony.

    Interfejs Edge API

    Aby uzyskać definicję przy użyciu interfejsu Edge API:

    Użyj instrukcji Pobierz interfejs TargetServer API, aby uzyskać definicję serwera docelowego.

    Dane wyjściowe definicji serwera docelowego

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

    Dane wyjściowe interfejsu Apigee API wskazują, że parametr demo-target na serwerze docelowym jest wyłączony bo element IsEnabled ma wartość Fałsz.

    Ponieważ serwer docelowy jest wyłączony, procesor komunikatów wysyła kod 503 Service niedostępna z kodem błędu NoActiveTargets od razu jako odpowiedź do klienta.

Rozdzielczość

Sprawdź, czy konkretne serwery docelowe używane w konfiguracji docelowego punktu końcowego interfejsu API Serwer proxy jest zawsze włączony.

Interfejs Edge

  1. Wybierz kolejno Administracja > Środowiska > Serwery docelowe.
  2. Wybierz konkretne środowisko, w którym występuje błąd.
  3. Wyszukaj nazwę konkretnego serwera docelowego, aby uzyskać jej definicję.
  4. Wybierz konkretny serwer docelowy i kliknij Edytuj.
  5. Zaznacz pole wyboru Włączone.
  6. Kliknij Aktualizuj.

Interfejs Edge API

Użyj instrukcji Zaktualizuj interfejs API serwera docelowego, aby zaktualizować definicję serwera docelowego i upewnić się, że Parametr IsEnabled ma wartość true w ładunku żądania interfejsu API, jak pokazano poniżej:

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

Jeśli problem będzie nadal występował, wejdź na Wymagane jest zbieranie informacji diagnostycznych.

Diagnozowanie problemów za pomocą monitorowania interfejsów API

Monitorowanie interfejsów API umożliwia wyizolowanie problemów szybko diagnozować problemy z błędami, wydajnością i opóźnieniami oraz ich źródła, na przykład aplikacji, serwerów proxy API, celów backendu czy platformy API.

Przeanalizuj przykładowy scenariusz , który pokazuje, jak rozwiązywać problemy z kodem 5xx z interfejsami API przy użyciu monitorowania interfejsów API. Przykład: możesz skonfigurować alert, aby otrzymywać powiadomienia, gdy: messaging.adaptors.http.flow.NoActiveTargets przekracza określony próg.

Musi zbierać informacje diagnostyczne

Jeśli po wykonaniu powyższych czynności problem nie ustąpi, zbierz: informacje diagnostyczne. Skontaktuj się z nimi i udostępnij je zespołowi pomocy Apigee:

  1. Jeśli jesteś użytkownikiem chmury publicznej, podaj te informacje:
    1. Nazwa organizacji
    2. Nazwa środowiska
    3. Nazwa serwera proxy interfejsu API
    4. Wykonaj polecenie curl, aby odtworzyć błąd
    5. Plik śledzenia zawierający żądania z błędem 503 Service Unavailable (usługa niedostępna z kodem błędu NoActiveTargets)
  2. Jeśli jesteś użytkownikiem Private Cloud, podaj te informacje:
    1. Zaobserwowano pełny komunikat o błędzie
    2. Nazwa środowiska
    3. Pakiet serwera proxy interfejsu API
    4. Plik śledzenia zawierający żądania z błędem 503 Service Unavailable (usługa niedostępna z kodem błędu NoActiveTargets)
    5. Logi dostępu NGINX

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

    6. Logi procesora wiadomości

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