使用 Linux 规模集模板中的来宾指标执行自动缩放
在 Azure 中有两大类主要指标是从 VM 和规模集收集的:主机指标和来宾指标。 粗略地讲,如果想使用标准 CPU、磁盘和网络指标,则主机指标非常适合。 但是,如果需要选择更多的指标,则应考虑来宾指标。
主机指标不需要进行额外设置,因为它们是由主机 VM 收集,而来宾指标则需要在来宾 VM 中安装 Azure 诊断扩展或 Linux Azure 诊断扩展。 使用来宾指标而不是主机指标的一个常见原因是,与主机指标相比,来宾指标提供更大的指标选择范围。 内存消耗指标就是这样一个例子,它们只会通过来宾指标提供。 此处列出了支持的主机指标,此处列出了常用的来宾指标。 本文介绍如何修改基本可行规模集模板,以根据 Linux 规模集的来宾指标使用自动缩放规则。
更改模板定义
在前面的文章中,我们创建了一个基本规模集模板。 现在,我们将使用前面的模板并对其进行修改,以创建一个模板,该模板通过基于来宾指标的自动缩放来部署 Linux 规模集。
首先,添加 storageAccountName
和 storageAccountSasToken
的参数。 诊断代理将指标数据存储在此存储帐户中的某个表内。 从 Linux 诊断代理版本 3.0 开始,不再支持使用存储访问密钥。 改为使用 SAS 令牌。
},
"adminPassword": {
"type": "securestring"
+ },
+ "storageAccountName": {
+ "type": "string"
+ },
+ "storageAccountSasToken": {
+ "type": "securestring"
}
},
接下来,修改规模集 extensionProfile
以包含诊断扩展。 在此配置中,指定要从中收集指标的规模集的资源 ID,以及用来存储指标的存储帐户和 SAS 令牌。 指定指标的聚合频率(在本例中为每隔一分钟)以及要跟踪的指标(在本例中为已用内存百分比)。 有关此配置以及除已用内存百分比之外的其他指标的详细信息,请参阅此文档。
}
}
]
+ },
+ "extensionProfile": {
+ "extensions": [
+ {
+ "name": "LinuxDiagnosticExtension",
+ "properties": {
+ "publisher": "Microsoft.Azure.Diagnostics",
+ "type": "LinuxDiagnostic",
+ "typeHandlerVersion": "3.0",
+ "settings": {
+ "StorageAccount": "[parameters('storageAccountName')]",
+ "ladCfg": {
+ "diagnosticMonitorConfiguration": {
+ "performanceCounters": {
+ "sinks": "WADMetricJsonBlob",
+ "performanceCounterConfiguration": [
+ {
+ "unit": "percent",
+ "type": "builtin",
+ "class": "memory",
+ "counter": "percentUsedMemory",
+ "counterSpecifier": "/builtin/memory/percentUsedMemory",
+ "condition": "IsAggregate=TRUE"
+ }
+ ]
+ },
+ "metrics": {
+ "metricAggregation": [
+ {
+ "scheduledTransferPeriod": "PT1M"
+ }
+ ],
+ "resourceId": "[resourceId('Microsoft.Compute/virtualMachineScaleSets', 'myScaleSet')]"
+ }
+ }
+ }
+ },
+ "protectedSettings": {
+ "storageAccountName": "[parameters('storageAccountName')]",
+ "storageAccountSasToken": "[parameters('storageAccountSasToken')]",
+ "storageAccountEndPoint": "https://core.chinacloudapi.cn/",
+ "sinksConfig": {
+ "sink": [
+ {
+ "name": "WADMetricJsonBlob",
+ "type": "JsonBlob"
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
}
}
}
最后,添加 autoscaleSettings
资源以基于这些指标配置自动缩放。 此资源包含一个引用规模集的 dependsOn
子句,确保在尝试自动缩放该规模集之前它已存在。 如果选择不同的指标作为自动缩放的依据,可使用诊断扩展配置中的 counterSpecifier
作为自动缩放配置中的 metricName
。 有关自动缩放配置的详细信息,请参阅自动缩放最佳做法和 Azure Monitor REST API 参考文档。
+ },
+ {
+ "type": "Microsoft.Insights/autoscaleSettings",
+ "apiVersion": "2015-04-01",
+ "name": "guestMetricsAutoscale",
+ "location": "[resourceGroup().location]",
+ "dependsOn": [
+ "Microsoft.Compute/virtualMachineScaleSets/myScaleSet"
+ ],
+ "properties": {
+ "name": "guestMetricsAutoscale",
+ "targetResourceUri": "[resourceId('Microsoft.Compute/virtualMachineScaleSets', 'myScaleSet')]",
+ "enabled": true,
+ "profiles": [
+ {
+ "name": "Profile1",
+ "capacity": {
+ "minimum": "1",
+ "maximum": "10",
+ "default": "3"
+ },
+ "rules": [
+ {
+ "metricTrigger": {
+ "metricName": "/builtin/memory/percentUsedMemory",
+ "metricNamespace": "",
+ "metricResourceUri": "[resourceId('Microsoft.Compute/virtualMachineScaleSets', 'myScaleSet')]",
+ "timeGrain": "PT1M",
+ "statistic": "Average",
+ "timeWindow": "PT5M",
+ "timeAggregation": "Average",
+ "operator": "GreaterThan",
+ "threshold": 60
+ },
+ "scaleAction": {
+ "direction": "Increase",
+ "type": "ChangeCount",
+ "value": "1",
+ "cooldown": "PT1M"
+ }
+ },
+ {
+ "metricTrigger": {
+ "metricName": "/builtin/memory/percentUsedMemory",
+ "metricNamespace": "",
+ "metricResourceUri": "[resourceId('Microsoft.Compute/virtualMachineScaleSets', 'myScaleSet')]",
+ "timeGrain": "PT1M",
+ "statistic": "Average",
+ "timeWindow": "PT5M",
+ "timeAggregation": "Average",
+ "operator": "LessThan",
+ "threshold": 30
+ },
+ "scaleAction": {
+ "direction": "Decrease",
+ "type": "ChangeCount",
+ "value": "1",
+ "cooldown": "PT1M"
+ }
+ }
+ ]
+ }
+ ]
+ }
}
]
}
后续步骤
可以按照 Azure 资源管理器文档部署上述模板。
若要学习这一系列教程,可先阅读基本规模集模板文章。
可以了解如何修改基本规模集模板,以便将规模集部署到现有虚拟网络。
可以了解如何修改基本规模集模板,以便使用自定义映像部署规模集。
可以了解如何修改基本规模集模板,以便使用基于来宾的自动缩放部署 Linux 规模集。
有关规模集的详细信息,请参阅规模集概述页。