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

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Filmy

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

Wideo Opis
Rozwiąż problemy z błędem 503 (Usługa niedostępna) – NoActiveTarget Dowiedz się więcej o:
  • Znaczenie serwerów docelowych i monitorów stanu
  • Rozwiązywanie problemów z dostępem do usługi 503 w czasie rzeczywistym (Usługa niedostępna) – błąd NoActiveTarget

Krótki opis problemu

Aplikacja kliencka otrzymuje kod stanu odpowiedzi HTTP 503 z komunikatem Usługa niedostępna i kodem błędu NoActiveTarget dla żądań serwera proxy interfejsu API.

Komunikat o błędzie

Zobaczysz taką odpowiedź o błędzie:

HTTP/1.1 503 Service Unavailable
  

W odpowiedzi HTTP pojawi się ten komunikat o błędzie:

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

Możliwe przyczyny

Gdy używasz co najmniej jednego serwera docelowego w konfiguracji docelowego punktu końcowego w serwerze proxy interfejsu API, zwykle obserwowany jest komunikat HTTP 503 Service AVAILABLE (Usługa niedostępna) z kodem błędu NoActiveTarget (Nieaktywnych celów).

W tabeli poniżej znajdziesz możliwe przyczyny błędu 503 Service available z kodem błędu NoActiveTarget (niedostępnych):

Przyczyna Opis Kto może rozwiązywać problemy
Serwer docelowy jest wyłączony Serwer docelowy określony w konfiguracji docelowego punktu końcowego jest wyłączony. Użytkownicy chmury publicznej i prywatnej usługi 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 prowadziły do błędów połączenia. Użytkownicy chmury Private Cloud
Błędy połączeń Problemy z siecią lub połączeniem uniemożliwiają klientowi nawiązanie połączenia z serwerem. Użytkownicy chmury Private Cloud
Nieprawidłowy alias hosta docelowego Podany host serwera docelowego jest nieprawidłowy lub zawiera niechciane znaki (takie jak spacja). Użytkownicy chmury publicznej i prywatnej usługi Edge
Nieudane uzgadnianie połączenia SSL Nie udało się nawiązać połączenia TLS/SSL między klientem a serwerem. Użytkownicy chmury publicznej i prywatnej usługi Edge
Błędy kontroli stanu Kontrole stanu skonfigurowane pod kątem sprawdzania stanu serwera docelowego mogą się nie powieść z jakiegoś powodu. Użytkownicy chmury Private Cloud

Przyczyna: serwer docelowy jest wyłączony

Jeśli wszystkie serwery docelowe określone w konfiguracji docelowego punktu końcowego są wyłączone, otrzymasz odpowiedź 503 Service AVAILABLE (Niedostępna usługa) z kodem błędu NoActiveTarget (Nieaktywnych celów).

Diagnostyka

  1. Ustal nazwę serwera docelowego używanego w konkretnej konfiguracji docelowego punktu końcowego niedziałającego serwera proxy interfejsu API, korzystając z jednego z tych sposobów:
    1. Jeśli istnieje jeden docelowy punkt końcowy, sprawdź ten konkretny 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, wywołaj interfejs API i odtwórz problem – błąd 503 Service Niedostępne.
      2. Z poziomu logu czasu przejdź do sekcji Docelowy proces żądania rozpoczęto i określ nazwę docelowego punktu końcowego, jak pokazano poniżej:
      3. Ustalam nazwę docelowego punktu końcowego ze logu czasu

  2. Po zidentyfikowaniu docelowego punktu końcowego pobierz nazwę serwera docelowego używaną w konfiguracji docelowego punktu końcowego, tak jak w tym przykładzie:
    <TargetEndpoint name="default">>
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="demo-target" />
        </LoadBalancer>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
          

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

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

    Interfejs Edge

    Aby uzyskać definicję za pomocą interfejsu Edge:

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

      Na przykład po wpisaniu nazwy serwera docelowego demo-target zostanie wyświetlona definicja taka jak poniżej:

      Nazwa serwera docelowego i stan włączenia/wyłączenia

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

    Interfejs API Edge

    Aby uzyskać definicję za pomocą interfejsu Edge API:

    Użyj interfejsu Get TargetServer API, by 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 element demo-target serwera docelowego jest wyłączony, ponieważ element IsEnabled ma wartość false (fałsz).

    Ponieważ serwer docelowy jest wyłączony, podmiot przetwarzający wiadomości wyśle natychmiast w odpowiedzi na klienta komunikat 503 Service available (Usługa niedostępna) z kodem błędu NoActiveTarget (Niedostępny).

Rozdzielczość

Sprawdź, czy określone serwery docelowe używane w konfiguracji docelowego punktu końcowego Twojego serwera proxy interfejsu API są zawsze włączone.

Interfejs Edge

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

Interfejs API Edge

Użyj interfejsu Update a Target Server API, aby zaktualizować definicję serwera docelowego i sprawdź, czy w ładunku żądania interfejsu API IsEnabled ma wartość true:

<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 nadal występuje, przejdź do Must Gather Diagnostic Information (Wymagane zbieranie informacji diagnostycznych).

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

Monitorowanie interfejsów API umożliwia szybkie wyodrębnianie problematycznych obszarów w celu diagnozowania problemów dotyczących błędów, wydajności i opóźnień oraz ich źródeł, takich jak aplikacje dla programistów, serwery proxy interfejsów API, cele backendu czy platforma API.

Przejrzyj przykładowy scenariusz pokazujący, jak rozwiązywać problemy 5xx z interfejsami API za pomocą API Monitoring. Możesz na przykład skonfigurować alert, aby otrzymywać powiadomienia, gdy liczba błędów w messaging.adaptors.http.flow.NoActiveTargets przekroczy określony próg.

Musisz zebrać informacje diagnostyczne

Jeśli problem nie ustąpi mimo wykonania powyższych instrukcji, zbierz poniższe informacje diagnostyczne. Skontaktuj się z zespołem pomocy Apigee i udostępnij je:

  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 kodem 503 Service Niedostępne z kodem błędu NoActiveTarget
  2. Jeśli jesteś użytkownikiem Private Cloud, podaj te informacje:
    1. Zarejestrowano pełny komunikat o błędzie
    2. Nazwa środowiska
    3. Pakiet proxy API
    4. Plik śledzenia zawierający żądania z kodem 503 Service Niedostępne z kodem błędu NoActiveTarget
    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)