Używanie maszyn wirtualnych typu spot w usłudze Azure CycleCloud
Usługa Azure CycleCloud obsługuje wdrażanie maszyn wirtualnych typu spot w obszarze nodearrays w celu znacznego zmniejszenia kosztów operacyjnych klastrów.
Przestroga
Maszyny wirtualne typu spot nie są odpowiednie dla wszystkich obciążeń i typów klastrów. Nie oferują umowy SLA dotyczącej dostępności ani pojemności. Są to wystąpienia "wywłaszczalne" lub "o niskim priorytecie" i mogą być eksmitowane przez sieć szkieletową platformy Azure w celu zarządzania pojemnością i zmianą cen typu spot.
Konfigurowaniearray nodearray dla typu spot
Aby włączyć funkcję Spot dla nodearray, po prostu ustaw wartość Interruptible
true w [[nodearray]]
sekcji.
Usługa CycleCloud umożliwia klastrom określanie MaxPrice
wystąpienia typu spot. Ponieważ cena spot może być okresowo dostosowywana i może się znacznie różnić w zależności od regionów i jednostek SKU, MaxPrice
użytkownicy mogą kontrolować maksymalną cenę (w usd/godzinę), które są skłonni zapłacić za maszynę wirtualną. Domyślnie usługa CycleCloud ustawia MaxPrice=-1
wartość , jeśli nie określono inaczej, co oznacza "nie wykluczaj na podstawie ceny spot". Dzięki temu ustawieniu wystąpienia będą eksmitowane tylko z powodu zmian zapotrzebowania na pojemność lub innych decyzji na poziomie platformy.
Zobacz Cennik typu spot , aby uzyskać szczegółowe informacje na temat zmiennych cen wystąpień typu spot.
W przypadku większości aplikacji MaxPrice=-1
HPC jest dobrym wyborem domyślnym. Jeśli jednak właściwość nodearray obsługuje skalowanie automatyczne wielokrotnego wyboru w wielu jednostkach SKU maszyn wirtualnych, MaxPrice
może być również dostosowywana w celu utworzenia preferencji dla niższych cen jednostek SKU na liście wielokrotnego wyboru.
[cluster demo]
[[nodearray execute]]
Interruptible = true
MaxPrice = 0.2
Aby uzyskać szczegółowe informacje, zobacz spot Virtual Machines w przewodniku po szablonie klastra.
Eksmisja maszyn wirtualnych typu spot
Usługa CycleCloud monitoruje eksmisji typu spot za pośrednictwem funkcji Zaplanowane zdarzenia . Po wykryciu zdarzenia wywłaszczania typu spot usługa CycleCloud jest powiadamiana przez maszynę wirtualną, a wystąpienie jest przenoszone do stanu "oczekiwanie na eksmisję".
Często zadawane pytania
Korzystanie z rozwiązania Spot z usługą CycleCloud ma pewne zagadnienia dotyczące obciążeń HPC i automatycznego skalowania usługi CycleCloud.
Kiedy należy rozważyć użycie usługi Spot?
- Czy twoje indywidualne zadania są stosunkowo krótkie?
- Dobrą zasadą jest to, że zadania uruchamiane w mniej niż jedną godzinę mogą być dobrym rozwiązaniem dla wystąpień typu spot, ponieważ stosunkowo mały postęp do przodu zostanie utracony, jeśli wystąpienie zostanie wykluczone.
- Czy harmonogram automatycznie ponawia próby/ponowne kolejki zadań na hostach, które kończą się niepowodzeniem?
- Czy zadania są bezpieczne do ponownego uruchomienia, jeśli host jest eksmitowany podczas wykonywania?
- Ogólnie rzecz biorąc, wystąpienia typu spot są najlepsze w przypadku obciążeń bezstanowych.
- Czy minimalizacja kosztów przebiegu jest ważniejsza niż czas ukończenia?
- Rozwiązanie Spot jest często idealne w przypadku obciążeń, które mogą być zaplanowane w kolejkach o niskim priorytcie lub w kolejkach wypełniania wstecznego w środowisku lokalnym.
- Jest to jeden z przypadków, w których spot może być odpowiedni nawet w przypadku krótkich zadań MPI.
Kiedy należy unikać używania spot?
- Jeśli twoje zadania są ściśle powiązane z zadaniami HPC (na przykład zadaniaMI MPI), prawdopodobnie nie są dobrymi kandydatami do spot.
- Jeśli zadanie ma krytyczne znaczenie i/lub ma termin ukończenia, regularne wystąpienia priorytetu mogą być lepiej dopasowane, ponieważ eksmisje i ponawianie prób może wydłużyć czas do ukończenia.
- Jednak może to być doskonała okazja do skonfigurowania klastra w celu używania kombinacji wystąpień typu spot o stałym priorytetzie i w celu zapewnienia spełnienia terminu ostatecznego podczas próby zmniejszenia czasu wykonywania i kosztów przez dodanie wystąpień typu Spot.
- Jeśli zadania nie są bezpieczne do ponownego uruchomienia, należy unikać funkcji Spot.
- Jeśli na przykład zadanie modyfikuje bazę danych podczas wykonywania, automatyczne ponowne uruchomienie zadania może spowodować błędy lub nieprawidłowe wyniki.
- Jeśli środowiska uruchomieniowe zadań są bardzo długie, spot może nie być dobrym rozwiązaniem.
- W przypadku długich procesów zarówno prawdopodobieństwo eksmisji spot, jak i dolara i kosztów czasu ponawiania prób wzrasta.
- Jednak jest to przypadek, który może wymagać pomiaru w zależności od przypadku.
Eksmisja/wywłaszczanie
Zobacz Zasady eksmisji typu spot, aby uzyskać szczegółowe informacje na temat eksmisji typu spot na platformie Azure.
PYTANIE: Czy usługa CycleCloud może śledzić eksmisji/wywłaszczania wystąpień typu spot?
A. Tak. Zdarzenie eksmisji typu spot spowoduje wygenerowanie powiadomienia dziennika zdarzeń na stronie Interfejs użytkownika klastrów.
PYTANIE: Jak użytkownicy są powiadamiani o eksmisji?
A. Po eksmitowaniu węzła CycleCloud użytkownicy zobaczą komunikat dziennika w dzienniku zdarzeń interfejsu użytkownika usługi CycleCloud dla klastra. Użytkownicy mogą również zarejestrować się w celu odbierania zdarzenia z usługi CycleCloud za pośrednictwem usługi Azure EventGrid po eksmitowanym wystąpieniu typu spot.
- Użytkownicy mogą sprawdzić powiadomienie o eksmisji na maszynie 30 sekund przed eksmisją. Aby uzyskać szczegółowe informacje na temat rejestrowania zdarzenia, zobacz Zaplanowane zdarzenia .
- Ogólnie rzecz biorąc, eksmisja powinna być uważana za podobną do ściągania wtyczki na maszynie lokalnej i powinna być obsługiwana w ten sam sposób.
- WAŻNE Programy obsługi zdarzeń nie powinny potwierdzać zdarzenia eksmisji typu spot, ponieważ program obsługi zdarzeń usługi Cyclecloud może nie odbierać zdarzenia, jeśli zostanie potwierdzone.
PYTANIE: Jak często występuje eksmisja?
A. Współczynnik eksmisji jest bardzo zmienny i w dużej mierze zależy od zmian zapotrzebowania w całym regionie.
PYTANIE: Dlaczego wystąpienia są eksmitowane?
A. Maszyny wirtualne typu spot nie gwarantują dostępności i mogą zostać wykluczone w dowolnym momencie. Aby uzyskać szczegółowe informacje, zobacz dokumentację maszyny wirtualnej typu spot . Jeśli właściwość nodearray ustawi, MaxPrice
wystąpienia zostaną wykluczone, jeśli cena spot wzrośnie powyżej MaxPrice
. Zwykle zdarza się to rzadko , ponieważ cena spot porusza się bardzo powoli. Poniżej przedstawiono niektóre scenariusze, które mogą wyzwolić eksmisję:
- Zmniejszenie pojemności typu spot w miarę wzrostu zapotrzebowania na regularne maszyny wirtualne o priorytetyzowaniu.
- Zdarzenia na poziomie platformy, takie jak planowana konserwacja sprzętu.
Jak mój przepływ pracy ma wpływ na eksmisję?
PYTANIE: Co się stanie z moimi zadaniami po eksmitowanym wystąpieniu typu spot?
A. O ile zadania nie są kodowane w celu obsługi 30-sekundowego powiadomienia eksmisji i obsłużenia go odpowiednio, węzeł zostanie po prostu zakończony i zadanie zakończy się niepowodzeniem (i miejmy nadzieję, że zostanie ponownie wypróbowane).
PYTANIE: Czy węzły są usuwane z klastra?
A. Tak, węzły zostaną wyczyszczone w interfejsie użytkownika aplikacji CycleCloud. W obsługiwanych harmonogramach węzły zostaną również wyczyszczone w harmonogramie.
PYTANIE: Czy zadania muszą zostać uruchomione ponownie?
A. Ogólnie rzecz biorąc, zadaniem harmonogramu jest ponowne wypróbowanie / ponowne uruchomienie zadań, które są eksmitowane. Jednak wiele klas zadań nie jest tolerancyjnych ponownych prób (na przykład jeśli zapisują częściowe dane do magazynu trwałego podczas ich uruchamiania). Te zadania mogą nie być dobrym kandydatem do wykonania w wystąpieniach typu spot.
PYTANIE: Czy mogę używać kombinacji maszyn wirtualnych typu spot i na żądanie/maszyn wirtualnych z priorytetem regularnym?
A. Tak. Można użyć oddzielnych węzłów typu Spot (Interruptible
) i innych niż spot, aby utworzyć kombinację typu spot i priorytetu regularnego. Użycie kombinacji typów wystąpień zwykle wymaga podjęcia pewnych decyzji konfiguracyjnych w zależności od wymagań i harmonogramu wybranego przez użytkownika. Oto kilka typowych konfiguracji:
- Rozdziel maszyny wirtualne typu spot i Regular-Priority na oddzielne kolejki w harmonogramie.
- Ta konfiguracja umożliwia przesyłaniu łatwe kierowanie zadań w odpowiednim typie maszyny wirtualnej
- Utwórz jedną dużą pulę zasobów z wystąpieniami typu spot i Regular-Priority.
- Ta konfiguracja może być przydatna w przypadku wysoce skalowalnych obciążeń, które używają niewielkiego procentu regularnych wystąpień priorytetowych, aby zapewnić postęp do przodu i duży procent typu Spot w celu zmniejszenia kosztów i środowiska uruchomieniowego.
PYTANIE: Czy mogę zmienić zasady eksmisji typu spot dla węzłów CycleCloud?
A. Tak. Atrybut można ustawić EvictionPolicy
bezpośrednio w pliku nodearray, aby zmienić zasady na Delete
lub Deallocate
(wartość domyślna: Delete
).
Jest to jednak obecnie przydatne tylko w przypadku niestandardowych autoskalatorów, które odpowiednio obsługują przydziały. Bieżące skalowanie automatyczne usługi Azure CycleCloud oczekuje usunięcia wystąpień typu spot po eksmisji.
Obsługa eksmisji typu spot w usłudze CycleCloud w usłudze Scheduler
Szczegółowe informacje na temat implementacji usługi CycleCloud dla harmonogramu można znaleźć w przewodniku specyficznym dla harmonogramu.
PYTANIE: W jaki sposób narzędzie do automatycznego skalowania dla mojego harmonogramu obsługuje eksmisję typu spot?
A. Wszystkie narzędzia do automatycznego skalowania dla wbudowanych/obsługiwanych harmonogramów (HTCondor, GridEngine, PBS Professional, Slurm, LSF) próbują bezpiecznie obsłużyć eksmisji spot. Ogólnie rzecz biorąc, eksmitowane wystąpienie zostanie usunięte z harmonogramu, a jeśli zapotrzebowanie na pojemność jest wyższe niż nowa dostępna pojemność po eksmisji, autoskalator zastąpi wystąpienie.
Niestandardowe skalowanie automatyczne należy skompilować, aby oczekiwać eksmisji typu spot lub ogólnych awarii maszyn i obsługiwać je bezpiecznie.
PYTANIE: Czego należy oczekiwać od zadań uruchomionych w eksmitowanym wystąpieniu?
A. Jest to w dużej mierze zależne od użytkownika do skonfigurowania podczas przesyłania zadania. Niektóre harmonogramy, takie jak GridEngine, umożliwiają również skonfigurowanie domyślnej akcji na kolejkę. Domyślnie wszystkie wbudowane wdrożenia harmonogramu CycleCloud, z wyjątkiem HTCondor, są skonfigurowane do oznaczania zadań jako zakończonych niepowodzeniem, gdy węzeł, na którym są uruchomione, jest eksmitowany lub nieoczekiwanie zakończony. Takie zachowanie jest projektowane, ponieważ tylko użytkownik może wiedzieć, czy ich zadania mogą być bezpiecznie ponawiane.