Share via


Escalabilidad automática con varios perfiles

El escalado de los recursos para un día determinado de la semana o una fecha y hora específicas pueden reducir los costos, a la vez que proporcionan la capacidad que necesita cuando la necesite.

Puede usar varios perfiles en el escalado automático para escalar de diferentes maneras en momentos diferentes. Si, por ejemplo, su empresa no está activa el fin de semana, cree un perfil periódico para escalar sus recursos los sábados y domingos. Si Black Friday es un día ocupado, cree un perfil para escalar horizontalmente automáticamente los recursos el Black Friday.

En este artículo se explican los distintos perfiles de escalado automático y cómo usarlos.

Puede tener uno o varios perfiles en la configuración de escalado automático.

Hay tres tipos de perfil:

  • Perfil predeterminado. El perfil predeterminado se crea automáticamente y no depende de una programación. La memoria predeterminada no se puede eliminar. El perfil predeterminado se usa cuando no hay ningún otro perfil que coincida con la fecha y hora actuales.
  • Perfiles periódicos. Un perfil periódico es válido para un intervalo de tiempo específico y se repite durante los días seleccionados de la semana.
  • Perfiles de fecha y hora corregidos. Un perfil que es válido para un intervalo de tiempo en una fecha específica.

Cada vez que se ejecuta el servicio de escalado automático, los perfiles se evalúan en el orden siguiente:

  1. Perfiles de fecha fija
  2. Perfiles periódicos
  3. Perfil predeterminado

Si la configuración de fecha y hora de un perfil coincide con la hora actual, la escalabilidad automática aplicará las reglas y los límites de capacidad de ese perfil. Solo se usa el primer perfil aplicable.

En el ejemplo siguiente se muestra una configuración de escalado automático con un perfil predeterminado y un perfil periódico.

A screenshot showing an autoscale setting with default and recurring profile or scale condition.

En el ejemplo anterior, el lunes después de las 3:00 a. m., se dejará de usar el perfil periódico. Si el recuento de instancias es menor que 3, el escalado automático se escala al nuevo mínimo de tres. La escalabilidad automática sigue usando este perfil y la escala se modifica en función del porcentaje de CPU hasta el lunes a las 8:00 p. m. En el resto de veces, el escalado se realizará según el perfil predeterminado, en función del número de solicitudes. Después de las 8:00 p. m. del lunes, la escalabilidad automática cambia al perfil predeterminado. Si, por ejemplo, el número de instancias en ese momento es 12, escalará automáticamente a 10, que es el máximo permitido en el perfil predeterminado.

Varios perfiles contiguos

El escalado automático realiza transiciones entre perfiles en función de sus horas de inicio. La hora de finalización de un perfil concreto lo determina la hora de inicio del perfil siguiente.

En el portal, el campo hora de finalización se convierte en la siguiente hora de inicio del perfil predeterminado. No se puede especificar la misma hora para el final de un perfil y el inicio del siguiente. El portal forzará que la hora de finalización sea un minuto antes de la hora de inicio del perfil siguiente. Durante este minuto, se activará el perfil predeterminado. Si no quiere que el perfil predeterminado esté activo entre los perfiles periódicos, deje vacío el campo de hora de finalización.

Sugerencia

Para configurar varios perfiles contiguos mediante el portal, deje la hora de finalización vacía. El perfil actual dejará de usarse cuando el siguiente se active. Especifique solo una hora de finalización cuando quiera revertir al perfil predeterminado. Crear un perfil periódico sin hora de finalización solo es posible a través del portal y plantillas de ARM.

Varios perfiles mediante plantillas, la CLI y PowerShell

Al crear varios perfiles mediante plantillas, la CLI y PowerShell, siga las instrucciones siguientes.

Consulte la sección escalado automático de la definición de recursos de plantilla de ARM para obtener una referencia de plantilla completa.

En la plantilla no hay ninguna especificación para la hora de finalización. Un perfil permanecerá activo hasta la hora de inicio del perfil siguiente.

Adición de un perfil periódico mediante plantillas ARM

En el ejemplo siguiente se muestra cómo crear dos perfiles periódicos. Un perfil para los fines de semana a partir de las 00:01 del sábado por la mañana y un segundo perfil de día laborable a partir de los lunes a las 04:00. Esto significa que el perfil de fin de semana comenzará el sábado por la mañana, un minuto después de la medianoche, y finalizará el lunes por la mañana a las 04:00. El perfil de día laborable comenzará a las 4:00 del lunes y finalizará pasada la medianoche que divide el viernes del sábado.

Use el siguiente comando para implementar la plantilla: az deployment group create --name VMSS1-Autoscale-607 --resource-group rg-vmss1 --template-file VMSS1-autoscale.json donde VMSS1-autoscale.json es el archivo que contiene el objeto JSON siguiente.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Insights/autoscaleSettings",
            "apiVersion": "2015-04-01",
            "name": "VMSS1-Autoscale-607",
            "location": "eastus",
            "properties": {

                "name": "VMSS1-Autoscale-607",
                "enabled": true,
                "targetResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
                "profiles": [
                    {
                        "name": "Weekday profile",
                        "capacity": {
                            "minimum": "3",
                            "maximum": "20",
                            "default": "3"
                        },
                        "rules": [
                            {
                                "scaleAction": {
                                    "direction": "Increase",
                                    "type": "ChangeCount",
                                    "value": "1",
                                    "cooldown": "PT5M"
                                },
                                "metricTrigger": {
                                    "metricName": "Inbound Flows",
                                    "metricNamespace": "microsoft.compute/virtualmachinescalesets",
                                    "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
                                    "operator": "GreaterThan",
                                    "statistic": "Average",
                                    "threshold": 100,
                                    "timeAggregation": "Average",
                                    "timeGrain": "PT1M",
                                    "timeWindow": "PT10M",
                                    "Dimensions": [],
                                    "dividePerInstance": true
                                }
                            },
                            {
                                "scaleAction": {
                                    "direction": "Decrease",
                                    "type": "ChangeCount",
                                    "value": "1",
                                    "cooldown": "PT5M"
                                },
                                "metricTrigger": {
                                    "metricName": "Inbound Flows",
                                    "metricNamespace": "microsoft.compute/virtualmachinescalesets",
                                    "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
                                    "operator": "LessThan",
                                    "statistic": "Average",
                                    "threshold": 60,
                                    "timeAggregation": "Average",
                                    "timeGrain": "PT1M",
                                    "timeWindow": "PT10M",
                                    "Dimensions": [],
                                    "dividePerInstance": true
                                }
                            }
                        ],
                        "recurrence": {
                            "frequency": "Week",
                            "schedule": {
                                "timeZone": "E. Europe Standard Time",
                                "days": [
                                    "Monday"
                                ],
                                "hours": [
                                    4
                                ],
                                "minutes": [
                                    0
                                ]
                            }
                        }
                    },
                    {
                        "name": "Weekend profile",
                        "capacity": {
                            "minimum": "1",
                            "maximum": "3",
                            "default": "1"
                        },
                        "rules": [],
                        "recurrence": {
                            "frequency": "Week",
                            "schedule": {
                                "timeZone": "E. Europe Standard Time",
                                "days": [
                                    "Saturday"                                    
                                ],
                                "hours": [
                                    0
                                ],
                                "minutes": [
                                    1
                                ]
                            }
                        }
                    }
                ],
                "notifications": [],
                "targetResourceLocation": "eastus"
            }

        }
    ]
}    

Pasos siguientes