Udostępnij za pośrednictwem


Jak skonfigurować sondy kondycji i okresy łagodnego zakończenia dla aplikacji hostowanych w usłudze Azure Spring Apps

Uwaga

Plany Basic, Standardi Enterprise weszły w okres wycofywania 17 marca 2025 r. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.

Plan dotyczący zużycia standardowego oraz dedykowany plan zostały wycofane 30 września 2024 r., z całkowitym zamknięciem do końca marca 2025 r. Aby uzyskać więcej informacji, zobacz Migrowanie użycia usługi Azure Spring Apps w warstwie Standardowa i dedykowanego planu do usługi Azure Container 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 jest działaniem diagnostycznym wykonywanym okresowo przez usługę Azure Spring Apps na instancji aplikacji. Aby wykonać diagnostykę, usługa Azure Spring Apps wykonuje jedną z następujących akcji:

  • Wykonuje dowolne polecenie wybrane w instancji 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 żywotności określają, kiedy należy ponownie uruchomić aplikację. Na przykład sondy żywotności mogą identyfikować zakleszczenia, takie jak 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 instancja aplikacji jest gotowa do rozpoczęcia akceptowania ruchu. Na przykład sondy gotowości mogą kontrolować, które wystąpienia aplikacji są wykorzystywane jako usługi zapasowe dla aplikacji. Gdy wystąpienie aplikacji nie jest gotowe, jest usuwane z odnajdywania usług 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 Korzystanie z rejestru usług 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 startowe umożliwiają przeprowadzanie kontroli żywotności aplikacji, które startują wolno, zapobiegając zakończeniu 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.

Łagodne zakończenie

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

Nazwa właściwości Opis
terminationGracePeriodSeconds Czas w sekundach, po którym procesy działające w wystąpieniu aplikacji otrzymują sygnał zakończenia, zanim zostaną siłą 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 natychmiast zatrzymuje wystąpienie aplikacji za pomocą sygnału kill, nie dając możliwości zamknięcia. Jeśli wartość to nil, usługa Azure Spring Apps używa domyślnego okresu prolongaty. Wartość domyślna to 90.

Właściwości sondy diagnostycznej zdrowia

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 instancji aplikacji, zanim sondy zostaną zainicjowane. Wartość domyślna to 0, minimalna wartość.
periodSeconds Częstotliwość w sekundach dla wykonania testu/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, aby sonda została uznana za udaną po niepowodzeniu. Wartość domyślna to 1. Wartość musi być 1 dla żywotności i rozruchu. 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 traktuje się jako żywy/zdrowy, a inny niż zero jako niezdrowy.
  • TCPSocketAction

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

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

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.

    Zrzut ekranu witryny Azure Portal przedstawiający stronę Aplikacje.

  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.

    Zrzut ekranu przedstawiający stronę Konfiguracja witryny Azure Portal z kartą Sondy kondycji.

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

    Zrzut ekranu przedstawiający stronę Konfiguracja witryny Azure Portal z kartą Ustawienia ogólne.

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 żywotnoś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 mechanizmu odkrywania usług Kubernetes. Prawidłowo skonfigurowana sonda żywotności może usunąć wskazane wystąpienie aplikacji z systemu wykrywania usług 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 Korzystanie z rejestru usług 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 odpowie na żądania określoną liczbę razy zgodnie z failureThreshold, instancja aplikacji zostanie uruchomiona 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 w 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.

  • Otrzymałem odpowiedź 400 podczas tworzenia aplikacji z dostosowanymi sondami zdrowotnymi. Co to oznacza?

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

  • 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