Tutorial: Creación y administración de un conjunto de escalado de máquinas virtuales con la CLI de Azure

El conjunto de escalado de máquinas virtuales le permite implementar y administrar un conjunto de máquinas virtuales. Durante el ciclo de vida del conjunto de escalado de máquinas virtuales, es posible que deba ejecutar una o varias tareas de administración. En este tutorial, aprenderá a:

  • Crear un grupo de recursos
  • Creación de un conjunto de escalado de máquinas virtuales
  • Escalar y reducir horizontalmente
  • Detención, inicio y reinicio de instancias de máquina virtual

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Requisitos previos

En este artículo se necesita la versión 2.0.29 o posterior de la CLI de Azure. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.

Crear un grupo de recursos

Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure. Se debe crear un grupo de recursos antes de crear un conjunto de escalado de máquinas virtuales. Para crear un grupo de recursos, use el comando az group create. En este ejemplo se crea un grupo de recursos denominado myResourceGroup en la región eastus.

az group create --name myResourceGroup --location eastus

El nombre del grupo de recursos se especifica al crear o modificar un conjunto de escalado mediante este tutorial.

Creación de un conjunto de escalado

Importante

A partir de noviembre de 2023, los conjuntos de escalado de máquinas virtuales creados con PowerShell y la CLI de Azure tendrán como valor predeterminado el modo de orquestación flexible si no se especifica ningún modo de orquestación. Para obtener más información sobre este cambio y las acciones que debe realizar, vaya a Cambio importante para clientes de PowerShell/CLI de VMSS: Centro de comunidad de Microsoft

Creará un conjunto de escalado de máquinas virtuales con el comando az vmss create. En el ejemplo siguiente se crea un conjunto de escalado denominado myScaleSet y se generan claves SSH si estas no existen aún:

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

Se tardan unos minutos en crear y configurar todos los recursos del conjunto de escalado y las instancias de máquina virtual. Para distribuir el tráfico a las instancias individuales de VM, también se crea un equilibrador de carga.

Visualización de información sobre las instancias de máquina virtual en el conjunto de escalado

Para ver una lista de las instancias de máquina virtual en un conjunto de escalado, use Get-AzVmssVM de la forma siguiente:

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

La salida del ejemplo siguiente muestra dos instancias de máquina virtual del conjunto de escalado:

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

Para ver información adicional sobre una instancia de máquina virtual específica, use az vm show y especifique el nombre de la máquina virtual.

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"
  },
}

Creación de un conjunto de escalado con un tamaño específico de instancia de máquina virtual

Cuando creó un conjunto de escalado al comienzo del tutorial, se proporcionó una SKU de máquina virtual predeterminada de Standard_D1_v2 para las instancias de máquina virtual. Puede especificar un tamaño de instancia de máquina virtual diferente en función de la salida de az vm list-sizes. En el ejemplo siguiente se crearía un conjunto de escalado con el parámetro --vm-sku para especificar un tamaño de instancia de máquina virtual de Standard_F1. Como se tarda unos minutos en crear y configurar todos los recursos del conjunto de escalado y las instancias de máquina virtual, no tiene que implementar el siguiente conjunto de escalado:

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

Cambio de la capacidad de un conjunto de escalado

Cuando creó un conjunto de escalado al comienzo del tutorial, se implementaron de forma predeterminada dos instancias de máquina virtual. Puede especificar el parámetro --instance-count con az vmss create para cambiar el número de instancias creadas con un conjunto de escalado. Para aumentar o disminuir el número de instancias de máquina virtual del conjunto de escalado existente, puede cambiar manualmente la capacidad. El conjunto de escalado crea o quita el número necesario de instancias de máquina virtual y, luego, configura el equilibrador de carga para distribuir el tráfico.

Para aumentar o reducir manualmente el número de instancias de máquina virtual del conjunto de escalado, use az vmss scale. En el ejemplo siguiente se establece el número de instancias de máquina virtual del conjunto de escalado en 3:

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

La capacidad del conjunto de escalado tarda unos minutos en actualizarse. Para ver el número de instancias que tiene ahora en un conjunto de escalado, use az vmss show y realice consultas en el grupo de recursos asociado.

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

Detención y desasignación de instancias de máquina virtual de un conjunto de escalado

Para detener todas las instancias de máquina virtual de un conjunto de escalado, use az vmss stop.

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

Para detener instancias de máquina virtual individuales en un conjunto de escalado, use az vm stop y especifique el nombre de la instancia.

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

Las instancias de máquina virtual detenidas permanecen asignadas y siguen acumulando cargos por procesos. Si en su lugar desea desasignar las instancias de máquina virtual y solo incurrir en cargos de almacenamiento, use az vm deallocate y especifique los nombres de instancia que desea desasignar.

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

Inicio de las instancias de máquina virtual de un conjunto de escalado

Para iniciar todas las instancias de máquina virtual de un conjunto de escalado, use az vmss start.

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

Para iniciar instancias de máquina virtual individuales en un conjunto de escalado, use az vm start y especifique el nombre de la instancia.

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

Reinicio de las instancias de máquina virtual de un conjunto de escalado

Para reiniciar todas las instancias de máquina virtual de un conjunto de escalado, use az vmss restart.

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

Para reiniciar instancias de máquina virtual individuales en un conjunto de escalado, use az vm restart y especifique el nombre de la instancia.

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

Limpieza de recursos

Cuando se elimina un grupo de recursos, todos los recursos que contiene, como las instancias de máquina virtual, la red virtual y los discos, también se eliminan. El parámetro --no-wait devuelve el control a la petición de confirmación sin esperar a que finalice la operación. El parámetro --yes confirma que quiere eliminar los recursos sin pedir otra confirmación.

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

Pasos siguientes

En este tutorial, ha aprendido cómo realizar algunas tareas de creación y administración de un conjunto de escalado básico con la CLI de Azure:

  • Crear un grupo de recursos
  • Creación de un conjunto de escalado
  • Ver y usar tamaños de una máquina virtual específicos
  • Escalar manualmente un conjunto de escalado
  • Realización de tareas comunes de administración de conjuntos de escalado, como detener, iniciar y reiniciar el conjunto de escalado

Continúe con el siguiente tutorial para aprender a conectar el dispositivo.