503 Servizio non disponibile - NoActiveTarget

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Video

Per ulteriori informazioni sugli errori 503, guarda i seguenti video:

Video Descrizione
Risolvere i problemi relativi al servizio 503 non disponibile - NoActiveTarget Scopri di più su quanto segue:
  • L’importanza dei server di destinazione e dei monitor di integrità
  • Risoluzione dei problemi di un servizio 503 non disponibile in tempo reale - Errore NoActiveTarget

Sintomo

L'applicazione client riceve il codice di stato della risposta HTTP 503 con la il messaggio Servizio non disponibile e il codice di errore NoActiveTarget per le richieste proxy API.

Messaggio di errore

Verrà visualizzata la seguente risposta di errore:

HTTP/1.1 503 Service Unavailable
  

Nella risposta HTTP viene visualizzato il seguente messaggio di errore:

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

Possibili cause

In genere viene osservata la risposta HTTP 503 Service Unavailable con il codice di errore NoActiveTarget. quando utilizzi uno o più server di destinazione nella configurazione dell'endpoint di destinazione del proxy API.

Nella tabella seguente sono elencate le possibili cause della risposta 503 Servizio non disponibile con codice di errore NoActiveTarget:

Causa Descrizione Chi può eseguire la procedura di risoluzione dei problemi
Il server di destinazione è disabilitato Il server di destinazione specificato nella configurazione dell'endpoint di destinazione è disabilitato. Utenti perimetrali di cloud pubblici e privati
Errori di connessione dovuti a una risoluzione DNS errata La risoluzione DNS del server di destinazione ha generato indirizzi IP errati che generano errori di connessione. Utenti Edge Private Cloud
Errori di connessione I problemi di rete o di connettività impediscono al client di connettersi al server. Utenti Edge Private Cloud
Alias host di destinazione errato L'host del server di destinazione specificato non è corretto o contiene caratteri indesiderati (ad esempio uno spazio). Utenti perimetrali di cloud pubblici e privati
Errori di handshake SSL handshake TLS/SSL non riuscito tra il client e il server. Utenti perimetrali di cloud pubblici e privati
Errori del controllo di integrità I controlli di integrità configurati per controllare l'integrità del server di destinazione potrebbero non riuscire per qualche motivo. Utenti Edge Private Cloud

Causa: il server di destinazione è disabilitato

Se tutti i server di destinazione specificati nella configurazione dell'endpoint di destinazione sono disabilitati, ricevi la risposta 503 Servizio non disponibile con il codice di errore NoActiveTarget.

Diagnosi

  1. Determinare il nome del server di destinazione utilizzato nello specifico endpoint di destinazione Configurazione del proxy API che presenta errori utilizzando uno dei seguenti modi:
    1. Se è presente un solo endpoint di destinazione, controllalo.
    2. Se sono presenti più endpoint di destinazione e se non sai con certezza quale abbia disabilitato il server di destinazione, segui questi passaggi:
      1. Abilita la sessione di traccia, effettua la chiamata API e riproduci il problema - 503 Servizio non disponibile.
      2. Dalla traccia, vai a Flusso di richiesta di destinazione avviato e determina il nome dell'endpoint di destinazione come mostrato di seguito:
      3. Determinazione del nome dell'endpoint di destinazione dalla traccia

  2. Una volta identificato l'endpoint di destinazione, ottieni il nome del server di destinazione utilizzato dalla configurazione dell'endpoint di destinazione, come mostrato nell'esempio riportato di seguito:
    <TargetEndpoint name="default">>
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="demo-target" />
        </LoadBalancer>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
          

    Nell'esempio precedente, esiste un unico server di destinazione denominato demo-target.

  3. Ottieni la definizione di ciascuno dei server di destinazione utilizzati nell'endpoint di destinazione usando l'UI Edge o la chiamata API Edge.

    UI Edge

    Per ottenere la definizione utilizzando la UI Edge:

    1. Vai ad Amministrazione > Ambienti > Server di destinazione.
    2. Seleziona l'ambiente specifico in cui visualizzi l'errore.
    3. Cerca il nome del server di destinazione specifico per ottenere la definizione del server di destinazione.

      Ad esempio, digita il nome del server di destinazione demo-target e vedrai la sua definizione come mostrato di seguito:

      Nome del server di destinazione e stato attivato/disattivato

      Tieni presente che il server di destinazione demo-target ha un alias host, numero di porta e SSL è abilitato. Tuttavia, lo stesso server di destinazione è disattivato , come indicato dall'elemento ENABLED in grigio.

    API Edge

    Per ottenere la definizione utilizzando l'API Edge:

    Utilizza la Ottieni l'API TargetServer per ottenere la definizione del server di destinazione.

    Output definizione server di destinazione

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

    L'output dell'API Apigee mostra che il server di destinazione demo-target è disabilitato poiché l'elemento IsEnabled è impostato su false.

    Poiché il server di destinazione è disabilitato, il processore di messaggi invierà 503 Service non disponibile con il codice di errore NoActiveTargets immediatamente come la risposta desiderata al cliente.

Risoluzione

Assicurati che i server di destinazione specifici utilizzati nella configurazione dell'endpoint di destinazione dell'API I proxy sono sempre abilitati.

UI Edge

  1. Vai ad Amministrazione > Ambienti > Server di destinazione.
  2. Seleziona l'ambiente specifico in cui visualizzi l'errore.
  3. Cerca il nome del server di destinazione specifico per ottenerne la definizione.
  4. Seleziona il server di destinazione specifico e fai clic su Modifica.
  5. Seleziona la casella di controllo Attivata.
  6. Fai clic su Aggiorna.

API Edge

Utilizza la Aggiorna un'API Target Server per aggiornare la definizione del server di destinazione e assicurarti che IsEnabled è impostato su true nel payload dell'API di richieste, come mostrato di seguito:

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

Se il problema persiste, vai a Raccogliere informazioni diagnostiche.

Diagnosi dei problemi utilizzando il monitoraggio delle API

Il monitoraggio delle API ti consente di isolare le aree in modo da diagnosticare rapidamente i problemi di errore, prestazioni e latenza e la loro origine, come come le app, i proxy API, i target di backend o la piattaforma API.

Presentazione di uno scenario di esempio che illustra come risolvere i problemi 5xx relativi alle API utilizzando il monitoraggio delle API. Ad esempio: ti consigliamo di impostare un avviso per ricevere una notifica quando il numero di messaging.adaptors.http.flow.NoActiveTargets di errore superano una determinata soglia.

Raccogliere dati diagnostici

Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli i seguenti dati informazioni diagnostiche. Contatta e condividili con l'assistenza Apigee:

  1. Se sei un utente del cloud pubblico, fornisci le seguenti informazioni:
    1. Nome dell'organizzazione
    2. Nome ambiente
    3. Nome proxy API
    4. Completa il comando curl per riprodurre l'errore
    5. File di traccia contenente le richieste con servizio 503 non disponibile con codice di errore NoActiveTarget
  2. Se sei un utente del cloud privato, fornisci le seguenti informazioni:
    1. Messaggio di errore completo osservato
    2. Nome ambiente
    3. Bundle proxy API
    4. File di traccia contenente le richieste con servizio 503 non disponibile con codice di errore NoActiveTarget
    5. Log di accesso NGINX

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

    6. Log del processore di messaggi

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