Implementar o Azure Spot Máquinas Virtuais com a CLI do Azure

Aplica-se a: ✔️ Conjuntos de dimensionamento flexíveis de VMs ✔️ do Linux

A utilização do Azure Spot Máquinas Virtuais permite-lhe tirar partido da nossa capacidade não utilizada com uma poupança de custos significativa. A qualquer momento em que o Azure precise de ter a capacidade de volta, a infraestrutura do Azure expulsa o Azure Spot Máquinas Virtuais. Por conseguinte, o Azure Spot Máquinas Virtuais são ótimos para cargas de trabalho que conseguem lidar com interrupções, como trabalhos de processamento em lotes, ambientes de desenvolvimento/teste, grandes cargas de trabalho de computação e muito mais.

Os preços do Azure Spot Máquinas Virtuais são variáveis, com base na região e no SKU. Para obter mais informações, veja Preços da VM para Linux e Windows.

Tem a opção de definir um preço máximo que está disposto a pagar, por hora, pela VM. O preço máximo de uma Máquina Virtual Spot do Azure pode ser definido em usuários (USD), utilizando até 5 casas decimais. Por exemplo, o valor 0.98765 é um preço máximo de 0,98765 USD por hora. Se definir o preço máximo como -1, a VM será expulsa com base no preço. O preço da VM é o preço atual da Máquina Virtual Spot do Azure ou o preço de uma VM padrão, que é sempre menor, desde que exista capacidade e quota disponível. Para obter mais informações sobre como definir o preço máximo, veja Azure Spot Máquinas Virtuais – Preços.

O processo para criar uma Máquina Virtual Spot do Azure com a CLI do Azure é o mesmo que é detalhado no artigo de início rápido. Basta adicionar o parâmetro "--priority Spot", definir como --eviction-policyDeallocate (a predefinição) ou Delete, e fornecer um preço máximo ou -1.

Instalar a CLI do Azure

Para criar o Azure Spot Máquinas Virtuais, tem de executar a versão 2.0.74 ou posterior da CLI do Azure. Execute az --version para descobrir a versão. Se precisar de instalar ou atualizar, veja Instalar a CLI do Azure.

Inicie sessão no Azure com az login.

az login

Criar uma Máquina Virtual Spot do Azure

Este exemplo mostra como implementar uma Máquina Virtual Spot do Azure para Linux que não é expulsa com base no preço. A política de expulsão está definida para desalocar a VM, para que possa ser reiniciada mais tarde. Se quiser eliminar a VM e o disco subjacente quando a VM é expulsa, defina --eviction-policy como Delete.

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

Depois de criar a VM, pode consultar para ver o preço máximo de faturação de todas as VMs no grupo de recursos.

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

Simular uma expulsão

Pode simular uma expulsão de uma Máquina Virtual Spot do Azure com REST, o PowerShell ou a CLI, para testar a forma como a sua aplicação responde a uma expulsão súbita.

Na maioria dos casos, quer utilizar a API REST Máquinas Virtuais – Simular Expulsão para ajudar com testes automatizados de aplicações. Para REST, significa Response Code: 204 que a expulsão simulada foi efetuada com êxito. Pode combinar expulsões simuladas com o serviço Evento Agendado para automatizar a forma como a sua aplicação responde quando a VM é expulsa.

Para ver eventos agendados em ação, watch Azure Friday – Utilizar Eventos Agendados do Azure para preparar a manutenção da VM.

Teste rápido

Para um teste rápido para mostrar como funciona uma expulsão simulada, vamos analisar a consulta do serviço de eventos agendados para ver o aspeto quando simula uma expulsão com a CLI do Azure.

O serviço Evento Agendado está ativado para o seu serviço quando efetuar um pedido de eventos pela primeira vez.

Aceda remotamente à VM e, em seguida, abra uma linha de comandos.

Na linha de comandos da VM, escreva:

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

Esta primeira resposta pode demorar até 2 minutos. A partir de agora, devem apresentar o resultado quase imediatamente.

A partir de um computador com a CLI do Azure instalada (como o computador local), simule uma expulsão com az vm simulate-eviction. Substitua o nome do grupo de recursos e o nome da VM pelo seu próprio nome.

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

O resultado da resposta tem Status: Succeeded se o pedido tiver sido efetuado com êxito.

Volte rapidamente à sua ligação remota à Máquina Virtual Spot e consulte novamente o ponto final de Eventos Agendados. Repita o seguinte comando até obter uma saída que contenha mais informações:

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

Quando o Serviço de Eventos Agendados recebe a notificação de expulsão, obtém uma resposta semelhante à seguinte saída:

{"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"}]}

Pode ver que "EventType":"Preempt", e o recurso é o recurso "Resources":["myspotvm"]da VM .

Também pode ver a condição de expulsão da VM ao verificar se "NotBefore" a VM não será expulsa antes da hora indicada, pelo que é a janela para a sua aplicação fechar corretamente.

Passos seguintes

Também pode criar uma Máquina Virtual Spot do Azure com Azure PowerShell, portalou modelo.

Consulte as informações de preços atuais com a API de preços de revenda do Azure para obter informações sobre a Máquina Virtual Spot do Azure. Os meterName e skuName contêm Spot.

Se encontrar um erro, veja Códigos de erro.