503 Dienst nicht verfügbar – NoActiveTargets

Sie lesen gerade die Apigee Edge -Dokumentation.
Zur Apigee X -Dokumentation.
info

Videos

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

Video Beschreibung
503 Service Unavailable – NoActiveTargets beheben Informationen zu folgenden Themen:
  • Bedeutung von Zielservern und Systemdiagnosen
  • Fehlerbehebung bei einem 503 Service Unavailable – NoActiveTargets-Fehler in Echtzeit

Symptom

Die Clientanwendung erhält den HTTP-Antwortstatuscode 503 mit der Meldung Service Unavailable und dem Fehlercode NoActiveTargets für die API-Proxyanfragen.

Fehlermeldung

Sie sehen die folgende Fehlermeldung:

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 Unavailable mit dem Fehlercode NoActiveTargets wird in der Regel angezeigt wenn Sie in der Zielendpunktkonfiguration Ihres API-Proxys einen oder mehrere Zielserver verwenden.

In der folgenden Tabelle sind die möglichen Ursachen für die Antwort 503 Service Unavailable 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. Edge Public und Private Cloud-Nutzer
Verbindungsfehler aufgrund falscher DNS-Auflösung Die DNS-Auflösung des Zielservers hat zu fehlerhaften IP-Adressen geführt, die zu Verbindungsfehlern führen. 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. ein Leerzeichen). Edge Public und Private Cloud-Nutzer
Fehler bei SSL-Handshake Der TLS/SSL-Handshake zwischen Client und Server ist fehlgeschlagen. Edge Public und Private Cloud-Nutzer
Fehler bei der Systemdiagnose Die Systemdiagnosen, die für die Überprüfung des Status des Zielservers konfiguriert sind, können aus irgendeinem Grund fehlschlagen. Edge Private Cloud-Nutzer

Ursache: Zielserver ist deaktiviert

Wenn alle in der Zielendpunktkonfiguration angegebenen Zielserver deaktiviert sind, erhalten Sie die Antwort 503 Service Unavailable mit dem Fehlercode NoActiveTargets.

Diagnose

  1. Ermitteln Sie den Namen des Zielservers, der in der spezifischen Zielendpunkt Konfiguration des fehlerhaften API-Proxys verwendet wird, auf eine der folgenden Arten:
    1. Wenn es nur einen Zielendpunkt gibt, prüfen Sie diesen.
    2. Wenn es mehrere Zielendpunkte gibt und Sie nicht sicher sind, bei welchem der Zielserver deaktiviert ist, gehen Sie so vor:
      1. Aktivieren Sie die Trace-Sitzung, führen Sie den API-Aufruf aus und reproduzieren Sie das Problem – 503 Service Unavailable.
      2. Gehen Sie im Trace zu Target Request Flow Started und ermitteln Sie den Namen des Zielendpunkts wie unten gezeigt:
      3. Name des Zielendpunkts aus dem Trace ermitteln

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

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

  3. Rufen Sie die Definition für jeden der in der Zielendpunktkonfiguration verwendeten Zielserver über die Edge-Benutzeroberfläche oder einen Edge-API-Aufruf ab.

    Edge-Benutzeroberfläche

    So rufen Sie die Definition über die Edge-Benutzeroberfläche ab:

    1. Gehen Sie zu Admin > Umgebungen > Zielserver.
    2. Wählen Sie die Umgebung aus, in der der Fehler auftritt.
    3. Suchen Sie nach dem Namen des Zielservers, um die Definition des Zielservers abzurufen.

      Geben Sie beispielsweise den Namen des Zielservers demo-target ein. Die Definition wird wie unten gezeigt angezeigt:

      Name des Zielservers und Status (aktiviert/deaktiviert)

      Hier sehen Sie, dass der Zielserver demo-target einen Host-Alias und eine Portnummer hat und SSL aktiviert ist. Der Zielserver selbst ist jedoch deaktiviert , was daran zu erkennen ist, dass das Element ENABLED ausgegraut ist.

    Edge API

    So rufen Sie die Definition über die Edge API ab:

    Verwenden Sie die Get TargetServer API, um die Definition des Zielservers 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 der Zielserver demo-target deaktiviert ist, da das Element IsEnabled auf „false“ gesetzt ist.

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

Auflösung

Achten Sie darauf, dass die in der Zielendpunktkonfiguration Ihres API Proxys verwendeten Zielserver immer aktiviert sind.

Edge-Benutzeroberfläche

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

Edge API

Verwenden Sie die Update a Target Server API, um die Definition des Zielservers zu aktualisieren und sicherzustellen, dass IsEnabled in der Anfrage-Nutzlast der API auf true gesetzt ist, wie unten gezeigt:

<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 unten den Abschnitt Erfassen von Diagnoseinformationen erforderlich.

Probleme mit API-Monitoring diagnostizieren

API Monitoring ermöglicht Ihnen, Problembereiche schnell zu isolieren, um Fehler, Leistungs- und Latenzprobleme sowie deren Quelle wie Entwickler-Apps, API-Proxys, Back-End-Ziele oder die API-Plattform zu diagnostizieren.

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

Erfassen von Diagnoseinformationen erforderlich

Wenn das Problem auch nach Befolgen der obigen Anweisungen weiterhin besteht, sammeln Sie die folgenden Diagnoseinformationen. Wenden Sie sich an den Apigee-Support und teilen Sie ihm die Informationen mit:

  1. Wenn Sie ein Public Cloud-Nutzer sind, geben Sie die folgenden Informationen an:
    1. Name der Organisation
    2. Umgebungsname
    3. Name des API-Proxys
    4. Vollständiger cURL-Befehl zum Reproduzieren des Fehlers
    5. Trace-Datei mit den Anfragen mit dem Fehler „503 Service Unavailable“ und dem Fehlercode „NoActiveTargets“
  2. Wenn Sie ein Private Cloud-Nutzer sind, geben Sie die folgenden Informationen an:
    1. Vollständige Fehlermeldung
    2. Umgebungsname
    3. API-Proxy-Bundle
    4. Trace-Datei mit den Anfragen mit dem Fehler „503 Service Unavailable“ und dem Fehlercode „NoActiveTargets“
    5. NGINX-Zugriffsprotokolle

      (/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)