Opis integracji i skalowania automatycznego w usłudze Azure CycleCloud

Ukończone

Korzystanie z elastyczności chmury pozwala firmom w pełni korzystać z możliwości hiperskala platformy Azure przy jednoczesnym zminimalizowaniu kosztów operacyjnych związanych z korzystaniem z zasobów obliczeniowych. Możliwość automatycznego skalowania ilości zasobów w odpowiedzi na wzorce użycia jest podstawowym składnikiem tej elastyczności. W kontekście usług Azure CycleCloud i HPC przekłada się to na implementację ścisłej korelacji między zapotrzebowaniem na zasoby zadań klastra a liczbą węzłów obliczeniowych klastra.

Ogólnie rzecz biorąc, orkiestracja skalowania węzłów klastra jest obowiązkiem harmonogramów. Harmonogramy muszą mieć możliwość komunikowania swoich wymagań z platformą, która zapewnia zasoby obliczeniowe. Usługa Azure CycleCloud pomaga zaimplementować tę funkcję. W tej lekcji poznasz zasady tej implementacji.

Jaka jest rola usługi Azure CycleCloud w skalowaniu automatycznym klastra?

Usługa Azure CycleCloud ułatwia wdrażanie harmonogramów na platformie Azure, które z kolei dystrybuują zadania uruchomione w klastrach składających się z zasobów platformy Azure i zarządzaj nimi. Usługa Azure CycleCloud nie działa jako harmonogram. Zamiast tego działa jako pośrednik między harmonogramami a podstawową platformą. Usługa Azure CycleCloud upraszcza również opracowywanie funkcji skalowania automatycznego dla odpowiednich harmonogramów, zapewniając interfejs programowania oparty na interfejsie API REST i bibliotekę klienta opartą na języku Python.

Usługa Azure CycleCloud umożliwia skorelowanie zachowania automatycznego skalowania zarządzanych klastrów z długością kolejek zadań klastra. To zachowanie można dodatkowo dostosować, definiując parametry szablonu, które kontrolują, na przykład czas zakończenia bezczynności węzłów lub częstotliwość sprawdzania automatycznego zatrzymania.

Wszystkie wbudowane szablony uwidaczniają ustawienia skalowania automatycznego bezpośrednio w interfejsie graficznym usługi Azure CycleCloud. W każdym przypadku ustawienia obejmują opcję określenia dolnej i górnej granicy zakresu skalowania automatycznego, wyrażonego w liczbie rdzeni procesora CPU. Górny limit pomaga zminimalizować możliwość nieprzewidzianych opłat. Możesz jeszcze bardziej ograniczyć to ryzyko, ustawiając alerty budżetowe.

Po ustawieniu niższego progu na 0 utworzenie klastra powoduje aprowizowanie tylko węzła głównego harmonogramu. Jednak gdy harmonogram wykryje zadania w kolejce, inicjuje aprowizację węzłów obliczeniowych, które są niezbędne do wykonania odpowiedniego obciążenia, aż do zdefiniowanego limitu. Aby obsługiwać luźno sprzężone lub równoległe zadania, w których poszczególne zadania są wykonywane niezależnie od siebie, zadania zaczynają działać natychmiast po udostępnieniu pierwszego węzła. W przypadku ściśle powiązanych zadań, takich jak te korzystające z funkcji interfejsu MPI (Message Passing Interface), czas oczekiwania jest dłuższy, w zależności od zakresu zależności międzywęzłowych. Gdy kolejka zadań jest pusta przez czas przekraczający dozwolony czas bezczynności, węzły obliczeniowe zaczynają się automatycznie zatrzymać, a klaster ponownie składa się tylko z węzła głównego harmonogramu.

Uwaga

Podstawowe pojęcia opisane w tej lekcji są wspólne wśród harmonogramów. Jednak ich szczegóły implementacji są specyficzne dla harmonogramu. Szczegółowe informacje na temat każdej implementacji można znaleźć w dokumentacji poszczególnych harmonogramów.

Jak zintegrować harmonogramy z skalowaniem automatycznym w usłudze Azure CycleCloud

Dwa podstawowe składniki implementujące integrację z funkcją automatycznego skalowania w usłudze Azure CycleCloud to Biblioteka autoskalowania w usłudze Azure CycleCloud i Kalkulator zapotrzebowania.

Diagram architektury wysokiego poziomu usługi Azure CycleCloud.

Biblioteka automatycznego skalowania w usłudze Azure CycleCloud to projekt typu open source hostowany w usłudze GitHub, który umożliwia pomocnikom języka Python uproszczenie tworzenia skalowania automatycznego dla dowolnego harmonogramu wdrożonego na platformie Azure. Pomocnicy używają interfejsu API REST usługi Azure CycleCloud do organizowania aprowizacji zasobów platformy Azure. Projekt używa języka Python 3 i ma wiele zależności języka Python. Jednak jej podstawowa funkcjonalność opiera się na bibliotece klienta języka Python w usłudze Azure CycleCloud. Automatyczne skalowanie integruje się z węzłami głównymi harmonogramu, które monitorują kolejki zadań. Automatyczne skalowanie zwiększa lub zmniejsza liczbę węzłów obliczeniowych przez interakcję z interfejsem API REST autoskalowania uruchomionym na serwerze aplikacji Azure CycleCloud.

Kalkulator zapotrzebowania jest odpowiedzialny za ocenę wymagań dotyczących zasobów na podstawie węzła obliczeniowego i danych zadań zebranych przez harmonogram. Ta ocena uwzględnia ograniczenia obliczeniowe i sieciowe, takie jak maksymalny rozmiar klastra lub limity związane z funkcją InfiniBand. Wynikowe wymagania dotyczące zasobów przekładają się na żądanie aprowizacji lub anulowania aprowizacji maszyn wirtualnych platformy Azure o określonym rozmiarze i konfiguracji. Biblioteka autoskalowania przekazuje te żądania do interfejsu API REST usługi Azure CycleCloud, który następnie dostarcza je za pośrednictwem orkiestratora do usługi Azure Resource Manager.

Uwaga

Podczas gdy integracja z harmonogramem obsługuje luźno powiązane lub równoległe obciążenia, w których zarządzanie rozmiarem klastra jest główną kwestią, usługa Azure CycleCloud obsługuje również ściśle powiązane obciążenia, gdzie zbliżenie węzłów i opóźnienie sieci są krytyczne.