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.

  1. V části Nastavení vyberte Aplikace a pak vyberte aplikaci ze seznamu.

    Snímek obrazovky webu Azure Portal se stránkou Aplikace

  2. V levém navigačním podokně vyberte Konfigurace , vyberte Sondy stavu a pak zadejte vlastnosti sondy stavu.

    Snímek obrazovky se stránkou Konfigurace webu Azure Portal zobrazující kartu Sondy stavu

  3. Pokud chcete nastavit období odkladu ukončení, vyberte Obecné nastavení a do pole Období odkladu ukončení zadejte hodnotu.

    Snímek obrazovky se stránkou Konfigurace webu Azure Portal zobrazující kartu Obecné nastavení

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 specifikace failureThreshold, instance aplikace se restartuje. Ujistěte se, že je aplikace dostatečně rychlá, nebo aktualizujte tyto parametry, aby celkový časový limit initialDelaySeconds + 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
    }
    

Další kroky