Så här konfigurerar du hälsoavsökningar och graciösa avslutningsperioder för appar som finns i Azure Spring Apps
Kommentar
Basic-, Standard- och Enterprise-planerna kommer att vara inaktuella från och med mitten av mars 2025, med en 3-årig pensionsperiod. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i meddelandet om azure Spring Apps-pensionering.
Standardförbrukningen och den dedikerade planen kommer att vara inaktuell från och med den 30 september 2024, med en fullständig avstängning efter sex månader. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i Migrera Azure Spring Apps Standard-förbrukning och dedikerad plan till Azure Container 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 Portal.
Under Inställningar väljer du Appar och sedan programmet i listan.
Välj Konfiguration i det vänstra navigeringsfönstret, välj Hälsoavsökningar och ange sedan Egenskaper för hälsoavsökning.
Om du vill ange respitperioden för avslutning väljer du Allmänna inställningar och anger ett värde i rutan Uppsägningsfrist .
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 avperiodSeconds
. Om appen inte svarar på begäranden flera gånger som anges avfailureThreshold
startas appinstansen om. Kontrollera att programmet kan starta tillräckligt snabbt eller uppdatera dessa parametrar så att den totala tidsgränseninitialDelaySeconds + 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 }