503 Dienst nicht verfügbar – NoActiveTargets

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Videos

Weitere Informationen zu 503-Fehlern finden Sie in den folgenden Videos:

Video Beschreibung
Fehlerbehebung und Behebung des Fehlers 503-Dienst nicht verfügbar – NoActiveTargets Hier finden Sie Informationen zu folgenden Themen:
  • Die Bedeutung von Zielservern und Gesundheitsmonitoren
  • Fehlerbehebung und Behebung eines Echtzeitfehlers vom Typ „503 „Dienst nicht verfügbar“ – „NoActiveTargets“

Symptom

Die Clientanwendung empfängt den HTTP-Antwortstatuscode 503 mit der Meldung Service Nicht verfügbar und dem Fehlercode NoActiveTargets für die API-Proxy-Anfragen.

Fehlermeldung

Sie erhalten die folgende Fehlerantwort:

HTTP/1.1 503 Service Unavailable
  

In der HTTP-Antwort wird die folgende Fehlermeldung angezeigt:

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

Mögliche Ursachen

Die HTTP-Antwort 503 Service Nicht verfügbar mit dem Fehlercode NoActiveTargets wird in der Regel beobachtet, wenn Sie einen oder mehrere Zielserver in der Zielendpunktkonfiguration in Ihrem API-Proxy verwenden.

In der folgenden Tabelle sind die möglichen Ursachen für den Fehler 503 Service Nicht verfügbar mit dem Fehlercode NoActiveTargets aufgeführt:

Ursache Beschreibung Wer kann die Schritte zur Fehlerbehebung ausführen?
Zielserver ist deaktiviert Der in der Zielendpunktkonfiguration angegebene Zielserver ist deaktiviert. Nutzer von Edge Public und Private Cloud
Verbindungsfehler aufgrund falscher DNS-Auflösung Die DNS-Auflösung des Zielservers führte zu fehlerhaften IP-Adressen, die zu Verbindungsfehlern führten. Edge Private Cloud-Nutzer
Verbindungsfehler Netzwerk- oder Verbindungsprobleme verhindern, dass der Client eine Verbindung zum Server herstellt. Edge Private Cloud-Nutzer
Falscher Zielhost-Alias Der angegebene Zielserverhost ist falsch oder enthält unerwünschte Zeichen (z. B. Leerzeichen). Nutzer von Edge Public und Private Cloud
SSL-Handshakefehler Der TLS/SSL-Handshake zwischen Client und Server ist fehlgeschlagen. Nutzer von Edge Public und Private Cloud
Fehler bei der Systemdiagnose Systemdiagnosen, die zur Überprüfung des Zielservers konfiguriert sind, können aus irgendeinem Grund fehlschlagen. Edge Private Cloud-Nutzer

Ursache: Zielserver ist deaktiviert

Wenn alle in der Konfiguration des Zielendpunkts angegebenen Zielserver deaktiviert sind, erhalten Sie die Antwort 503 Service Nicht verfügbar mit dem Fehlercode NoActiveTargets.

Diagnose

  1. Bestimmen Sie den Namen des Zielservers, der in der spezifischen Zielendpunktkonfiguration des fehlerhaften API-Proxys verwendet wird, mithilfe einer der folgenden Methoden:
    1. Wenn nur ein Zielendpunkt vorhanden ist, prüfen Sie diesen speziellen Zielendpunkt.
    2. Wenn es mehrere Zielendpunkte gibt und Sie nicht sicher sind, bei welchem Zielserver deaktiviert wurde, gehen Sie so vor:
      1. Aktivieren Sie die Trace-Sitzung, führen Sie den API-Aufruf aus und reproduzieren Sie das Problem – 503-Dienst nicht verfügbar.
      2. Gehen Sie im Trace zu Zielanfragefluss gestartet und ermitteln Sie den Namen des Zielendpunkts wie unten gezeigt:
      3. Name des Zielendpunkts aus Trace ermitteln

  2. Nachdem Sie den Zielendpunkt identifiziert haben, rufen Sie den Namen des Zielservers aus der Konfiguration des Zielendpunkts ab, wie im folgenden Beispiel gezeigt:
    <TargetEndpoint name="default">>
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="demo-target" />
        </LoadBalancer>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
          

    Im Beispiel oben gibt es einen einzelnen Zielserver mit dem Namen demo-target.

  3. Rufen Sie die Definition für jeden der Zielserver ab, die im Zielendpunkt verwendet werden, mithilfe der Edge-Benutzeroberfläche oder des Edge-API-Aufrufs.

    Edge-Benutzeroberfläche

    So rufen Sie die Definition mithilfe der Edge-Benutzeroberfläche ab:

    1. Gehen Sie zu Admin > Environments > Target Servers (Verwaltung > Umgebungen > Zielserver).
    2. Wählen Sie die Umgebung aus, in der der Fehler auftritt.
    3. Suchen Sie nach einem bestimmten Zielservernamen, um die Definition des Zielservers zu erhalten.

      Wenn Sie beispielsweise den Zielservernamen demo-target eingeben, sehen Sie die entsprechende Definition:

      Name des Zielservers und Aktivierungs-/Deaktivierungsstatus

      Hier sehen Sie, dass der Zielserver demo-target einen Hostalias und Port # hat und SSL aktiviert ist. Der Zielserver selbst ist jedoch deaktiviert . Dies wird daran angezeigt, dass das Element AKTIV ausgegraut ist.

    Edge-API

    So rufen Sie die Definition mithilfe der Edge API ab:

    Verwenden Sie Get TargetServer API, um die Zielserverdefinition abzurufen.

    Ausgabe der Zielserverdefinition

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

    Die Apigee API-Ausgabe zeigt, dass das demo-target des Zielservers deaktiviert ist, da das Element IsEnabled auf „false“ gesetzt ist.

    Da der Zielserver deaktiviert ist, sendet der Message Processor sofort als Antwort an den Client 503 Service Nicht verfügbar mit dem Fehlercode NoActiveTargets.

Auflösung

Achten Sie darauf, dass die spezifischen Zielserver, die in der Zielendpunktkonfiguration Ihres API-Proxys verwendet werden, immer aktiviert sind.

Edge-Benutzeroberfläche

  1. Gehen Sie zu Admin > Environments > Target Servers (Verwaltung > Umgebungen > Zielserver).
  2. Wählen Sie die Umgebung aus, in der der Fehler auftritt.
  3. Suchen Sie nach dem Namen des Zielservers, um dessen Definition abzurufen.
  4. Wählen Sie den gewünschten Zielserver aus und klicken Sie auf Bearbeiten.
  5. Klicken Sie das Kästchen Aktiviert an.
  6. Klicken Sie auf Aktualisieren.

Edge-API

Aktualisieren Sie mit Update a Target Server API die Zielserverdefinition und achten Sie darauf, dass IsEnabled in der Nutzlast der API-Anfrage wie unten dargestellt auf true festgelegt ist:

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

Wenn das Problem weiterhin besteht, lesen Sie den Abschnitt Diagnoseinformationen müssen erfasst werden.

Probleme mithilfe des API-Monitoring diagnostizieren

Mit der API-Überwachung können Sie Problembereiche schnell isolieren, um Fehler-, Leistungs- und Latenzprobleme sowie deren Quelle zu diagnostizieren, z. B. Entwickleranwendungen, API-Proxys, Back-End-Ziele oder die API-Plattform.

Gehen Sie ein Beispielszenario durch, in dem gezeigt wird, wie Sie 5xx-Probleme mit Ihren APIs mithilfe von API Monitoring beheben können. Sie können beispielsweise eine Benachrichtigung einrichten, damit Sie informiert werden, wenn die Anzahl der Fehler vom Typ messaging.adaptors.http.flow.NoActiveTargets einen bestimmten Grenzwert überschreitet.

Erfassen von Diagnoseinformationen erforderlich

Wenn das Problem nach Befolgen der obigen Anleitung weiterhin besteht, stellen Sie die folgenden Diagnoseinformationen zusammen. Kontaktieren Sie sie und geben Sie sie für den Apigee-Support frei:

  1. Wenn Sie die öffentliche Cloud nutzen, geben Sie die folgenden Informationen an:
    1. Name der Organisation
    2. Name der Umgebung
    3. API-Proxy-Name
    4. Führen Sie den curl-Befehl aus, um den Fehler zu reproduzieren
    5. Ablaufverfolgungsdatei mit den Anfragen, bei denen der Fehler 503 „Dienst nicht verfügbar“ mit dem Fehlercode „NoActiveTargets“ ausgegeben wird
  2. Wenn Sie die private Cloud nutzen, geben Sie die folgenden Informationen an:
    1. Vollständige Fehlermeldung angezeigt
    2. Name der Umgebung
    3. API-Proxy-Bundle
    4. Ablaufverfolgungsdatei mit den Anfragen, bei denen der Fehler 503 „Dienst nicht verfügbar“ mit dem Fehlercode „NoActiveTargets“ ausgegeben wird
    5. NGINX-Zugriffslogs

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

    6. Message Processor-Protokolle

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