0

我在 ARM 模板中使用带有应用程序网关的 VM 规模集。第一次部署工作正常。重新部署模板时,我收到错误消息:“一个后端地址池最多可以有一个 VM 规模集”。

IpConfiguration /subscriptions/.../resourceGroups/.../providers/Microsoft.Compute/virtualMachineScaleSets/.../updateGroups/.../networkInterfaceConfigurations/.../ipConfigurations/... 无法引用后端地址池/subscriptions /.../resourceGroups/.../providers/Microsoft.Network/applicationGateways/.../backendAddressPools/... 因为它包含另一个 VM 规模集。一个后端地址池最多可以有一个 VM 规模集。(代码:ApplicationGatewayBackendAddressPoolCanHaveAtMostOneVMScaleSet)

这个问题的根本原因是什么?

澄清:通过重新部署我的意思是:我想更新现有的部署。我不想重复。

4

3 回答 3

0

“后端地址池”是(根据Azure Resource Manager Support for Load Balancer

这些是与将分配负载的虚拟机网络接口卡 (NIC) 关联的 IP 地址。

您的部署中发生的情况是,您的部署尝试在两组不同的虚拟机上使用相同的后端地址池。

在您的模板中的某处,您将有一个类似这样的部分

"type": "Microsoft.Network/loadBalancers",
"name": "[variables('loadBalancerName')]",
"location": "[parameters('resourceLocation')]",
"apiVersion": "[variables('networkApi')]",
"dependsOn": [
    "[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]"
],
"properties": {
    "backendAddressPools": [
        {
            "name": "[variables('backendAddressPoolsName')]"
        }
    ],

(显然不是一段有效的 JSON / 模板)

如果您更改backendAddressPoolsName第二个模板中的变量,这将解决问题。

如果您需要多次部署此模板,您可以通过将变量修改为类似这样来创建唯一名称

"backendAddressPoolsName": "[toLower(concat(parameters('BaseName'), uniqueString(resourceGroup().id)))]",

这将根据资源组 ID 创建一个唯一的字符串。这意味着您可以毫无问题地从同一个模板部署多个资源组。

于 2016-04-07T09:47:29.670 回答
0

当您重新部署模板时,您要更改什么?

对于重新部署,您不需要指定所有 VMSS 属性(例如网络)和关联资源(例如应用程序网关),只需指定 VMSS 的 sku 属性以及您要专门更改的任何属性。

于 2016-04-08T18:27:58.770 回答
0

我联系了 Azure 团队,他们告诉我这是他们这边的一个错误,将在下一个 NRP 版本中修复。

编辑:这个错误已经解决。

于 2016-04-09T05:44:19.070 回答