Jak skonfigurować sondy kondycji i okresów prolongaty zakończenia dla aplikacji hostowanych w usłudze Azure Spring Apps

Ten artykuł dotyczy: ✔️ Java ✔️ C#

Ten artykuł dotyczy: ✔️ Podstawowa/Standardowa ✔️ Enterprise

W tym artykule przedstawiono sposób dostosowywania aplikacji działających w usłudze Azure Spring Apps za pomocą sond kondycji i okresów prolongaty zakończenia.

Sonda to działanie diagnostyczne wykonywane okresowo przez usługę Azure Spring Apps w wystąpieniu aplikacji. Aby wykonać diagnostykę, usługa Azure Spring Apps wykonuje jedną z następujących akcji:

  • Wykonuje dowolne polecenie wybrane w ramach wystąpienia aplikacji.
  • Ustanawia połączenie gniazda TCP.
  • Wysyła żądanie HTTP.

Usługa Azure Spring Apps oferuje domyślne reguły sondy kondycji dla każdej aplikacji. W tym artykule pokazano, jak dostosować aplikację za pomocą trzech rodzajów sond kondycji:

  • Sondy aktualności określają, kiedy należy ponownie uruchomić aplikację. Na przykład sondy aktualności mogą identyfikować zakleszczenie, na przykład wtedy, gdy aplikacja jest uruchomiona, ale nie może poczynić postępów. Ponowne uruchomienie aplikacji w stanie zakleszczenia może sprawić, że aplikacja będzie dostępna pomimo błędów.

  • Sondy gotowości określają, kiedy wystąpienie aplikacji jest gotowe do rozpoczęcia akceptowania ruchu. Na przykład sondy gotowości mogą kontrolować, które wystąpienia aplikacji są używane jako zaplecza dla aplikacji. Gdy wystąpienie aplikacji nie jest gotowe, zostanie usunięte z odnajdywania usługi Kubernetes. Aby uzyskać więcej informacji, zobacz Odnajdywanie i rejestrowanie aplikacji Spring Boot. Aby uzyskać więcej informacji na temat odnajdywania usług w ramach planu Enterprise, zobacz Use Tanzu Service Registry (Korzystanie z rejestru usługi Tanzu).

  • Sondy uruchamiania określają, kiedy aplikacja została uruchomiona. Sonda uruchamiania wyłącza sprawdzanie dostępności i gotowości do momentu pomyślnego uruchomienia, zapewniając, że sondy aktywności i gotowości nie zakłócają uruchamiania aplikacji. Sondy uruchamiania umożliwiają przeprowadzanie kontroli dostępności wolnych aplikacji startowych, co uniemożliwia zakończenie działania aplikacji przed jej uruchomieniem.

Wymagania wstępne

  • Interfejs wiersza polecenia platformy Azure z rozszerzeniem Azure Spring Apps. Użyj następującego polecenia, aby usunąć poprzednie wersje i zainstalować najnowsze rozszerzenie. Jeśli wcześniej zainstalowano rozszerzenie spring-cloud, odinstaluj je, aby uniknąć niezgodności konfiguracji i wersji.

    az extension remove --name spring
    az extension add --name spring
    az extension remove --name spring-cloud
    

Konfigurowanie sond kondycji i bezproblemowe kończenie dla aplikacji

W poniższych sekcjach opisano sposób konfigurowania sond kondycji i bezproblemowego kończenia pracy przy użyciu interfejsu wiersza polecenia platformy Azure.

Pełne zakończenie

W poniższej terminationGracePeriodSeconds tabeli opisano właściwość , której można użyć do skonfigurowania bezproblemowego zakończenia.

Nazwa właściwości Opis
terminationGracePeriodSeconds Czas trwania w sekundach po uruchomieniu procesów w wystąpieniu aplikacji jest wysyłany sygnał zakończenia, zanim zostaną wymuszone zatrzymane. Ustaw tę wartość dłużej niż oczekiwany czas oczyszczania dla procesu. Wartość musi być nieujemną liczbą całkowitą. Ustawienie okresu prolongaty na 0 powoduje natychmiastowe zatrzymanie wystąpienia aplikacji za pośrednictwem sygnału kill bez możliwości zamknięcia. Jeśli wartość jest zerowa, usługa Azure Spring Apps używa domyślnego okresu prolongaty. Wartość domyślna to 90.

Właściwości sondy kondycji

W poniższej tabeli opisano właściwości, których można użyć do konfigurowania sond kondycji.

Nazwa właściwości Opis
initialDelaySeconds Liczba sekund po uruchomieniu wystąpienia aplikacji przed zainicjowaniem sond. Wartość domyślna to 0, minimalna wartość.
periodSeconds Częstotliwość w sekundach do wykonania sondy. Wartość domyślna to 10. Minimalna wartość to 1.
timeoutSeconds Liczba sekund do limitu czasu sondy. Wartość domyślna to 1, minimalna wartość.
failureThreshold Minimalna liczba kolejnych niepowodzeń sondy, które mają zostać uznane za zakończone niepowodzeniem po pomyślnym zakończeniu. Wartość domyślna to 3. Minimalna wartość to 1.
successThreshold Minimalna liczba kolejnych sukcesów sondy, która ma zostać uznana za pomyślną po niepowieść. Wartość domyślna to 1. Wartość musi być 1 dla aktualności i uruchamiania. Minimalna wartość to 1.

Właściwości akcji sondy

Istnieją trzy sposoby sprawdzania wystąpienia aplikacji przy użyciu sondy. Każda sonda musi zdefiniować jedną z następujących akcji sondy:

  • HTTPGetAction

    Wykonuje żądanie HTTP GET względem wystąpienia aplikacji w określonej ścieżce. Diagnostyka jest uznawana za pomyślną, jeśli odpowiedź ma kod stanu większy lub równy 200 i mniejszy niż 400.

    Nazwa właściwości Opis
    scheme Schemat używany do nawiązywania połączenia z hostem. Wartość domyślna to HTTP.
    path Ścieżka dostępu na serwerze HTTP wystąpienia aplikacji, na przykład /healthz.
  • ExecAction

    Wykonuje określone polecenie wewnątrz wystąpienia aplikacji. Diagnostyka jest uznawana za pomyślną, jeśli polecenie zakończy działanie z kodem stanu 0.

    Nazwa właściwości Opis
    command Polecenie do wykonania wewnątrz wystąpienia aplikacji. Katalog roboczy polecenia to katalog główny (/) w systemie plików wystąpienia aplikacji. Ponieważ polecenie jest uruchamiane przy użyciu exec zamiast wewnątrz powłoki, instrukcje powłoki nie będą działać. Aby użyć powłoki, jawnie wywołaj powłokę. Stan zakończenia 0 jest traktowany jako żywy/zdrowy, a wartość niezerowa jest w złej kondycji.
  • TCPSocketAction

    Wykonuje sprawdzanie protokołu TCP względem wystąpienia aplikacji.

    Dla akcji nie ma dostępnych właściwości TCPSocketAction .

Dostosowywanie aplikacji

Wykonaj poniższe kroki, aby dostosować aplikację przy użyciu witryny Azure Portal.

  1. W obszarze Ustawienia wybierz pozycję Aplikacje, a następnie wybierz aplikację z listy.

    Screenshot of Azure portal showing the Apps page.

  2. Wybierz pozycję Konfiguracja w okienku nawigacji po lewej stronie, wybierz pozycję Sondy kondycji, a następnie określ właściwości sondy kondycji.

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

  3. Aby ustawić okres prolongaty zakończenia, wybierz pozycję Ustawienia ogólne i określ wartość w polu Okres prolongaty zakończenia.

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

Najlepsze rozwiązania

Podczas dodawania sond kondycji do usługi Azure Spring Apps użyj następujących najlepszych rozwiązań:

  • Używaj razem sond gotowości i gotowości. Usługa Azure Spring Apps udostępnia dwa podejścia do odnajdywania usług w tym samym czasie. Gdy sonda gotowości zakończy się niepowodzeniem, wystąpienie aplikacji zostanie usunięte tylko z odnajdywania usługi Kubernetes. Prawidłowo skonfigurowana sonda aktualności może usunąć wystawione wystąpienie aplikacji z odnajdywania usługi Eureka, aby uniknąć nieoczekiwanych przypadków. Aby uzyskać więcej informacji na temat odnajdywania usług, zobacz Odnajdywanie i rejestrowanie aplikacji Spring Boot. Aby uzyskać więcej informacji na temat odnajdywania usług w ramach planu Enterprise, zobacz Use Tanzu Service Registry (Korzystanie z rejestru usługi Tanzu).

  • Po uruchomieniu wystąpienia aplikacji pierwsze sprawdzenie następuje po opóźnieniu określonym przez initialDelaySeconds. Kolejne kontrole są wykonywane okresowo, zgodnie z długością okresu określoną przez periodSeconds. Jeśli aplikacja nie będzie odpowiadać na żądania kilka razy określone przez failureThresholdusługę , wystąpienie aplikacji zostanie uruchomione ponownie. Upewnij się, że aplikacja może rozpocząć wystarczająco szybko lub zaktualizować te parametry, aby łączny limit initialDelaySeconds + periodSeconds * failureThreshold czasu był dłuższy niż czas rozpoczęcia aplikacji.

  • W przypadku aplikacji Spring Boot platforma Spring Boot jest dostarczana z obsługą grup kondycji, umożliwiając deweloperom wybranie podzestawu wskaźników kondycji i zgrupowanie ich w ramach jednego skorelowanego stanu kondycji. Aby uzyskać więcej informacji, zobacz Liveness and Readiness Probes with Spring Boot on the Spring Blog (Sondy kondycji i gotowości za pomocą platformy Spring Boot na blogu Spring).

    W poniższym przykładzie pokazano sondę liveness z platformą Spring Boot:

    "probe": {
           "initialDelaySeconds": 30,
           "periodSeconds": 10,
           "timeoutSeconds": 1,
           "failureThreshold": 30,
           "successThreshold": 1,
           "probeAction": {
               "type": "HTTPGetAction",
               "scheme": "HTTP",
               "path": "/actuator/health/liveness"
           }
       }
    

    W poniższym przykładzie pokazano sondę gotowości z platformą Spring Boot:

    "probe": {
           "initialDelaySeconds": 0,
           "periodSeconds": 10,
           "timeoutSeconds": 1,
           "failureThreshold": 3,
           "successThreshold": 1,
           "probeAction": {
               "type": "HTTPGetAction",
               "scheme": "HTTP",
               "path": "/actuator/health/readiness"
           }
       }
    

Często zadawane pytania

Ta sekcja zawiera odpowiedzi na często zadawane pytania dotyczące korzystania z sond kondycji w usłudze Azure Spring Apps.

  • Otrzymano odpowiedź 400 podczas tworzenia aplikacji z dostosowanymi sondami kondycji. Co to oznacza?

    Komunikat o błędzie wskazuje, która sonda jest odpowiedzialna za niepowodzenie aprowizacji. Upewnij się, że reguły sondy kondycji są poprawne i że limit czasu jest wystarczająco długi, aby aplikacja mogła znajdować się w stanie uruchomienia.

  • Jakie są domyślne ustawienia sondy dla istniejącej aplikacji?

    W poniższym przykładzie przedstawiono ustawienia domyślne:

    "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
    }
    

Następne kroki