无法更新自动缩放配置。 (Azure 规模集)

Failed to update autoscale configuration. (Azure scale set)

我在尝试手动将 Azure 规模集上的实例数增加到 10 以上时收到以下错误。

Failed to update autoscale configuration for 'XXXX'.{ "error": { "details": [], "code": "InboundNatPoolFrontendPortRangeSmallerThanRequestedPorts", "message": "The frontend port range for the inboundNATpool /subscriptions/xxxx/resourceGroups/xxxx/providers/Microsoft.Network/loadBalancers/LB-xxx/inboundNatPools/DebuggerListenerNatPool-4vhwwa8stp is smaller than the requested number of ports 15 in VM scale set /subscriptions/xxx/resourceGroups/xxxx/providers/Microsoft.Compute/virtualMachineScaleSets/XXXX." } }

实例的默认数量为 3,最多 10 个的任何数量都可以正常工作。订阅有大量可用内核。

查看 Azure 门户中引用的负载均衡器,我看不到任何明显与此错误消息相关的设置。 LB 的设置 'SKU' 的值为 'Basic',我猜这可能是个问题? (尽管阅读此内容会表明限制为 100)

代码 'InboundNatPoolFrontendPortRangeSmallerThanRequestedPorts' 没有 google 个结果,搜索部分错误消息没有给出任何有意义的结果。

感谢任何指点

确保

  • 您在子网中的 IP 地址范围足够大
  • 如果您通过 PowerShell 或 CLI 手动扩展
  • ,您还需要向负载均衡器添加一个 "Inbound NAT rule"

"InboundNatPoolFrontendPortRangeSmallerThanRequestedPorts"

此错误消息表示,您的负载均衡器 NAT 池小于 VM 规模集中请求的端口 15 的数量。

这里有一个 VMSS NAT 池的例子:

 "variables": {
 "natStartPort": 50000,
 "natEndPort": 50119,
 "natBackendPort": 3389,}
 "inboundNatPools": [
          {
            "name": "[variables('natPoolName')]",
            "properties": {
              "frontendIPConfiguration": {
                "id": "[variables('frontEndIPConfigID')]"
              },
              "protocol": "tcp",
              "frontendPortRangeStart": "[variables('natStartPort')]",
              "frontendPortRangeEnd": "[variables('natEndPort')]",
              "backendPort": "[variables('natBackendPort')]"
            }
          }
        ],

请检查您的 NAT 池范围

关于在 VMSS 负载均衡器中编辑入站 NAT 池,我们可以使用 CLI 2.0 来编辑它:

az network lb inbound-nat-pool create --backend-port
                                      --frontend-port-range-end
                                      --frontend-port-range-start
                                      --lb-name
                                      --name
                                      --protocol {All, Tcp, Udp}
                                      --resource-group

此处编辑VMSS NAT池,请参考

请记住,如果您过度配置,您将暂时获得比您要求的更多的 VM(文档 here)。所以你需要有足够的 NAT 规则来容纳额外的虚拟机。您永远不需要超过 VM 数量的 NAT 规则的 2 倍(因此,如果您的 VM 最大值为 10,则池中的 NAT 规则永远不应超过 20)。

在我的例子中,我使用一个名为 EtwListenerNatPool-qs8az5dmgu 的入站 NAT 池进行负载平衡,它的 运行ge 只有 15 个端口,限制我们只能扩展到 15 个实例。要解决此问题,我 运行 在 Azure CLI 中执行以下命令(您的名称可能不同,您可以在门户中查看池):

az login
az network lb inbound-nat-pool create --backend-port 810 --frontend-port-range-end 860 --frontend-port-range-start 810 --lb-name <lbName> --name EtwListenerNatPool-qs8az5dmgu --protocol Tcp --resource-group <resourceGroup>