Tutorial: Escalado automático de un conjunto de escalado de máquinas virtuales con la CLI de Azure
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 de Azure antes de empezar.
Requisitos previos
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
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.
En caso de que 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.
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 <SKU image> \
--orchestration-mode Flexible \
--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, 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.
Cree 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 en una unidad.
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.
Para conectarse a una instancia individual, consulte Tutorial: Conexión a instancias del conjunto de escalado de máquinas virtuales.
Una vez iniciada la sesión, instale la utilidad stress o stress-ng. 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 stress o stress-ng y, a continuación, inicie diez trabajadores 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