Konfigurace sond stavu a období odkladu ukončení pro aplikace hostované v Azure Spring Apps
Poznámka:
Plány Basic, Standard a Enterprise budou od poloviny března 2025 vyřazeny ze 3letého období vyřazení. Doporučujeme přejít na Azure Container Apps. Další informace najdete v oznámení o vyřazení Azure Spring Apps.
Od 30. září 2024 bude od 30. září 2024 zastaralý plán s úplným vypnutím po šesti měsících. Doporučujeme přejít na Azure Container Apps. Další informace najdete v tématu Migrace spotřeby Azure Spring Apps Úrovně Standard a vyhrazeného plánu do 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 stavu a období odkladu ukončení.
Test je diagnostická aktivita prováděná pravidelně službou Azure Spring Apps v 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 ukazuje, jak přizpůsobit aplikaci třemi druhy sond stavu:
Sondy aktivity určují, kdy se má aplikace restartovat. Sondy aktivity můžou například identifikovat vzájemné zablokování, například když je aplikace spuštěná, ale nemůže provést pokrok. 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 aktivity a připravenosti, dokud se spuštění nepovee, a zajistí tak, aby testy aktivity a připravenosti nenarušovaly 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 sond stavu a řádné ukončení aplikací
Následující části popisují, jak nakonfigurovat sondy stavu a řádné 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 spuštění procesů v instanci aplikace se před vynuceným zastavením odešle signál ukončení. 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 zastaví instanci aplikace okamžitě prostřednictvím signálu ukončení, bez příležitosti k vypnutí. Pokud je hodnota nil, Azure Spring Apps použije výchozí období odkladu. Výchozí hodnota je 90. |
Vlastnosti sondy stavu
Následující tabulka popisuje vlastnosti, které můžete použít ke konfiguraci sond stavu.
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 k provedení 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 živou a spouštěcí hodnotu. 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í místo exec
uvnitř prostředí, pokyny prostředí nebudou fungovat. Pokud chcete použít prostředí, explicitně ho volejte. Stav ukončení 0 se považuje za aktivní/v pořádku a nenulový stav není v pořádku.TCPSocketAction
Provede kontrolu PROTOKOLU TCP u instance aplikace.
Pro akci nejsou k dispozici žádné vlastnosti
TCPSocketAction
.
Přizpůsobení aplikace
K přizpůsobení aplikace pomocí webu Azure Portal použijte následující postup.
Osvědčené postupy
Při přidávání sond stavu 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 tématu Liveness and Readiness Probes with Spring Boot on the Spring Blog.
Následující příklad ukazuje sondu živé aktivity pomocí Spring Bootu:
"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 sondami stavu jsem obdržel(a) odpověď 400. Co to znamená?
Chybová zpráva upozorňuje, která sonda zodpovídá za selhání zřizování. Ujistěte se, že jsou pravidla sondy stavu 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 }