Escalabilidad automática de un punto de conexión administrado en línea (versión preliminar)

La escalabilidad automática ejecuta automáticamente la cantidad adecuada de recursos para controlar la carga en la aplicación. Los puntos de conexión administrados permiten la escalabilidad automática mediante la integración con la característica de escalabilidad automática de Azure Monitor.

La escalabilidad automática de Azure Monitor admite un amplio conjunto de reglas. Puede configurar escalado basado en métricas (por ejemplo, uso de CPU > 70 %), escalado basado en programación (por ejemplo, reglas de escalado para horario comercial punta) o una combinación. Para conocer los detalles, consulte Información general sobre el escalado automático en Microsoft Azure.

Diagrama de la escalabilidad automática agregando o quitando instancias según necesidad

En la actualidad puede administrar la escalabilidad automática mediante la CLI de Azure, REST, ARM o Azure Portal basado en el explorador. Otros SDK de Azure ML, como el de Python, van a agregar compatibilidad con el tiempo.

Importante

Esta característica actualmente está en su versión preliminar pública. Esta versión preliminar se ofrece sin Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

Prerrequisitos

Definición de un perfil de escalado automático

Para habilitar la escalabilidad automática en un punto de conexión, primero defina un perfil de escalabilidad automática. Este perfil define la capacidad predeterminada, mínima y máxima del conjunto de escalado. En el ejemplo siguiente se establece la capacidad predeterminada y mínima en dos instancias de máquina virtual, y la capacidad máxima en cinco:

El fragmento de código siguiente establece los nombres del punto de conexión y la implementación:

# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue

Luego obtenga el identificador de Azure Resource Manager de la implementación y el punto de conexión:

# ARM id of the deployment
DEPLOYMENT_RESOURCE_ID=$(az ml online-deployment show -e $ENDPOINT_NAME -n $DEPLOYMENT_NAME -o tsv --query "id")
# ARM id of the deployment. todo: change to --query "id"
ENDPOINT_RESOURCE_ID=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query "properties.\"azureml.onlineendpointid\"")
# set a unique name for autoscale settings for this deployment. The below will append a random number to make the name unique.
AUTOSCALE_SETTINGS_NAME=autoscale-`echo $RANDOM`

El fragmento de código siguiente crea el perfil de escalabilidad automática:

az monitor autoscale create \
  --name $AUTOSCALE_SETTINGS_NAME \
  --resource $DEPLOYMENT_RESOURCE_ID \
  --min-count 2 --max-count 5 --count 2

Nota

Para obtener más información, vea la página de referencia de la escalabilidad automática

Creación de una regla para escalar horizontalmente mediante métricas

Una regla de escalabilidad horizontal común es aquella que aumenta el número de instancias de máquina virtual cuando la carga media de CPU es alta. En el ejemplo siguiente se asignan dos nodos más (hasta el máximo) si la carga media de CPU es superior al 70 % durante cinco minutos:

az monitor autoscale rule create \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --condition "CpuUtilizationPercentage > 70 avg 5m" \
  --scale out 2

La regla forma parte del perfil my-scale-settings (autoscale-name coincide con el valor name del perfil). El valor de su argumento condition indica que la regla debe desencadenarse cuando "El consumo medio de CPU entre las instancias de la máquina virtual supere el 70 % durante cinco minutos". Cuando se cumple esa condición, se asignan dos instancias de máquina virtual más.

Nota

Para obtener más información sobre la sintaxis de la CLI, vea az monitor autoscale.

Creación de una regla para reducir horizontalmente mediante métricas

Si la carga es ligera, una regla de reducción horizontal puede reducir el número de instancias de máquina virtual. En el ejemplo siguiente se libera un solo nodo, hasta un mínimo de 2, si la carga de CPU es inferior al 30 % durante 5 minutos:

az monitor autoscale rule create \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --condition "CpuUtilizationPercentage < 25 avg 5m" \
  --scale in 1

Creación de una regla de escalabilidad basada en métricas del punto de conexión

Las reglas anteriores se aplicaban a la implementación. Ahora, agregue una regla que se aplique al punto de conexión. En este ejemplo, si la latencia de la solicitud supera una media de 70 milisegundos durante 5 minutos, asigne otro nodo.

az monitor autoscale rule create \
 --autoscale-name $AUTOSCALE_SETTINGS_NAME \
 --condition "RequestLatency > 70 avg 5m" \
 --scale out 1 \
 --resource $ENDPOINT_RESOURCE_ID

Creación de reglas de escalabilidad basadas en una programación

También puede crear reglas que se apliquen solo en determinados días u horas. En este ejemplo, el recuento de nodos se establece en 2 el fin de semana.

az monitor autoscale profile create \
  --name weekend-profile \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --min-count 2 --count 2 --max-count 2 \
  --recurrence week sat sun --timezone "Pacific Standard Time"

Eliminar recursos

Si no va a usar las implementaciones, elimínelas:

az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait

Pasos siguientes

Para obtener más información sobre la escalabilidad automática con Azure Monitor, vea los siguientes artículos: