Samouczek: automatyczne skalowanie zestawu skalowania maszyn wirtualnych przy użyciu interfejsu wiersza polecenia platformy Azure
Podczas tworzenia zestawu skalowania musisz zdefiniować liczbę wystąpień maszyn wirtualnych, które chcesz uruchamiać. W odpowiedzi na zmieniające się zapotrzebowanie aplikacji możesz automatycznie zwiększać lub zmniejszać liczbę wystąpień maszyn wirtualnych. Skalowanie automatyczne pozwala spełniać potrzeby klientów lub reagować na zmiany wydajności aplikacji w całym cyklu jej życia. Ten samouczek zawiera informacje na temat wykonywania następujących czynności:
- Używanie funkcji skalowania automatycznego z zestawem skalowania
- Tworzenie reguł skalowania automatycznego i korzystanie z nich
- Testy obciążeniowe wystąpień maszyn wirtualnych i wyzwalanie reguł skalowania automatycznego
- Skalowanie automatyczne do wewnątrz po zmniejszeniu zapotrzebowania
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
Wymagania wstępne
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
- Ten samouczek wymaga wersji 2.0.32 lub nowszej interfejsu wiersza polecenia platformy Azure. W przypadku korzystania z usługi Azure Cloud Shell najnowsza wersja jest już zainstalowana.
Tworzenie zestawu skalowania
Utwórz grupę zasobów za pomocą polecenia az group create.
az group create --name myResourceGroup --location eastus
Teraz utwórz zestaw skalowania maszyn wirtualnych za pomocą polecenia az vmss create. Poniższy przykład tworzy zestaw skalowania z liczbą wystąpień wynoszącą 2 i generuje klucze SSH, jeśli nie istnieją.
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--image <SKU image> \
--orchestration-mode Flexible \
--instance-count 2 \
--admin-username azureuser \
--generate-ssh-keys
Definiowanie profilu skalowania automatycznego
Aby włączyć skalowanie automatyczne na zestawie skalowania, najpierw zdefiniuj profil skalowania automatycznego. Ten profil obejmuje definiowanie domyślnej, minimalnej i maksymalnej pojemności zestawu skalowania. Dzięki tym limitom możesz kontrolować koszty, ponieważ wystąpienia maszyn wirtualnych nie są tworzone w sposób ciągły, zaś akceptowalna wydajność jest zrównoważona z minimalną liczbą wystąpień, które pozostają w zdarzeniu skalowania w pionie. Utwórz profil skalowania automatycznego za pomocą polecenia az monitor autoscale create. W poniższym przykładzie ustawiono domyślną, minimalną pojemność — 2 — oraz maksymalną pojemność — 10 wystąpień maszyn wirtualnych:
az monitor autoscale create \
--resource-group myResourceGroup \
--resource myScaleSet \
--resource-type Microsoft.Compute/virtualMachineScaleSets \
--name autoscale \
--min-count 2 \
--max-count 10 \
--count 2
Tworzenie reguły skalowania automatycznego w poziomie
Wraz ze wzrostem zapotrzebowania aplikacji zwiększa się obciążenie wystąpień maszyn wirtualnych w zestawie skalowania. Jeśli wzrost obciążenia ma cechy stałego trendu, można skonfigurować reguły skalowania automatycznego umożliwiające zwiększenie liczby wystąpień maszyn wirtualnych w zestawie skalowania. Gdy aplikacje zostaną wdrożone, zestaw skalowania rozpoczyna kierowanie ruchu do nowo utworzonych wystąpień maszyn wirtualnych za pośrednictwem modułu równoważenia obciążenia. Określasz, jakie metryki mają być monitorowane, jak długo obciążenie aplikacji musi spełniać określony próg i ile wystąpień maszyn wirtualnych należy dodać do zestawu skalowania.
Utwórz regułę za pomocą polecenia az monitor autoscale rule create , która zwiększa liczbę wystąpień maszyn wirtualnych w zestawie skalowania, gdy średnie obciążenie procesora CPU jest większe niż 70% w okresie 5 minut. Wyzwolenie reguły powoduje zwiększenie liczby wystąpień maszyn wirtualnych o trzy.
az monitor autoscale rule create \
--resource-group myResourceGroup \
--autoscale-name autoscale \
--condition "Percentage CPU > 70 avg 5m" \
--scale out 3
Tworzenie reguły skalowania automatycznego w pionie
Wieczorami lub w weekendy zapotrzebowanie aplikacji może być mniejsze. Jeśli spadek obciążenia ma cechy stałego trendu w danym okresie, można skonfigurować reguły skalowania automatycznego umożliwiające zmniejszenie liczby wystąpień maszyn wirtualnych w zestawie skalowania. Akcja skalowania w pionie ogranicza koszt używania zestawu skalowania, ponieważ jest uruchomionych tylko tyle wystąpień, ile jest wymaganych do zaspokojenia bieżącego zapotrzebowania.
Za pomocą polecenia az monitor autoscale rule create utwórz inną regułę, która zmniejsza liczbę wystąpień maszyn wirtualnych w zestawie skalowania, jeśli w okresie 5 minut średnie obciążenie procesora CPU spadnie poniżej 30%. W poniższym przykładzie zdefiniowano regułę umożliwiającą skalowanie w pionie liczby wystąpień maszyn wirtualnych o jeden.
az monitor autoscale rule create \
--resource-group myResourceGroup \
--autoscale-name autoscale \
--condition "Percentage CPU < 30 avg 5m" \
--scale in 1
Generowanie obciążenia procesora CPU w zestawie skalowania
Przetestowanie reguł skalowania automatycznego wymaga wygenerowania obciążenia procesora CPU na wystąpieniach maszyn wirtualnych w zestawie skalowania. Symulowane obciążenie procesora CPU powoduje uruchomienie skalowania w poziomie przez reguły skalowania automatycznego, a w efekcie zwiększenie liczby wystąpień maszyn wirtualnych. Gdy symulowane obciążenie procesora CPU zmniejszy się, nastąpi automatyczne skalowanie w pionie i ograniczenie liczby wystąpień maszyn wirtualnych.
Aby nawiązać połączenie z pojedynczym wystąpieniem, zobacz Samouczek: nawiązywanie połączenia z wystąpieniami zestawu skalowania maszyn wirtualnych
Po zalogowaniu zainstaluj narzędzie stress lub stress-ng . Uruchom 10 procesów roboczych przeciążeniowych , które generują obciążenie procesora CPU. Procesy robocze będą działać przez 420 sekund, co wystarczy do zaimplementowania odpowiedniej akcji przez reguły skalowania automatycznego.
sudo apt-get update
sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &
Gdy narzędzie stress wyświetli dane wyjściowe podobne do stress: info: [2688] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, naciśnij klawisz Enter, aby powrócić do wiersza polecenia.
Aby potwierdzić obecność wygenerowanego obciążenia procesora CPU przez narzędzie stress, sprawdź aktywne obciążenie systemu za pomocą narzędzia top:
top
Zakończ działanie narzędzia top, a następnie zamknij połączenie z wystąpieniem maszyny wirtualnej. Narzędzie stress będzie kontynuować działanie na wystąpieniu maszyny wirtualnej.
Ctrl-c
exit
Połącz się z drugim wystąpieniem maszyny wirtualnej przy użyciu numeru portu z poprzedniego polecenia az vmss list-instance-connection-info:
ssh azureuser@13.92.224.66 -p 50003
Zainstaluj i uruchom narzędzie stress lub stress-ng, a następnie uruchom dziesięć procesów roboczych w tym drugim wystąpieniu maszyny wirtualnej.
sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &
I ponownie, gdy narzędzie stress wyświetli dane wyjściowe podobne do stress: info: [2713] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, naciśnij klawisz Enter, aby powrócić do wiersza polecenia.
Zamknij połączenie z drugim wystąpieniem maszyny wirtualnej. Narzędzie stress będzie kontynuować działanie na wystąpieniu maszyny wirtualnej.
exit
Monitorowanie aktywnych reguł skalowania automatycznego
Do monitorowania liczby wystąpień maszyn wirtualnych w zestawie skalowania służy narzędzie watch. Po upływie 5 minut reguły skalowania automatycznego rozpoczynają proces skalowania w poziomie w odpowiedzi na obciążenie procesora CPU wygenerowane przez narzędzie stress na poszczególnych wystąpieniach maszyn wirtualnych:
watch az vmss list-instances \
--resource-group myResourceGroup \
--name myScaleSet \
--output table
Po osiągnięciu progu procesora CPU reguły skalowania automatycznego zwiększają liczbę wystąpień maszyn wirtualnych w zestawie skalowania. Następujące dane wyjściowe zawierają trzy maszyny wirtualne tworzone w zestawie skalowania podczas automatycznego skalowania w poziomie:
Every 2.0s: az vmss list-instances --resource-group myResourceGroup --name myScaleSet --output table
InstanceId LatestModelApplied Location Name ProvisioningState ResourceGroup VmId
------------ -------------------- ---------- ------------ ------------------- --------------- ------------------------------------
1 True eastus myScaleSet_1 Succeeded myResourceGroup 4f92f350-2b68-464f-8a01-e5e590557955
2 True eastus myScaleSet_2 Succeeded myResourceGroup d734cd3d-fb38-4302-817c-cfe35655d48e
4 True eastus myScaleSet_4 Creating myResourceGroup 061b4c90-0d73-49fc-a066-19eab0b3d95c
5 True eastus myScaleSet_5 Creating myResourceGroup 4beff8b9-4e65-40cb-9652-43899309da27
6 True eastus myScaleSet_6 Creating myResourceGroup 9e4133dd-2c57-490e-ae45-90513ce3b336
Gdy narzędzie stress zakończy działanie na początkowych wystąpieniach maszyn wirtualnych, średnie obciążenie procesora CPU powróci do typowej wartości. Po kolejnych pięciu minutach reguły skalowania automatycznego inicjują skalowanie w pionie liczby wystąpień maszyn wirtualnych. Najpierw są usuwane wystąpienia maszyn wirtualnych o najwyższych identyfikatorach. Jeśli zestaw skalowania używa zestawów dostępności lub stref dostępności, akcje skalowania w pionie są dystrybuowane równomiernie na te wystąpienia maszyn wirtualnych. Następujące przykładowe dane wyjściowe przedstawiają usuwanie wystąpienia maszyny wirtualnej z zestawu skalowania podczas skalowania w pionie:
6 True eastus myScaleSet_6 Deleting myResourceGroup 9e4133dd-2c57-490e-ae45-90513ce3b336
Zakończ działanie narzędzia watch za pomocą klawiszy Ctrl-c
. Co pięć minut zestaw skalowania będzie powtarzał operację skalowania w pionie, usuwając po jednym wystąpieniu maszyny wirtualnej aż do osiągnięcia minimalnej liczby wystąpień równej dwa.
Czyszczenie zasobów
Aby pozbyć się zestawu skalowania i dodatkowych zasobów, usuń grupę zasobów wraz z całą zawartością za pomocą polecenia az group delete. Parametr --no-wait
zwraca kontrolę do wiersza polecenia bez oczekiwania na zakończenie operacji. Parametr --yes
potwierdza, że chcesz usunąć zasoby bez wyświetlania dodatkowego monitu.
az group delete --name myResourceGroup --yes --no-wait
Następne kroki
W tym samouczku przedstawiono automatyczne skalowanie zestawu skalowania w pionie lub w poziomie za pomocą interfejsu wiersza polecenia platformy Azure:
- Używanie funkcji skalowania automatycznego z zestawem skalowania
- Tworzenie reguł skalowania automatycznego i korzystanie z nich
- Testy obciążeniowe wystąpień maszyn wirtualnych i wyzwalanie reguł skalowania automatycznego
- Skalowanie automatyczne do wewnątrz po zmniejszeniu zapotrzebowania