Wdrażanie usługi Azure Spot Virtual Machines przy użyciu interfejsu wiersza polecenia platformy Azure

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️

Korzystanie z usługi Azure Spot Virtual Machines umożliwia korzystanie z naszej nieużywanej pojemności przy znacznych oszczędnościach kosztów. W dowolnym momencie, gdy platforma Azure potrzebuje pojemności z powrotem, infrastruktura platformy Azure eksmituje usługę Azure Spot Virtual Machines. W związku z tym usługa Azure Spot Virtual Machines doskonale nadaje się do obsługi obciążeń, które mogą obsługiwać przerwy, takie jak zadania przetwarzania wsadowego, środowiska deweloperskie/testowe, duże obciążenia obliczeniowe i inne.

Cennik usługi Azure Spot Virtual Machines jest zmienny na podstawie regionu i jednostki SKU. Aby uzyskać więcej informacji, zobacz Cennik maszyn wirtualnych dla systemów Linux i Windows.

Możesz ustawić maksymalną cenę, którą chcesz zapłacić za godzinę dla maszyny wirtualnej. Maksymalna cena maszyny wirtualnej usługi Azure Spot można ustawić w dolarach amerykańskich (USD), używając maksymalnie 5 miejsc dziesiętnych. Na przykład wartość 0.98765 to maksymalna cena 0,98765 USD za godzinę. Jeśli ustawisz maksymalną cenę -1na wartość , maszyna wirtualna zostanie wykluczona na podstawie ceny. Cena maszyny wirtualnej jest bieżącą ceną maszyny wirtualnej typu Spot platformy Azure lub ceną standardowej maszyny wirtualnej, która kiedykolwiek jest mniejsza, o ile dostępna jest pojemność i limit przydziału. Aby uzyskać więcej informacji na temat ustawiania maksymalnej ceny, zobacz Azure Spot Virtual Machines — cennik.

Proces tworzenia maszyny wirtualnej typu spot platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure jest taki sam jak w artykule Szybki start. Wystarczy dodać parametr "--priority Spot", ustawić --eviction-policyDeallocate wartość na wartość (wartość domyślna) lub Delete, i podać maksymalną cenę lub -1.

Zainstaluj interfejs wiersza polecenia platformy Azure

Aby utworzyć usługę Azure Spot Virtual Machines, musisz uruchomić interfejs wiersza polecenia platformy Azure w wersji 2.0.74 lub nowszej. Aby odnaleźć wersję, uruchom polecenie az --version. Jeśli konieczna będzie instalacja lub uaktualnienie interfejsu, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Zaloguj się do platformy Azure przy użyciu polecenia az login.

az login

Tworzenie maszyny wirtualnej typu spot platformy Azure

W tym przykładzie pokazano, jak wdrożyć maszynę wirtualną typu spot platformy Azure z systemem Linux, która nie jest eksmitowana na podstawie ceny. Zasady eksmisji są ustawione na cofnięcie przydziału maszyny wirtualnej, aby można je było ponownie uruchomić w późniejszym czasie. Jeśli chcesz usunąć maszynę wirtualną i dysk bazowy po eksmitowanych maszynie wirtualnej, ustaw wartość --eviction-policyDelete.

az group create -n mySpotGroup -l eastus
az vm create \
    --resource-group mySpotGroup \
    --name myVM \
    --image Ubuntu2204 \
    --admin-username azureuser \
    --generate-ssh-keys \
    --priority Spot \
    --max-price -1 \
	--eviction-policy Deallocate

Po utworzeniu maszyny wirtualnej możesz wykonać zapytanie, aby wyświetlić maksymalną cenę rozliczeń dla wszystkich maszyn wirtualnych w grupie zasobów.

az vm list \
   -g mySpotGroup \
   --query '[].{Name:name, MaxPrice:billingProfile.maxPrice}' \
   --output table

Symulowanie eksmisji

Możesz symulować eksmisję maszyny wirtualnej typu spot platformy Azure przy użyciu interfejsu wiersza polecenia REST, programu PowerShell lub interfejsu wiersza polecenia, aby sprawdzić, jak dobrze aplikacja reaguje na nagłe eksmisji.

W większości przypadków chcesz użyć interfejsu API REST Virtual Machines — symulowanie eksmisji w celu ułatwienia zautomatyzowanego testowania aplikacji. W przypadku interfejsu REST oznacza, Response Code: 204 że symulowana eksmisji zakończyła się pomyślnie. Możesz połączyć symulowane eksmisji z usługą Zaplanowane zdarzenie, aby zautomatyzować sposób reagowania aplikacji podczas eksmisji maszyny wirtualnej.

Aby wyświetlić zaplanowane zdarzenia w działaniu, watch Azure Friday — przygotowanie do konserwacji maszyny wirtualnej przy użyciu zaplanowanych zdarzeń platformy Azure.

Szybki test

Aby szybko przetestować sposób działania symulowanej eksmisji, przeprowadźmy wykonywanie zapytań względem zaplanowanej usługi zdarzeń, aby zobaczyć, jak wygląda podczas symulowania eksmisji przy użyciu interfejsu wiersza polecenia platformy Azure.

Zaplanowana usługa zdarzeń jest włączona dla usługi po raz pierwszy, gdy wysyłasz żądanie o zdarzenia.

Zdalnie do maszyny wirtualnej, a następnie otwórz wiersz polecenia.

W wierszu polecenia na maszynie wirtualnej wpisz:

curl -H Metadata:true http://169.254.169.254/metadata/scheduledevents?api-version=2019-08-01

Ta pierwsza odpowiedź może potrwać do 2 minut. Od teraz powinny wyświetlać dane wyjściowe niemal natychmiast.

Na komputerze z zainstalowanym interfejsem wiersza polecenia platformy Azure (takim jak maszyna lokalna) zasymuluj eksmisję za pomocą polecenia az vm simulate-eviction. Zastąp nazwę grupy zasobów i nazwę maszyny wirtualnej własną nazwą.

az vm simulate-eviction --resource-group mySpotRG --name mySpot

Dane wyjściowe odpowiedzi mają Status: Succeeded wartość , jeśli żądanie zostało wykonane pomyślnie.

Szybko wróć do połączenia zdalnego z maszyną wirtualną typu spot i ponownie wykonaj zapytanie do punktu końcowego Zaplanowane zdarzenia. Powtórz następujące polecenie, dopóki nie uzyskasz danych wyjściowych zawierających więcej informacji:

curl -H Metadata:true http://169.254.169.254/metadata/scheduledevents?api-version=2019-08-01

Gdy zaplanowana usługa zdarzeń otrzymuje powiadomienie o eksmisji, otrzymasz odpowiedź podobną do następujących danych wyjściowych:

{"DocumentIncarnation":1,"Events":[{"EventId":"A123BC45-1234-5678-AB90-ABCDEF123456","EventStatus":"Scheduled","EventType":"Preempt","ResourceType":"VirtualMachine","Resources":["myspotvm"],"NotBefore":"Tue, 16 Mar 2021 00:58:46 GMT","Description":"","EventSource":"Platform"}]}

Widać, że "EventType":"Preempt"zasób maszyny wirtualnej to ."Resources":["myspotvm"]

Możesz również zobaczyć warunek eksmisji maszyny wirtualnej, sprawdzając "NotBefore" wartość — maszyna wirtualna nie zostanie eksmitowana przed upływem podanego czasu, aby umożliwić aplikacji bezproblemowe zamknięcie.

Następne kroki

Możesz również utworzyć maszynę wirtualną typu spot platformy Azure przy użyciu Azure PowerShell, portalu lub szablonu.

Wykonaj zapytanie dotyczące bieżących informacji o cenach detalicznych przy użyciu interfejsu API cen detalicznych platformy Azure , aby uzyskać informacje o maszynie wirtualnej typu spot platformy Azure. Elementy meterName i skuName zawierają wartość Spot.

Jeśli wystąpi błąd, zobacz Kody błędów.