Share via


Så här konfigurerar du hälsoavsökningar och graciösa avslutningsperioder för appar som finns i Azure Spring Apps

Den här artikeln gäller för: ✔️ Java ✔️ C#

Den här artikeln gäller för: ✔️ Basic/Standard ✔️ Enterprise

Den här artikeln visar hur du anpassar appar som körs i Azure Spring Apps med hälsoavsökningar och graciösa avslutningsperioder.

En avsökning är en diagnostisk aktivitet som utförs regelbundet av Azure Spring Apps på en appinstans. För att utföra en diagnostik utför Azure Spring Apps någon av följande åtgärder:

  • Kör ett valfritt godtyckligt kommando i appinstansen.
  • Upprättar en TCP-socketanslutning.
  • Gör en HTTP-begäran.

Azure Spring Apps erbjuder standardregler för hälsoavsökning för varje program. Den här artikeln visar hur du anpassar ditt program med tre typer av hälsoavsökningar:

  • Liveness-avsökningar avgör när ett program ska startas om. Till exempel kan liveness-avsökningar identifiera ett dödläge, till exempel när ett program körs men inte kan göra framsteg. Om programmet startas om i ett dödläge kan programmet bli tillgängligt trots fel.

  • Beredskapsavsökningar avgör när en appinstans är redo att börja ta emot trafik. Beredskapsavsökningar kan till exempel styra vilka appinstanser som används som serverdelar för programmet. När en appinstans inte är klar tas den bort från Kubernetes-tjänstens identifiering. Mer information finns i Identifiera och registrera dina Spring Boot-program. Mer information om tjänstidentifiering med Enterprise-planen finns i Använda Tanzu Service Registry.

  • Startavsökningar avgör när ett program har startats. En startavsökning inaktiverar live- och beredskapskontroller tills starten lyckas, vilket säkerställer att liveness- och beredskapsavsökningar inte stör programstarten. Du kan använda startavsökningar för att utföra live-kontroller i program med långsam start, vilket hindrar appen från att avslutas innan den körs.

Förutsättningar

  • Azure CLI med Azure Spring Apps-tillägget. Använd följande kommando för att ta bort tidigare versioner och installera det senaste tillägget. Om du tidigare har installerat spring-cloud-tillägget avinstallerar du det för att undvika konfigurations- och versionsmatchningar.

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

Konfigurera hälsoavsökningar och korrekt avslutning för program

I följande avsnitt beskrivs hur du konfigurerar hälsoavsökningar och graciös avslutning med hjälp av Azure CLI.

Graciös avslutning

I följande tabell beskrivs egenskapen terminationGracePeriodSeconds som du kan använda för att konfigurera en korrekt avslutning.

Egenskapsnamn beskrivning
terminationGracePeriodSeconds Varaktigheten i sekunder efter att processer som körs i appinstansen skickas en avslutningssignal innan de stoppas av två skäl. Ange det här värdet längre än den förväntade rensningstiden för din process. Värdet måste vara ett icke-negativt heltal. Om respitperioden anges till 0 stoppas appinstansen omedelbart via kill-signalen, utan möjlighet att stänga av. Om värdet är noll använder Azure Spring Apps standard respitperioden. Standardvärdet är 90.

Egenskaper för hälsoavsökning

I följande tabell beskrivs de egenskaper som du kan använda för att konfigurera hälsoavsökningar.

Egenskapsnamn beskrivning
initialDelaySeconds Antalet sekunder efter att appinstansen har startats innan avsökningar initieras. Standardvärdet är 0, det minsta värdet.
periodSeconds Frekvensen i sekunder för att utföra avsökningen. Standardvärdet är 10. Minimivärdet är 1.
timeoutSeconds Antalet sekunder tills avsökningen överskrider tidsgränsen. Standardvärdet är 1, det minsta värdet.
failureThreshold Det minsta antalet efterföljande fel som avsökningen ska anses ha misslyckats efter att ha lyckats. Standardvärdet är 3. Minimivärdet är 1.
successThreshold Det minsta antalet lyckade resultat i följd för att avsökningen ska anses vara lyckad efter att ha misslyckats. Standardvärdet är 1. Värdet måste vara 1 för liveness och start. Minimivärdet är 1.

Egenskaper för avsökningsåtgärd

Det finns tre sätt att kontrollera en appinstans med hjälp av en avsökning. Varje avsökning måste definiera någon av följande avsökningsåtgärder:

  • HTTPGetAction

    Utför en HTTP GET-begäran mot appinstansen på en angiven sökväg. Diagnostiken anses vara lyckad om svaret har en statuskod som är större än eller lika med 200 och mindre än 400.

    Egenskapsnamn beskrivning
    scheme Schemat som ska användas för att ansluta till värden. Standardvärdet är HTTP.
    path Sökvägen till åtkomst på HTTP-servern för appinstansen, till exempel /healthz.
  • ExecAction

    Kör ett angivet kommando i appinstansen. Diagnostiken anses vara lyckad om kommandot avslutas med statuskoden 0.

    Egenskapsnamn beskrivning
    command Kommandot som ska köras i appinstansen. Arbetskatalogen för kommandot är rotkatalogen (/) i appinstansens filsystem. Eftersom kommandot körs med i exec stället för i ett gränssnitt fungerar inte gränssnittsinstruktioner. Om du vill använda ett gränssnitt anropar du uttryckligen gränssnittet. Slutstatusen 0 behandlas som live/felfri och inte noll är inte felfri.
  • TCPSocketAction

    Utför en TCP-kontroll mot appinstansen.

    Det finns inga tillgängliga egenskaper för åtgärden TCPSocketAction .

Anpassa ditt program

Använd följande steg för att anpassa ditt program med Hjälp av Azure-portalen.

  1. Under Inställningar väljer du Appar och sedan programmet i listan.

    Screenshot of Azure portal showing the Apps page.

  2. Välj Konfiguration i det vänstra navigeringsfönstret, välj Hälsoavsökningar och ange sedan Egenskaper för hälsoavsökning.

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

  3. Om du vill ange respitperioden för avslutning väljer du Allmänna inställningar och anger ett värde i rutan Uppsägningsfrist .

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

Bästa praxis

Använd följande metodtips när du lägger till hälsoavsökningar i Azure Spring Apps:

  • Använd liveness- och beredskapsavsökningar tillsammans. Azure Spring Apps tillhandahåller två metoder för tjänstidentifiering samtidigt. När beredskapsavsökningen misslyckas tas appinstansen endast bort från Kubernetes-tjänstens identifiering. En korrekt konfigurerad liveness-avsökning kan ta bort den utfärdade appinstansen från Identifiering av Eureka-tjänsten för att undvika oväntade fall. Mer information om tjänstidentifiering finns i Identifiera och registrera dina Spring Boot-program. Mer information om tjänstidentifiering med Enterprise-planen finns i Använda Tanzu Service Registry.

  • När en appinstans startar sker den första kontrollen efter den fördröjning som anges av initialDelaySeconds. Efterföljande kontroller utförs regelbundet enligt den periodlängd som anges av periodSeconds. Om appen inte svarar på begäranden flera gånger som anges av failureThresholdstartas appinstansen om. Kontrollera att programmet kan starta tillräckligt snabbt eller uppdatera dessa parametrar så att den totala tidsgränsen initialDelaySeconds + periodSeconds * failureThreshold är längre än programmets starttid.

  • För Spring Boot-program levereras Spring Boot med stöd för hälsogrupper , så att utvecklare kan välja en delmängd av hälsoindikatorer och gruppera dem under en enda korrelerad hälsostatus. Mer information finns i Liveness and Readiness Probes with Spring Boot (Liveness and Readiness Probes with Spring Boot ) på Vårbloggen.

    I följande exempel visas en liveness-avsökning med Spring Boot:

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

    I följande exempel visas en beredskapsavsökning med Spring Boot:

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

Vanliga frågor och svar

Det här avsnittet innehåller svar på vanliga frågor om hur du använder hälsoavsökningar med Azure Spring Apps.

  • Jag fick ett 400-svar när jag skapade program med anpassade hälsoavsökningar. Vad betyder det?

    Felmeddelandet pekar på vilken avsökning som är ansvarig för etableringsfelet. Kontrollera att hälsoavsökningsreglerna är korrekta och att tidsgränsen är tillräckligt lång för att programmet ska vara i körningstillståndet.

  • Vilka är standardinställningarna för avsökningar för ett befintligt program?

    I följande exempel visas standardinställningarna:

    "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
    }
    

Nästa steg