具有多个配置文件的自动缩放

缩放一周中特定某天或特定日期和时间的资源,可以降低成本,同时仍在需要时提供所需的容量。

可以在自动缩放中使用多个配置文件在不同时间以不同的方式进行缩放。 例如,如果企业在周末未处于活动状态,请创建定期配置文件以在星期六和星期日缩减资源。 如果黑色星期五是忙碌的一天,请创建一个配置文件以在黑色星期五自动横向扩展资源。

本文介绍自动缩放中不同的配置文件及其使用方法。

可以在自动缩放设置中创建一个或多个配置文件。

有三种类型的配置文件:

  • 默认配置文件。 默认配置文件是自动创建的,不依赖于计划。 默认配置文件是不能删除的。 没有与当前日期和时间匹配的其他配置文件时,系统将使用默认配置文件。
  • 定期配置文件。 定期配置文件在特定时间范围内有效,并针对一周中选定的某一天或几天重复执行。
  • 固定日期和时间的配置文件。 对特定日期的某个时间范围有效的配置文件。

每次运行自动缩放服务时,都会按以下顺序评估配置文件:

  1. 固定日期配置文件
  2. 定期配置文件
  3. 默认配置文件

如果配置文件的日期和时间设置与当前时间匹配,自动缩放将应用该配置文件的规则和容量限制。 仅使用第一个适用的配置文件。

以下示例显示了具有默认配置文件和定期配置文件的自动缩放设置。

屏幕截图,显示具有默认和定期配置文件或缩放条件的自动缩放设置。

在上面的示例中,将在星期一凌晨 3 点停止使用定期配置文件。 如果实例计数小于 3,则自动缩放会缩放到新的最小值 3。 自动缩放将继续使用此配置文件,并在星期一晚上 8 点之前根据 CPU 使用百分比进行缩放。 在所有其他情况下,系统将根据默认配置文件(根据请求数)进行缩放。 星期一晚上 8 点后,自动缩放将切换到默认配置文件。 假设当时的实例数是 12,自动缩放会横向缩减为 10(默认配置文件允许的最大值)。

多个连续配置文件

根据配置文件的开始时间自动缩放配置文件之间的转换。 给定配置文件的结束时间决定于下一个配置文件的开始时间。

在门户中,结束时间字段将成为默认配置文件的下一个开始时间。 你不能为一个配置文件的结束和下一个配置文件的开始指定相同的时间。 门户将结束时间强制设置为比下一个配置文件的开始时间早一分钟。 在这一分钟内,默认配置文件将变为活动状态。 如果不希望默认配置文件在定期配置文件之间变为活动状态,请将结束时间字段留空。

提示

若要使用门户设置多个连续配置文件,请将结束时间留空。 当下一个配置文件变为活动状态时,当前配置文件将被停止使用。 仅当要还原为默认配置文件时,才应指定结束时间。 仅支持通过门户和 ARM 模板创建无结束时间的定期配置文件。

使用模板、CLI 和 PowerShell 的多个配置文件

使用模板、CLI 和 PowerShell 创建多个配置文件时,请遵循以下准则。

有关完整模板参考,请参阅 ARM 模板资源定义的自动缩放部分。

模板中没有指定结束时间。 一个配置文件在下一个配置文件的开始时间之前将一直保持活动状态。

使用 ARM 模板添加定期配置文件

以下示例演示如何创建两个定期配置文件。 一个配置文件用于周末,从周六早上 00:01 开始,另一个配置文件用于工作日,从星期一 04:00 开始。 这意味着周末配置文件将从周六早上的午夜 1 分开始,并在周一早上 04:00 结束。 工作日配置文件将从周一早晨 4 点开始,在周六凌晨午夜刚过后结束。

使用以下命令来部署模板:az deployment group create --name VMSS1-Autoscale-607 --resource-group rg-vmss1 --template-file VMSS1-autoscale.json,其中 VMSS1-autoscale.json 是包含以下 JSON 对象的文件。

{
    "$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": "chinanorth2",
            "properties": {

                "name": "VMSS1-Autoscale-607",
                "enabled": true,
                "targetResourceUri": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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": "chinanorth2"
            }

        }
    ]
}    

后续步骤