Sdílet prostřednictvím


Konfigurace sond stavu a období odkladu ukončení pro aplikace hostované v Azure Spring 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 ze seznamu vyberte aplikaci.

    Screenshot of Azure portal showing the Apps page.

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

    Screenshot of the Azure portal Configuration page showing the Health probes tab.

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

    Screenshot of the Azure portal Configuration page showing the General settings tab.

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