Kontrole kondycji
Usługa CycleCloud oferuje dwa mechanizmy sprawdzania kondycji maszyn wirtualnych: Kontrola kondycji węzła jest nowszą funkcją, która przeprowadza kontrole na etapie aprowizacji i uniemożliwia dołączanie maszyn wirtualnych w złej kondycji, podczas gdy narzędzie HealthCheck uruchamia je okresowo po dołączeniu do klastra jako węzła przez maszynę wirtualną.
Testy kondycji węzła
Testy kondycji węzła mogą wykryć sprzęt w złej kondycji, zanim maszyna wirtualna będzie mogła dołączyć do klastra CycleCloud. Bieżąca wersja tej funkcji spowoduje uruchomienie skryptów kontroli kondycji wbudowanych w oficjalne obrazy azureHPC, które można znaleźć w obszarze /opt/azurehpc/test/azurehpc-health-checks/. Źródło tych skryptów znajduje się w repozytorium Kontroli kondycji węzła AzureHPC, ale należy pamiętać, że wersja wbudowana w wersję obrazu AzureHPC klastra może nie być najnowszą dostępną w repozytorium.
Wymagania
Bieżąca wersja kontroli kondycji węzła obsługuje tylko obrazy azureHPC wydane po 7 listopada 2023 r. (zawierające azurehpc-health-checks w wersji 2.0.6 lub nowszej) i obrazy niestandardowe pochodzące z nich. Testy kondycji węzła są obecnie nieobsługiwane w systemie Windows.
Włączanie kontroli kondycji węzła dla klastrów slurm
Formularz tworzenia klastra Slurm zawiera pole wyboru umożliwiające włączenie kontroli kondycji węzła znajdujących się na karcie Ustawienia zaawansowane . Zaznaczenie pola wyboru włącza kontrolę kondycji węzła w tablicy węzłów HPC klastra. Jeśli chcesz włączyć kontrole kondycji węzła w innych tablicach węzłów (lub w przypadku innych typów klastrów), musisz użyć niestandardowego szablonu klastra.
Kontrole kondycji węzła można wyłączyć w uruchomionym klastrze, usuwając zaznaczenie pola. Nie ma potrzeby skalowania tablicy węzłów w dół, aby zmiany zaczęły obowiązywać.
Informacje o wynikach testów kondycji węzła
Po zakończeniu kontroli kondycji maszyny wirtualnej przejdzie ona do fazy konfiguracji oprogramowania.
Jeśli maszyna wirtualna ulegnie awarii, którykolwiek ze skryptów kontroli kondycji, zostanie wysłany komunikat o błędzie do aplikacji CycleCloud, a maszyna wirtualna zostanie automatycznie uniemożliwiona dołączenie do klastra.
Jeśli maszyna wirtualna jest uruchomiona w środowisku NodeArray z włączoną nadmierną aprowizowaniem (np. tablicą węzłów o wysokiej wydajności slurm), maszyna wirtualna powinna zostać zamieniona automatycznie w ramach nadmiernej aprowizacji. W takim przypadku nie jest wymagana żadna akcja, a maszyny wirtualne w dobrej kondycji zostaną wybrane do dołączenia do klastra (choć na stronie klastra zostanie wyświetlony komunikat o błędzie wskazujący, że co najmniej jedna z maszyn wirtualnych zakończyła się niepowodzeniem).
Jeśli maszyna wirtualna jest uruchomiona dla pojedynczego węzła, macierz węzłów z wyłączoną nadmierną aprowizowaniem (np. Macierz węzłów Htc Slurm) lub jeśli więcej maszyn wirtualnych nie powiedzie się, niż są obsługiwane przez nadmierną aprowizację, węzeł przejdzie do stanu Niepowodzenie, a alokacja zakończy się niepowodzeniem. Usługa CycleCloud może podjąć próbę ponownego obrazu maszyny wirtualnej w celu rozwiązania problemu, ale jeśli ponowny obraz zakończy się niepowodzeniem, węzeł będzie musiał zostać przerwany i zastąpiony (ręcznie przez administratora lub automatycznie przez narzędzie do automatycznego skalowania).
Uwaga
Jeśli włączono kontrole kondycji węzła, ale obraz maszyny wirtualnej nie spełnia powyższych wymagań, wszystkie maszyny wirtualne będą mogły dołączyć do klastra, ale stan będzie zawierać ostrzeżenie wskazujące, że kontrole nie są obsługiwane.
Odwołanie do atrybutów
Atrybut | Typ | Definicja |
---|---|---|
EnableNodeHealthChecks | Wartość logiczna | (Opcjonalnie) Włączanie kontroli kondycji węzła rozruchowego dla tego węzła lub macierzy węzłów |
Sprawdzanie kondycji
Usługa Azure CycleCloud udostępnia mechanizm zamykania maszyn wirtualnych w złej kondycji o nazwie HealthCheck. Skrypty zdefiniowane przez system i użytkownika (Python i Bash) są uruchamiane okresowo (5 minut w systemie Windows, 10 minut w systemie Linux), aby określić ogólną kondycję maszyny wirtualnej. Funkcja HealthCheck umożliwia administratorom definiowanie warunków, w których należy zakończyć działanie maszyn wirtualnych bez konieczności ręcznego monitorowania i korygowania.
Wbudowane skrypty healthCheck
Maszyny wirtualne z włączoną usługą CycleCloud są dostarczane z dwoma domyślnymi skryptami HealthCheck:
- Skrypt converge_timeout zakończy działanie wystąpienia, które nie zakończyło konfiguracji oprogramowania w ciągu czterech godzin od uruchomienia. Ten limit czasu można kontrolować za
cyclecloud.keepalive.timeout
pomocą ustawienia (zdefiniowanego w sekundach). - Skrypt scheduled_shutdown wyszukuje pliki producenta w $JETPACK_HOME/run/scheduled_shutdown , które zawierają pojedynczy wiersz dający czas zamknięcia w sekundach znacznika czasu systemu Unix i opcjonalny drugi wiersz z wyjaśnieniem. Jeśli bieżąca godzina jest późniejsza niż najwcześniejsza sygnatura czasowa w plikach, maszyna wirtualna jest uważana za w złej kondycji.
Jak to działa
Skrypty HealthCheck znajdują się w katalogu $JETPACK_HOME/config/healthcheck.d . System Linux obsługuje skrypty języka Python i powłoki Bash, natomiast system Windows obsługuje tylko skrypty języka Python. Skrypt powinien określić kondycję maszyny wirtualnej. Jeśli okaże się, że maszyna wirtualna jest w złej kondycji, skrypt powinien zakończyć działanie ze stanem 254
, co oznacza, że maszyna wirtualna jest w złej kondycji i powinna zostać zakończona.
Po zalogowaniu się do maszyny wirtualnej z uruchomioną usługą HealthCheck możesz uniemożliwić zamknięcie maszyny wirtualnej, uruchamiając polecenie jetpack keepalive. W wystąpieniach systemu Linux można określić przedział czasu w godzinach lub forever
gdy w systemie Windows forever
jest jedyną opcją.
Uwaga
Jeśli maszyna wirtualna jest w złej kondycji, agent HealthCheck wyśle żądanie zamknięcia maszyny wirtualnej przez usługę CycleCloud, a maszyna wirtualna nigdy nie zostanie zamknięta lokalnie za pomocą shutdown
polecenia . W przypadku, gdy maszyna wirtualna nie może komunikować się z usługą CycleCloud, maszyna wirtualna pozostanie w złej kondycji, dopóki nie zostanie osiągnięta godzina osiągnięcia rozwiązania CycleCloud.
Przykład
Jako prosty przykład napiszemy skrypt HealthCheck, który zapewni, że maszyna wirtualna z systemem Linux nie jest aktywna przez ponad 24 godziny. Ten skrypt może służyć do symulowania eksmisji o niskim priorytcie w celu przetestowania sposobu reagowania przepływu pracy na eksmitowaną maszynę wirtualną. Ten skrypt zostanie umieszczony w pliku /opt/cycle/jetpack/config/healthcheck.d/healthcheck_example.sh
#!/bin/bash
# Get the uptime of the system (in seconds) and check to see if it is
# greater than 86,400 (24 hours in seconds). If it is, exit 254 to
# signal that the VM is unhealthy.
if (( $(cat /proc/uptime | awk '{print ($1 > 86400)}'))); then
exit 254
fi
Uwaga
Ten skrypt można umieścić na maszynie wirtualnej za pomocą projektu CycleCloud lub dodając go bezpośrednio podczas tworzenia obrazu niestandardowego.