Tutorial: Criar e gerenciar um conjunto de escala de máquina virtual com a CLI do Azure

Um Conjunto de Dimensionamento de Máquina Virtual permite implantar e gerenciar um conjunto de máquinas virtuais. Durante todo o ciclo de vida de um Conjunto de Dimensionamento de Máquina Virtual, talvez seja necessário executar uma ou mais tarefas de gerenciamento. Neste tutorial, ficará a saber como:

  • Criar um grupo de recursos
  • Criar um Conjunto de Dimensionamento de Máquinas Virtuais
  • Aumentar e reduzir horizontalmente
  • Parar, iniciar e reiniciar instâncias de VM

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Pré-requisitos

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

Este artigo requer a versão 2.0.29 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.

Criar um grupo de recursos

Um grupo de recursos do Azure é um contentor lógico no qual os recursos do Azure são implementados e geridos. Um grupo de recursos deve ser criado antes de um Conjunto de Dimensionamento de Máquina Virtual. Crie um grupo de recursos com o comando az group create. Neste exemplo, é criado um grupo de recursos chamado myResourceGroup na região eastus.

az group create --name myResourceGroup --location eastus

O nome do grupo de recursos é especificado quando cria ou modifica um conjunto de dimensionamento neste tutorial.

Criar um conjunto de dimensionamento

Importante

A partir de novembro de 2023, os conjuntos de dimensionamento de VM criados usando o PowerShell e a CLI do Azure assumirão como padrão o Modo de Orquestração Flexível se nenhum modo de orquestração for especificado. Para obter mais informações sobre essa alteração e quais ações você deve tomar, vá para Breaking Change for VMSS PowerShell/CLI Customers - Microsoft Community Hub

Você cria um conjunto de escala de máquina virtual com o comando az vmss create . O exemplo a seguir cria um conjunto de escala chamado myScaleSet e gera chaves SSH se elas não existirem:

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --orchestration-mode flexible \
  --image <SKU image> \
  --admin-username azureuser \
  --generate-ssh-keys

A criação e configuração de todas as instâncias de VM e recursos do conjunto de dimensionamento demora alguns minutos. Para distribuir o tráfego pelas instâncias de VM individuais, é também criado um balanceador de carga.

Exibir informações sobre as instâncias de VM em seu conjunto de dimensionamento

Para exibir uma lista de instâncias de VM em um conjunto de escala, use az vm list da seguinte maneira:

az vm list --resource-group myResourceGroup --output table

O seguinte resultado de exemplo mostra duas instâncias de VM no conjunto de dimensionamento:

Name                 ResourceGroup    Location    Zones
-------------------  ---------------  ----------  -------
myScaleSet_instance1  myResourceGroup  eastus
myScaleSet_instance2  myResourceGroup  eastus

Para ver informações adicionais sobre uma instância de VM específica, use az vm show e especifique o nome da VM.

az vm show --resource-group myResourceGroup --name myScaleSet_instance1
{
  "hardwareProfile": {
    "vmSize": "Standard_DS1_v2",
  },
  "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myScaleSet_instance1",
  "location": "eastus",
  "name": "myScaleSet_instance1",
  "networkProfile": {
    "networkInterfaces": [
      {
        "deleteOption": "Delete",
        "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/mysca2215Nic-0396c71c",
        "primary": true,
        "resourceGroup": "myResourceGroup"
      }
    ]
  },
  "osProfile": {
    "adminUsername": "azureuser",
    "allowExtensionOperations": true,
    "computerName": "myScaleSN30BP1",
    "linuxConfiguration": {
      "disablePasswordAuthentication": true,
      "enableVmAgentPlatformUpdates": false,
      "patchSettings": {
        "assessmentMode": "ImageDefault",
        "patchMode": "ImageDefault"
      },
      "provisionVmAgent": true,
      "ssh": {
        "publicKeys": [
          {
            "keyData": "ssh-rsa",
            "path": "/home/azureuser/.ssh/authorized_keys"
          }
        ]
      }
    },
    "requireGuestProvisionSignal": true,
    "secrets": [],
  },
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "storageProfile": {
    "dataDisks": [],
    "imageReference": {
      "exactVersion": "XXXXX",
      "offer": "myOffer",
      "publisher": "myPublisher",
      "sku": "mySKU",
      "version": "latest"
    },
    "osDisk": {
      "caching": "ReadWrite",
      "createOption": "FromImage",
      "deleteOption": "Delete",
      "diskSizeGb": 30,
      "managedDisk": {
        "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myScaleSet_instance1_disk1",
        "resourceGroup": "myResourceGroup",
        "storageAccountType": "Premium_LRS"
      },
      "name": "myScaleSet_instance1_disk1",
      "osType": "Linux",
    }
  },
  "tags": {},
  "timeCreated": "2022-11-16T20:32:15.024581+00:00",
  "type": "Microsoft.Compute/virtualMachines",
  "virtualMachineScaleSet": {
    "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet",
    "resourceGroup": "myResourceGroup"
  },
}

Criar um conjunto de dimensionamento com um tamanho de instância de VM específico

Quando criou um conjunto de dimensionamento no início do tutorial, foi fornecido um SKU de VM predefinido de Standard_D1_v2 para as instâncias de VMs. Pode especificar um tamanho de instância de VM diferente com base no resultado de az vm list-sizes. O seguinte exemplo criaria um conjunto de dimensionamento com o parâmetro --vm-sku para especificar um tamanho de instância de VM de Standard_F1. Uma vez que a criação e configuração de todas as instâncias de VMs e recursos do conjunto de dimensionamento demora alguns minutos, não precisa de implementar o seguinte conjunto de dimensionamento:

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --orchestration-mode flexible \
  --image <SKU image> \
  --vm-sku Standard_F1 \
  --admin-user azureuser \
  --generate-ssh-keys

Alterar a capacidade de um conjunto de dimensionamento

Quando criou um conjunto de dimensionamento no início do tutorial, duas instâncias de VM foram implementadas por predefinição. Pode especificar o parâmetro --instance-count com az vmss create para mudar o número de instâncias criadas com um conjunto de dimensionamento. Para aumentar ou diminuir o número de instâncias de VM no seu conjunto de dimensionamento existente, pode gerir a capacidade manualmente. O conjunto de dimensionamento cria ou remove o número necessário de instâncias de VM e, em seguida, configura o balanceador de carga de forma a distribuir tráfego.

Para aumentar ou diminuir manualmente o número de instâncias de VM no conjunto de dimensionamento, utilize az vmss scale. O exemplo seguinte define o número de instâncias de VMs no seu conjunto de dimensionamento como 3:

az vmss scale \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --new-capacity 3

Leva alguns minutos para atualizar a capacidade do seu conjunto de escalas. Para ver o número de instâncias que você tem agora no conjunto de escala, use az vm list and query no grupo de recursos associado.

az vm list --resource-group myResourceGroup --output table
Name                 ResourceGroup    Location    Zones
-------------------  ---------------  ----------  -------
myScaleSet_instance1  myResourceGroup  eastus
myScaleSet_instance2  myResourceGroup  eastus
myScaleSet_instance3  myResourceGroup  eastus

Parar e desalocar instâncias de VMs num conjunto de dimensionamento

Para parar todas as instâncias de VM em um conjunto de escala, use az vmss stop.

az vmss stop \
  --resource-group myResourceGroup \
  --name myScaleSet

Para parar instâncias individuais de VM em um conjunto de escala, use az vm stop e especifique o nome da instância.

az vm stop \
  --resource-group myResourceGroup \
  --name myScaleSet_instance1

As instâncias de VMs paradas permanecem alocadas e continuam a incorrer em custos de computação. Se, em vez disso, desejar que as instâncias de VM sejam desalocadas e incorram apenas em encargos de armazenamento, use az vm deallocate e especifique os nomes de instância que deseja deslocalizar.

az vm deallocate \
  --resource-group myResourceGroup \
  --name myScaleSet_instance1

Iniciar instâncias de VMs num conjunto de dimensionamento

Para iniciar todas as instâncias de VM em um conjunto de escala, use az vmss start.

az vmss start \
  --resource-group myResourceGroup \
  --name myScaleSet

Para iniciar instâncias de VM individuais em um conjunto de escala, use az vm start e especifique o nome da instância.

az vm start \
  --resource-group myResourceGroup \
  --name myScaleSet_instance1

Reiniciar instâncias de VMs num conjunto de dimensionamento

Para reiniciar todas as instâncias de VM em um conjunto de escala, use az vmss restart.

az vmss restart \
  --resource-group myResourceGroup \
  --name myScaleSet

Para reiniciar instâncias de VM individuais em um conjunto de escala, use az vm restart e especifique o nome da instância.

az vm restart \
  --resource-group myResourceGroup \
  --name myScaleSet_instance1

Clean up resources (Limpar recursos)

Quando eliminar um grupo de recursos, todos os recursos nele contidos, como as instâncias de VMs, a rede virtual e os discos, também são eliminados. O parâmetro --no-wait devolve o controlo à linha de comandos, sem aguardar a conclusão da operação. O --yes parâmetro confirma que você deseja excluir os recursos sem um prompt extra para fazê-lo.

az group delete --name myResourceGroup --no-wait --yes

Próximos passos

Neste tutorial, aprendeu a executar algumas tarefas básicas de criação e gestão de conjuntos de dimensionamento com a CLI do Azure:

  • Criar um grupo de recursos
  • Criar um conjunto de dimensionamento
  • Ver e utilizar tamanhos específicos de VM
  • Dimensionar manualmente um conjunto de dimensionamento
  • Execute tarefas comuns de gerenciamento de conjuntos de escala, como parar, iniciar e reiniciar seu conjunto de dimensionamentos

Avance para o próximo tutorial para saber como se conectar às instâncias do seu conjunto de escala.