Condividi tramite


Come configurare i probe di integrità e i periodi di terminazione normale per le app ospitate in Azure Spring Apps

Questo articolo si applica a: ✔️ Java ✔️ C#

Questo articolo si applica a: ✔️ Basic/Standard ✔️ Enterprise

Questo articolo illustra come personalizzare le app in esecuzione in Azure Spring Apps con probe di integrità e periodi di terminazione normale.

Un probe è un'attività di diagnostica eseguita periodicamente da Azure Spring Apps in un'istanza dell'app. Per eseguire una diagnostica, Azure Spring Apps esegue una delle azioni seguenti:

  • Esegue un comando arbitrario di propria scelta all'interno dell'istanza dell'app.
  • Stabilisce una connessione socket TCP.
  • Effettua una richiesta HTTP.

Azure Spring Apps offre regole di probe di integrità predefinite per ogni applicazione. Questo articolo illustra come personalizzare l'applicazione con tre tipi di probe di integrità:

  • I probe di attività determinano quando riavviare un'applicazione. Ad esempio, i probe di attività possono identificare un deadlock, ad esempio quando un'applicazione è in esecuzione ma non è in grado di eseguire progressi. Il riavvio dell'applicazione in uno stato di deadlock può rendere disponibile l'applicazione nonostante gli errori.

  • I probe di idoneità determinano quando un'istanza dell'app è pronta per iniziare ad accettare il traffico. Ad esempio, i probe di idoneità possono controllare quali istanze dell'app vengono usate come back-end per l'applicazione. Quando un'istanza dell'app non è pronta, viene rimossa dall'individuazione del servizio Kubernetes. Per altre informazioni, vedere Individuare e registrare le applicazioni Spring Boot. Per altre informazioni sull'individuazione dei servizi con il piano Enterprise, vedere Usare il Registro di sistema del servizio Tanzu.

  • I probe di avvio determinano quando un'applicazione è stata avviata. Un probe di avvio disabilita i controlli di attività e conformità fino a quando l'avvio non riesce, assicurando che i probe di attività e conformità non interferiscano con l'avvio dell'applicazione. Puoi usare i probe di avvio per eseguire controlli di attività sulle applicazioni a avvio lento, impedendo all'app di terminare prima che sia operativa.

Prerequisiti

  • Interfaccia della riga di comando di Azure con l'estensione Azure Spring Apps. Usare il comando seguente per rimuovere le versioni precedenti e installare l'estensione più recente. Se in precedenza è stata installata l'estensione spring-cloud, disinstallarla per evitare la mancata corrispondenza della configurazione e della versione.

    az extension remove --name spring
    az extension add --name spring
    az extension remove --name spring-cloud
    

Configurare probe di integrità e terminazione normale per le applicazioni

Le sezioni seguenti descrivono come configurare i probe di integrità e la terminazione normale usando l'interfaccia della riga di comando di Azure.

Terminazione normale

Nella tabella seguente viene descritta la proprietà , che è possibile usare per configurare la terminationGracePeriodSeconds terminazione normale.

Nome proprietà Descrizione
terminationGracePeriodSeconds La durata in secondi dopo i processi in esecuzione nell'istanza dell'app viene inviato un segnale di terminazione prima che vengano interrotti forzatamente. Impostare questo valore più lungo del tempo di pulizia previsto per il processo. Deve essere un valore intero non negativo. L'impostazione del periodo di tolleranza su 0 arresta immediatamente l'istanza dell'app tramite il segnale di terminazione, senza l'opportunità di arrestare. Se il valore è nil, Azure Spring Apps usa il periodo di tolleranza predefinito. Il valore predefinito è 90.

Proprietà del probe di integrità

Nella tabella seguente vengono descritte le proprietà che è possibile usare per configurare i probe di integrità.

Nome proprietà Descrizione
initialDelaySeconds Numero di secondi dopo l'avvio dell'istanza dell'app prima dell'avvio dei probe. Il valore predefinito è 0, il valore minimo.
periodSeconds Frequenza in secondi per eseguire il probe. Il valore predefinito è 10. Il valore minimo è 1.
timeoutSeconds Numero di secondi fino al timeout del probe. Il valore predefinito è 1, il valore minimo.
failureThreshold Numero minimo di errori consecutivi per il probe da considerare non riuscito dopo l'esito positivo. Il valore predefinito è 3. Il valore minimo è 1.
successThreshold Numero minimo di successi consecutivi che il probe deve essere considerato riuscito dopo aver avuto esito negativo. Il valore predefinito è 1. Il valore deve essere 1 per la durata e l'avvio. Il valore minimo è 1.

Proprietà dell'azione probe

Esistono tre modi per controllare un'istanza dell'app usando un probe. Ogni probe deve definire una delle azioni probe seguenti:

  • HTTPGetAction

    Esegue una richiesta HTTP GET sull'istanza dell'app in un percorso specificato. La diagnostica viene considerata corretta se la risposta ha un codice di stato maggiore o uguale a 200 e minore di 400.

    Nome proprietà Descrizione
    scheme Schema da usare per la connessione all'host. Il valore predefinito è HTTP.
    path Percorso di accesso nel server HTTP dell'istanza dell'app, ad esempio /healthz.
  • ExecAction

    Esegue un comando specificato all'interno dell'istanza dell'app. La diagnostica viene considerata corretta se il comando viene chiuso con un codice di stato pari a 0.

    Nome proprietà Descrizione
    command Comando da eseguire all'interno dell'istanza dell'app. La directory di lavoro per il comando è la directory radice (/) nel file system dell'istanza dell'app. Poiché il comando viene eseguito usando exec anziché all'interno di una shell, le istruzioni della shell non funzioneranno. Per usare una shell, chiamare in modo esplicito la shell. Uno stato di uscita pari a 0 viene considerato come attivo/integro e non zero non è integro.
  • TCPSocketAction

    Esegue un controllo TCP sull'istanza dell'app.

    Non sono disponibili proprietà per l'azione TCPSocketAction .

Personalizzare l'applicazione

Usare la procedura seguente per personalizzare l'applicazione usando portale di Azure.

  1. In Impostazioni selezionare App e quindi selezionare l'applicazione dall'elenco.

    Screenshot of Azure portal showing the Apps page.

  2. Selezionare Configurazione nel riquadro di spostamento sinistro, selezionare Probe di integrità e quindi specificare le proprietà del probe di integrità.

    Screenshot of the Azure portal Configuration page showing the Health probes tab.

  3. Per impostare il periodo di tolleranza di terminazione, selezionare Impostazioni generali e specificare un valore nella casella Periodo di tolleranza di terminazione.

    Screenshot of the Azure portal Configuration page showing the General settings tab.

Procedure consigliate

Usare le procedure consigliate seguenti quando si aggiungono probe di integrità ad Azure Spring Apps:

  • Usare insieme probe di attività e idoneità. Azure Spring Apps offre due approcci per l'individuazione dei servizi contemporaneamente. Quando il probe di idoneità non riesce, l'istanza dell'app viene rimossa solo dall'individuazione del servizio Kubernetes. Un probe di attività configurato correttamente può rimuovere l'istanza dell'app rilasciata dall'individuazione del servizio Eureka per evitare casi imprevisti. Per altre informazioni sull'individuazione dei servizi, vedere Individuare e registrare le applicazioni Spring Boot. Per altre informazioni sull'individuazione dei servizi con il piano Enterprise, vedere Usare il Registro di sistema del servizio Tanzu.

  • All'avvio di un'istanza dell'app, il primo controllo si verifica dopo il ritardo specificato da initialDelaySeconds. I controlli successivi vengono eseguiti periodicamente, in base alla lunghezza del periodo specificata da periodSeconds. Se l'app non risponde più volte alle richieste, come specificato da failureThreshold, l'istanza dell'app viene riavviata. Assicurarsi che l'applicazione possa iniziare abbastanza velocemente o aggiornare questi parametri, in modo che il timeout initialDelaySeconds + periodSeconds * failureThreshold totale sia più lungo dell'ora di inizio dell'applicazione.

  • Per le applicazioni Spring Boot, Spring Boot viene fornito con il supporto dei gruppi di integrità, consentendo agli sviluppatori di selezionare un subset di indicatori di integrità e raggrupparli in un unico stato di integrità correlato. Per altre informazioni, vedere Liveness and Readiness Probes with Spring Boot (Liveness and Readiness Probes with Spring Boot ) nel blog di Spring.

    L'esempio seguente mostra un probe di attività con Spring Boot:

    "probe": {
           "initialDelaySeconds": 30,
           "periodSeconds": 10,
           "timeoutSeconds": 1,
           "failureThreshold": 30,
           "successThreshold": 1,
           "probeAction": {
               "type": "HTTPGetAction",
               "scheme": "HTTP",
               "path": "/actuator/health/liveness"
           }
       }
    

    L'esempio seguente mostra un probe di idoneità con Spring Boot:

    "probe": {
           "initialDelaySeconds": 0,
           "periodSeconds": 10,
           "timeoutSeconds": 1,
           "failureThreshold": 3,
           "successThreshold": 1,
           "probeAction": {
               "type": "HTTPGetAction",
               "scheme": "HTTP",
               "path": "/actuator/health/readiness"
           }
       }
    

Domande frequenti

Questa sezione fornisce risposte alle domande frequenti sull'uso dei probe di integrità con Azure Spring Apps.

  • Ho ricevuto una risposta 400 quando ho creato applicazioni con probe di integrità personalizzati. Che cosa significa?

    Il messaggio di errore indica il probe responsabile dell'errore di provisioning. Assicurarsi che le regole del probe di integrità siano corrette e che il timeout sia sufficientemente lungo per consentire all'applicazione di trovarsi nello stato in esecuzione.

  • Quali sono le impostazioni predefinite del probe per un'applicazione esistente?

    L'esempio seguente mostra le impostazioni predefinite:

    "startupProbe": null,
    "livenessProbe": {
        "disableProbe": false,
        "failureThreshold": 3,
        "initialDelaySeconds": 300,
        "periodSeconds": 10,
        "probeAction": {
            "type": "TCPSocketAction"
        },
        "successThreshold": 1,
        "timeoutSeconds": 3
    },
    "readinessProbe": {
        "disableProbe": false,
        "failureThreshold": 3,
        "initialDelaySeconds": 0,
        "periodSeconds": 5,
        "probeAction": {
            "type": "TCPSocketAction"
        },
        "successThreshold": 1,
        "timeoutSeconds": 3
    }
    

Passaggi successivi