0

我创建了一个带有负载平衡器的 vmss 和为 http 80 地址配置的探针/

我现在已经使用专用的活动路由更新了我的应用程序,例如/api/alive,它可以更快地回复基本 url,这就是我想用作负载平衡规则的探针的那个。

我已经用新的探测详细信息更新了我的模板(基础是https://github.com/Azure/vm-scale-sets/blob/master/preview/upgrade/autoupdate.json),但我不断收到以下信息错误:

"error": {
    "code": "CannotModifyRuleUsedByProbeUsedByVMSS",
    "message": "Load balancer rule /subscriptions/SUBID/resourceGroups/GROUPNAME/providers/Microsoft.Network/loadBalancers/RESNAME-lb/loadBalancingRules/webhttpslb cannot be modified because it references the load balancer probe /subscriptions/SUBID/resourceGroups/GROUPNAME/providers/Microsoft.Network/loadBalancers/RESNAME-lb/probes/saProbe that used as health probe by VM scale set /subscriptions/SUBID/resourceGroups/GROUPNAME/providers/Microsoft.Compute/virtualMachineScaleSets/RESNAME. To make changes to this rule, please update VM scale set to remove the reference to the probe.",
}

无论我尝试哪种方式,删除所有探针,仅修改探针的详细信息,我都会不断收到此错误。

我们是否打算让规模集中的所有 VM 来更新探测?还有其他方法吗?非常感谢您提前提供的任何帮助。

更新

之前的模板:https ://pastebin.com/YisgUbRk

之后的模板:https ://pastebin.com/2VmgPMur

我正在尝试用saProbe规则和 VMSS替换规则httpProbesshProbeVMSS。

我也尝试将 VMSS 探测保留为saProbe并将其添加httpProbe到 LB 规则中,但这也不起作用,得到了同样的错误。

这是 saProbe https://pasteboard.co/HuKMcwA.png的当前设置,它们与粘贴后的内容相匹配。

更新 2

试图保持saProbeLB 规则,但将 VM 探测更改为sshProbe,结果相同,webhttpslb规则错误相同。

关于如何优雅地更换探头的任何建议?没有负载均衡和虚拟机停机时间?

更新 3

尼尔,确实是正确的(好地方!)还有一个我没有注意到的额外变化。

但是,现在很明显,我实际上想要实现的目标可能是不可能的。我将 saProbe 保留在 LB 规则上,但将 VMSS 探针更改为sshProbe并收到此错误:

"error": { "details": [], "code": "CannotUseInactiveHealthProbe", "message": "VM scale set /subscriptions/SUBID/resourceGroups/GROUPNAME/providers/Microsoft.Compute/virtualMachineScaleSets/RESNAME cannot use probe /subscriptions/SUBID/resourceGroups/GROUPNAME/providers/Microsoft.Network/loadBalancers/RESNAME-lb/probes/sshProbe as a HealthProbe because load balancing rules (weblb, webhttpslb) that send traffic to the scale set IPs in backend address pools (RESNAME-bepool) do not use this probe." }

谁能证实这一点?如果我添加一个虚拟规则来激活sshProbe? 这种情况的最佳实践是什么?

更新 4

是的,首先从 VMSS 中移除探针是关键。不得不运行模板几次,但现在最终只包括httpProbe附加到规则和 VMSS。

4

2 回答 2

1

好吧,错误清楚地表明您无法修改此规则,您可以创建一个新规则并改用该规则。

好的,正如错误所说,您不能对规则进行任何更改,只要它引用了用作 VMSS 运行状况探测的探测:

在您的模板中,您得到:

"healthProbe": {
    "id": "[concat(variables('lbId'), '/probes/', variables('saProbeName'))]"
},

您应该在进行部署之前将其从 vmss 中删除,或者创建一组不使用该探针的新规则,这样您就可以修改这些规则。

于 2018-07-16T17:08:12.880 回答
1

查看之前和之后的模板,似乎 loadDistribution 从 SourceIPProtocol 更改为 SourceIP(这似乎是两次指定 loadDistribution 的情况)。这可能是您看到的错误的原因(不确定,但这是我的最佳猜测)

希望这可以帮助!:)

-尼尔

于 2018-07-18T05:23:17.773 回答