Så här konfigurerar du hälsoavsökningar och smidiga avslutningsperioder för appar som finns i Azure Spring Apps
Kommentar
Planerna Basic, Standardoch Enterprise gick in i en pensionsperiod den 17 mars 2025. Mer information finns i meddelandet om azure Spring Apps-pensionering.
Planen Standard consumption och den dedikerade gick in i en pensionsperiod den 30 september 2024, med en fullständig avstängning i slutet av mars 2025. 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älsoundersö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. Beredskapskontroller kan till exempel styra vilka appinstanser som används som bakändar för applikationen. 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. För mer information om tjänstupptäckt med Enterprise-planen, se "Använd Tanzu Service Registry".
Uppstartsprober avgör när en applikation har startats. En startavsökning inaktiverar livekontroller och beredskapskontroller tills starten lyckas, vilket säkerställer att live- och beredskapskontroller inte påverkar programstarten. Du kan använda uppstartsprober för att utföra körningskontroller i program med långsam start, vilket hindrar appen från att avslutas innan den har startat.
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älsoövervakning och smidig avstängning 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 processerna som körs i appinstansen har skickats en avslutningssignal innan de tvingas stoppas. 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. Att ställa in respitperioden till 0 stoppar appinstansen omedelbart via en kill-signal, utan möjlighet att avsluta. Om värdet är nil använder Azure Spring Apps standard respitperioden. Standardvärdet är 90 . |
Egenskaper för hälsoundersökning
I följande tabell beskrivs de egenskaper som du kan använda för att konfigurera hälsokontroller.
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 sondningen. Standardvärdet är 10 . Minimivärdet är 1 . |
timeoutSeconds |
Antalet sekunder tills probens tidsgräns löper ut. Standardvärdet är 1 , det minsta värdet. |
failureThreshold |
Det minsta antalet på varandra följande fel för att sonden 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 sonden ska anses vara framgångsrik 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 sondåtgärd
Det finns tre sätt att undersöka en appinstans med hjälp av en prob. Varje prob måste definiera en av följande probleå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
Schema som ska användas för att ansluta till värddatorn. Standardvärdet är HTTP
.path
Åtkomstsökvägen 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 exec
istället för i ett skal fungerar inte skalkommandon. Om du vill använda ett gränssnitt anropar du uttryckligen gränssnittet. En slutstatus på0
behandlas som aktiv/hälsosam, och ett värde som inte är noll betraktas som ohälsosamt.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-prob kan ta bort den aktiverade appinstansen från Eureka-tjänstsökning för att undvika oväntade situationer. Mer information om tjänstidentifiering finns i Identifiera och registrera dina Spring Boot-program. För mer information om tjänstupptäckning med Enterprise-planen, se 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 på Spring Blog.
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 prob som är ansvarig för tillhandahållandefelet. Kontrollera att hälsoprobereglerna är korrekta och att tidsgränsen är tillräckligt lång för att programmet ska vara i körningstillstånd.
Vilka är standardinställningarna för sonder 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 }