我创建了一个基于模板的部署,它过度配置了许多 Linux VM。我想根据经典实例自动缩放它们,Azure 将根据 CPU 负载打开/关闭实例。
ARM模式可以吗?如果没有,是否有建议的替代方法?我能找到的唯一示例是使用 Application Insights 和 PaaS 功能。我有一个 Python 应用程序在 Ubuntu 主机上的 Docker 中运行。
我创建了一个基于模板的部署,它过度配置了许多 Linux VM。我想根据经典实例自动缩放它们,Azure 将根据 CPU 负载打开/关闭实例。
ARM模式可以吗?如果没有,是否有建议的替代方法?我能找到的唯一示例是使用 Application Insights 和 PaaS 功能。我有一个 Python 应用程序在 Ubuntu 主机上的 Docker 中运行。
对于 IaaS,您必须使用虚拟机规模集才能使用自动缩放,否则您需要坚持使用 PaaS(Web 应用程序)。
为此,您首先需要为 VM 创建一个可用性组。ARM 模板中的资源声明如下所示:
{
"type": "Microsoft.Compute/availabilitySets",
"name": "[variables('availabilitySetName')]",
"apiVersion": "2015-05-01-preview",
"location": "[parameters('location')]",
"properties": {
"platformFaultDomainCount": "2"
}
}
然后对于虚拟机资源,ARM 模板中的 decliration 将如下所示:
{
"apiVersion": "2015-05-01-preview",
"type": "Microsoft.Compute/virtualMachines",
"name": "[concat(variables('vmName'), '0')]",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Storage/storageAccounts/', parameters('newStorageAccountName'))]",
"[concat('Microsoft.Network/networkInterfaces/', variables('nicName'), '0')]",
"[concat('Microsoft.Compute/availabilitySets/', variables('availabilitySetName'))]"
],
"properties": {
"availabilitySet": {
"id": "[resourceId('Microsoft.Compute/availabilitySets', variables('availabilitySetName'))]"
},
...},
快速入门模板是一个很好的参考: https ://raw.githubusercontent.com/azure/azure-quickstart-templates/master/201-2-vms-2-FDs-no-resource-loops/azuredeploy.json
在可用性集中拥有两个或多个相同大小的 VM 后,您将使用 microsoft.insights/autoscalesettings 配置自动缩放,我相信您在问题中引用了它。这是在云服务上完成的,因此它的工作方式与 PaaS 类似......就像这样:
{
"apiVersion": "2014-04-01",
"name": "[concat(variables('vmName'), '-', resourceGroup().name)]",
"type": "microsoft.insights/autoscalesettings",
"location": "East US",
...},
我还首先使用门户设置了自动缩放,并查看了 ARMExplorer,以便更好地了解代码中的内容。ARMExplorer 在这里:Azure 资源浏览器