Tutorial: Escalado automático de un conjunto de escalado de máquinas virtuales con la CLI de Azure
Se aplica a: ✔️ Máquinas virtuales Linux ✔️ Máquinas virtuales Windows ✔️ Conjuntos de escalado flexibles ✔️ Conjuntos de escalado uniformes
Al crear un conjunto de escalado, puede definir el número de instancias de máquina virtual que quiere ejecutar. A medida que cambia la demanda de las aplicaciones, puede aumentar o reducir automáticamente el número de estas instancias. La posibilidad de realizar el escalado automático le permite satisfacer la demanda del cliente o responder a los cambios de rendimiento de la aplicación a lo largo del ciclo de vida de esta. En este tutorial, aprenderá a:
- Usar el escalado automático con un conjunto de escalado
- Crear y usar reglas de escalado automático
- Realizar pruebas de esfuerzo de instancias de máquina virtual y desencadenar reglas de escalado automático
- Reducir el escalado automáticamente cuando se reduzca la demanda
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Requisitos previos
Use el entorno de Bash en Azure Cloud Shell.
Si lo prefiere, instale la CLI de Azure para ejecutar sus comandos de referencia.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
Cuando se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
- Este tutorial requiere la versión 2.0.32 de la CLI de Azure, o cualquier versión posterior. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.
Creación de un conjunto de escalado
Cree un grupo de recursos con az group create, como sigue:
az group create --name myResourceGroup --location eastus
Ahora, cree un conjunto de escalado de máquinas virtuales con az vmss create. En el ejemplo siguiente se crea un conjunto de escalado con 2 instancias y se generan claves SSH (si aún no existen):
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--image UbuntuLTS \
--upgrade-policy-mode automatic \
--instance-count 2 \
--admin-username azureuser \
--generate-ssh-keys
Definición de un perfil de escalado automático
Para habilitar el escalado automático en un conjunto de escalado, primero debe definir un perfil de escalado automático. Este perfil define la capacidad predeterminada, mínima y máxima del conjunto de escalado. Estos límites le permiten controlar el costo al no crear continuamente instancias de máquina virtual, y equilibrar un rendimiento aceptable con un número mínimo de instancias que permanecen en un evento de reducción horizontal. Cree un perfil de escalado automático con az monitor autoscale create. En el ejemplo siguiente se establece la capacidad predeterminada y la mínima para 2 instancias de máquina virtual y un máximo de 10:
az monitor autoscale create \
--resource-group myResourceGroup \
--resource myScaleSet \
--resource-type Microsoft.Compute/virtualMachineScaleSets \
--name autoscale \
--min-count 2 \
--max-count 10 \
--count 2
Creación de una regla de escalado automático horizontal
Si aumenta la demanda de la aplicación, la carga de las instancias de máquina virtual del conjunto de escalado aumenta. Si este aumento de la carga es continuado, en lugar de ser algo puntual, puede configurar reglas de escalado automático para aumentar el número de instancias de máquina virtual en el conjunto de escalado. Cuando se crean estas instancias de máquina virtual y se implementan las aplicaciones, el conjunto de escalado empieza a distribuir el tráfico entre ellas mediante el equilibrador de carga. Puede controlar qué métricas se deben supervisar como, por ejemplo, la CPU o el disco, cuánto tiempo debe cumplir la carga de la aplicación un límite determinado y cuántas instancias de máquina virtual se deben agregar al conjunto de escalado.
Vamos a crear una regla con az monitor autoscale rule create que aumenta el número de instancias de máquina virtual de un conjunto de escalado cuando la carga media de la CPU es superior al 70 % durante un período de más de 5 minutos. Cuando se desencadena la regla, aumenta el número de instancias de máquina virtual en tres.
az monitor autoscale rule create \
--resource-group myResourceGroup \
--autoscale-name autoscale \
--condition "Percentage CPU > 70 avg 5m" \
--scale out 3
Creación de una regla de escalado automático horizontal de reducción
La demanda de la aplicación puede reducirse por las tardes o durante los fines de semana. Si esta reducción es constante a lo largo de un período, puede configurar reglas de escalado automático para reducir el número de instancias de máquina virtual del conjunto de escalado. Esta acción de reducción horizontal permite rebajar el costo de ejecutar el conjunto de escalado ya que solo se ejecuta el número de instancias necesario para satisfacer la demanda actual.
Cree otra regla con az monitor autoscale rule create que reduzca el número de instancias de máquina virtual de un conjunto de escalado cuando la carga media de la CPU descienda por debajo del 30 % durante un período de más de 5 minutos. En el ejemplo siguiente se define la regla para reducir horizontalmente el número de instancias de máquina virtual a una:
az monitor autoscale rule create \
--resource-group myResourceGroup \
--autoscale-name autoscale \
--condition "Percentage CPU < 30 avg 5m" \
--scale in 1
Generación de carga de CPU en el conjunto de escalado
Para probar las reglas de escalado automático, genere cargas de CPU en las instancias de máquina virtual del conjunto de escalado. Esta carga de CPU simulada hace que el escalado automático escale y reduzca horizontalmente el número de instancias de máquina virtual. Como la carga simulada de la CPU se reduce, las reglas de escalado automático reducen horizontalmente el número de instancias de máquina virtual.
Primero, enumere las direcciones y los puertos para conectarse a las instancias de máquina virtual en un conjunto de escalado con az vmss list-instance-connection-info:
az vmss list-instance-connection-info \
--resource-group myResourceGroup \
--name myScaleSet
La salida del ejemplo siguiente muestra el nombre de instancia, la dirección IP pública del equilibrador de carga y el número de puerto al que las reglas de traducción de direcciones de red (NAT) reenvían el tráfico:
{
"instance 1": "13.92.224.66:50001",
"instance 3": "13.92.224.66:50003"
}
Conéctese mediante SSH a la primera instancia de máquina virtual. Especifique su propia dirección IP pública y el número de puerto con el parámetro -p, tal como se muestra en el comando anterior:
ssh azureuser@13.92.224.66 -p 50001
Una vez iniciada la sesión, instale la utilidad stress. Inicie 10 trabajos de stress que generen carga de CPU. Estos trabajos se ejecutan durante 420 segundos, lo suficiente para que las reglas de escalado automático implementen la acción deseada.
sudo apt-get update
sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &
Cuando stress muestra una salida similar a stress: info: [2688] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, presione la tecla Entrar para volver al símbolo del sistema.
Para confirmar que stress genera carga de CPU, examine la carga del sistema activa con la utilidad top:
top
Salga de la utilidad top y cierre la conexión a la instancia de máquina virtual. Stress continuará ejecutándose en la instancia de máquina virtual.
Ctrl-c
exit
Conéctese a la segunda instancia de máquina virtual con el número de puerto de la lista az vmss list-instance-connection-info anterior:
ssh azureuser@13.92.224.66 -p 50003
Instale y ejecute la utilidad stress e inicie diez trabajos en esta segunda instancia de máquina virtual.
sudo apt-get -y install stress
sudo stress --cpu 10 --timeout 420 &
De nuevo, cuando stress muestra una salida similar a stress: info: [2713] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd, presione la tecla Entrar para volver al símbolo del sistema.
Cierre la conexión a esta instancia de máquina virtual. Stress continuará ejecutándose en la instancia de máquina virtual.
exit
Supervisión de las reglas de escalado automático activas
Para supervisar el número de instancias de máquina virtual del conjunto de escalado, use la utilidad watch. Las reglas de escalado automático tardan 5 minutos en empezar el proceso de escalado horizontal en respuesta a la carga de CPU generada por stress en cada instancia de máquina virtual:
watch az vmss list-instances \
--resource-group myResourceGroup \
--name myScaleSet \
--output table
Cuando se alcanza el umbral de la CPU, las reglas de escalado automático aumentan el número de instancias de máquina virtual en el conjunto de escalado. La siguiente salida muestra tres máquinas virtuales que se crean durante el escalado horizontal automático:
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
Cuando se detiene stress en las instancias de máquina virtual iniciales, la carga media de CPU vuelve al estado normal. Después de otros 5 minutos, las reglas de escalado automático reducen horizontalmente el número de instancias de máquina virtual. Con las acciones de reducción horizontal se eliminan instancias de máquina virtual en orden, empezando por los identificadores mayores. Cuando un conjunto de escalado usa conjuntos de disponibilidad o zonas de disponibilidad, las acciones de reducción horizontal se distribuyen por igual entre esas instancias de máquina virtual. En la salida de ejemplo siguiente se muestra la eliminación de una instancia de máquina virtual con la reducción horizontal del conjunto de escalado:
6 True eastus myScaleSet_6 Deleting myResourceGroup 9e4133dd-2c57-490e-ae45-90513ce3b336
Salga de la utilidad watch con Ctrl-c. El conjunto de escalado continúa la reducción horizontal cada 5 minutos y quita una instancia de máquina virtual hasta que se alcanza el mínimo de dos instancias.
Limpieza de recursos
Para quitar el conjunto de escalado y los recursos adicionales, elimine el grupo de recursos y todos sus recursos con az group delete. 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 desea eliminar los recursos sin pedir confirmación adicional.
az group delete --name myResourceGroup --yes --no-wait
Pasos siguientes
En este tutorial, ha aprendido a escalar y reducir horizontalmente un conjunto de escalado de forma automática con la CLI de Azure:
- Usar el escalado automático con un conjunto de escalado
- Crear y usar reglas de escalado automático
- Realizar pruebas de esfuerzo de instancias de máquina virtual y desencadenar reglas de escalado automático
- Reducir el escalado automáticamente cuando se reduzca la demanda
