Konfigurace sond stavu a období odkladu ukončení pro aplikace hostované v Azure Spring Apps
Poznámka:
Plány Basic, Standarda Enterprise vstoupily do důchodového období 17. března 2025. Další informace najdete v oznámení o vyřazení Azure Spring Apps.
Plán Standardní spotřeba a vyhrazený plán vstoupily do fáze vyřazování dne 30. září 2024 s úplným vypnutím do konce března 2025. Další informace viz Migrujte spotřebu Azure Spring Apps ve standardním a vyhrazeném plánu na Azure Container Apps.
Tento článek se vztahuje na:✅ Java ✅ C#
Tento článek se vztahuje na:✅ Basic/Standard ✅ Enterprise
V tomto článku se dozvíte, jak přizpůsobit aplikace spuštěné v Azure Spring Apps pomocí sond pro kontrolu stavu a období plynulého ukončení.
Sonda je diagnostická aktivita prováděná pravidelně službou Azure Spring Apps na instanci aplikace. K provedení diagnostiky služba Azure Spring Apps provede jednu z následujících akcí:
- Spustí libovolný příkaz podle vašeho výběru v instanci aplikace.
- Vytvoří připojení soketu TCP.
- Vytvoří požadavek HTTP.
Azure Spring Apps nabízí výchozí pravidla sond stavu pro každou aplikaci. Tento článek vám ukáže, jak můžete přizpůsobit svou aplikaci pomocí tří druhů zdravotních sond:
Liveness probe určují, kdy se má aplikace restartovat. Liveness sondy mohou například identifikovat zaseknutí, například když je aplikace spuštěna, ale nemůže dále pokračovat. Restartování aplikace ve stavu zablokování může aplikaci zpřístupnit i přes chyby.
Testy připravenosti určují, kdy je instance aplikace připravená začít přijímat provoz. Testy připravenosti můžou například řídit, které instance aplikací se používají jako back-endy aplikace. Když instance aplikace není připravená, odebere se ze zjišťování služby Kubernetes. Další informace najdete v tématu Zjišťování a registrace aplikací Spring Boot. Další informace o zjišťování služeb s plánem Enterprise najdete v tématu Použití registru služby Tanzu Service Registry.
Spouštěcí testy určují, kdy se aplikace spustila. Spouštěcí sonda zakáže kontroly životaschopnosti a připravenosti, dokud spuštění nebude úspěšné, aby bylo zajištěno, že kontroly životaschopnosti a připravenosti nenarušují spouštění aplikace. Pomocí spouštěcích sond můžete provádět kontroly aktivity při pomalém spouštění aplikací, což brání ukončení aplikace před jejím spuštěním.
Požadavky
Azure CLI s rozšířením Azure Spring Apps Pomocí následujícího příkazu odeberte předchozí verze a nainstalujte nejnovější rozšíření. Pokud jste dříve nainstalovali rozšíření spring-cloud, odinstalujte ho, abyste se vyhnuli neshodám konfigurace a verzí.
az extension remove --name spring az extension add --name spring az extension remove --name spring-cloud
Konfigurace zdravotních kontrolních sond a bezpečné ukončení aplikací
Následující části popisují, jak nakonfigurovat sondy stavu a bezproblémové ukončení pomocí Azure CLI.
Řádné ukončení
Následující tabulka popisuje terminationGracePeriodSeconds
vlastnost, kterou můžete použít ke konfiguraci řádného ukončení.
Název vlastnosti | Popis |
---|---|
terminationGracePeriodSeconds |
Doba trvání v sekundách po odeslání signálu ukončení procesům běžícím v instanci aplikace, než budou vynuceně zastaveny. Nastavte tuto hodnotu déle, než je očekávaná doba čištění procesu. Hodnota musí být nezáporné celé číslo. Nastavení období odkladu na 0 způsobí okamžité zastavení instance aplikace prostřednictvím signálu kill, bez možnosti vypnutí. Pokud je nil tato hodnota, Azure Spring Apps použije výchozí období odkladu. Výchozí hodnota je 90 . |
Vlastnosti zdravotní sondy
Následující tabulka popisuje vlastnosti, které můžete použít ke konfiguraci zdravotních sond.
Název vlastnosti | Popis |
---|---|
initialDelaySeconds |
Počet sekund po spuštění instance aplikace před zahájením sond. Výchozí hodnota je 0 minimální hodnota. |
periodSeconds |
Frekvence v sekundách pro provádění sondy. Výchozí hodnota je 10 . Minimální hodnota je 1 . |
timeoutSeconds |
Počet sekund, než vyprší časový limit sondy. Výchozí hodnota je 1 minimální hodnota. |
failureThreshold |
Minimální počet po sobě jdoucích selhání sondy, které se mají považovat za neúspěšné po úspěšném dokončení. Výchozí hodnota je 3 . Minimální hodnota je 1 . |
successThreshold |
Minimální počet po sobě jdoucích úspěchů pro sondu, které se mají považovat za úspěšné po selhání. Výchozí hodnota je 1 . Hodnota musí být 1 pro živost a spuštění. Minimální hodnota je 1 . |
Vlastnosti akce sondy
Existují tři způsoby, jak pomocí sondy zkontrolovat instanci aplikace. Každá sonda musí definovat jednu z následujících akcí sondy:
HTTPGetAction
Provede požadavek HTTP GET na instanci aplikace na zadané cestě. Diagnostika se považuje za úspěšnou, pokud má odpověď stavový kód větší nebo roven hodnotě 200 a menší než 400.
Název vlastnosti Popis scheme
Schéma, které se má použít pro připojení k hostiteli. Výchozí hodnota je HTTP
.path
Cesta pro přístup k serveru HTTP instance aplikace, například /healthz
.ExecAction
Spustí zadaný příkaz uvnitř instance aplikace. Diagnostika se považuje za úspěšnou, pokud se příkaz ukončí se stavovým kódem 0.
Název vlastnosti Popis command
Příkaz pro spuštění uvnitř instance aplikace. Pracovní adresář pro příkaz je kořenový adresář (/) v systému souborů instance aplikace. Vzhledem k tomu, že se příkaz spouští pomocí exec
namísto uvnitř shellu, pokyny shellu nebudou fungovat. Chcete-li použít shell, explicitně ho zavolejte. Stav0
ukončení se považuje za aktivní nebo v pořádku a nenulový stav není v pořádku.TCPSocketAction
Provede kontrolu PROTOKOLU TCP u instance aplikace.
Nejsou k dispozici žádné vlastnosti pro akci
TCPSocketAction
.
Přizpůsobení aplikace
K přizpůsobení aplikace pomocí webu Azure Portal použijte následující postup.
V části Nastavení vyberte Aplikace a pak vyberte aplikaci ze seznamu.
V levém navigačním panelu vyberte Konfigurace, vyberte Zdravotní sondy, a poté zadejte vlastnosti zdravotní sondy.
Pokud chcete nastavit období odkladu ukončení, vyberte Obecné nastavení a do pole Období odkladu ukončení zadejte hodnotu.
Osvědčené postupy
Při přidávání zdravotních sond do Azure Spring Apps použijte následující osvědčené postupy:
Používejte testy aktivity a připravenosti společně. Azure Spring Apps nabízí dva přístupy ke zjišťování služeb najednou. Když sonda připravenosti selže, instance aplikace se odebere jenom ze zjišťování služby Kubernetes. Správně nakonfigurovaná sonda aktivity může odebrat vystavenou instanci aplikace ze zjišťování služby Eureka, aby se zabránilo neočekávaným případům. Další informace o zjišťování služeb naleznete v tématu Zjišťování a registrace aplikací Spring Boot. Další informace o zjišťování služeb s plánem Enterprise najdete v tématu Použití registru služby Tanzu Service Registry.
Při spuštění instance aplikace dojde k první kontrole po zpoždění určeném uživatelem
initialDelaySeconds
. Následné kontroly probíhají pravidelně podle délky období stanovenéperiodSeconds
. Pokud aplikace nereaguje na požadavky několikrát podle specifikacefailureThreshold
, instance aplikace se restartuje. Ujistěte se, že je aplikace dostatečně rychlá, nebo aktualizujte tyto parametry, aby celkový časový limitinitialDelaySeconds + periodSeconds * failureThreshold
byl delší než čas spuštění aplikace.Pro aplikace Spring Boot se Spring Boot dodává s podporou skupin stavů, což vývojářům umožňuje vybrat podmnožinu indikátorů stavu a seskupit je do jediného korelovaného stavu. Další informace najdete v článku Liveness and Readiness Probes with Spring Boot na blogu Spring.
Následující příklad ukazuje liveness probe se Spring Bootem:
"probe": { "initialDelaySeconds": 30, "periodSeconds": 10, "timeoutSeconds": 1, "failureThreshold": 30, "successThreshold": 1, "probeAction": { "type": "HTTPGetAction", "scheme": "HTTP", "path": "/actuator/health/liveness" } }
Následující příklad ukazuje sondu připravenosti pomocí Spring Bootu:
"probe": { "initialDelaySeconds": 0, "periodSeconds": 10, "timeoutSeconds": 1, "failureThreshold": 3, "successThreshold": 1, "probeAction": { "type": "HTTPGetAction", "scheme": "HTTP", "path": "/actuator/health/readiness" } }
Nejčastější dotazy
Tato část obsahuje odpovědi na nejčastější dotazy týkající se používání sond stavu ve službě Azure Spring Apps.
Při vytváření aplikací s přizpůsobenými zdravotními sondami jsem obdržel(a) odpověď 400. Co to znamená?
Chybová zpráva upozorňuje, která sonda zodpovídá za neúspěšné zřízení. Ujistěte se, že jsou pravidla zdravotní sondy správná a že časový limit je dostatečně dlouhý, aby aplikace byla ve spuštěném stavu.
Jaká jsou výchozí nastavení sondy pro existující aplikaci?
Následující příklad ukazuje výchozí nastavení:
"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 }