我创建了一个带有负载均衡器和为http 80地址/
配置的探针的vmss。
我现在已使用专用的实时路线更新了我的应用,例如/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
我正在尝试将规则和VMSS中的saProbe
替换为规则中的httpProbe
和VMSS中的sshProbe
。
我还尝试过将VMSS探针保持为saProbe
,并且仅将httpProbe
添加到LB规则中,但这也不起作用,也出现了相同的错误。
这是saProbe https://pasteboard.co/HuKMcwA.png的当前设置,它们与粘贴后的内容匹配。
更新2
试图将saProbe
保留在LB规则上,但将VM探针更改为sshProbe
,在webhttpslb
规则上具有相同的结果和相同的错误。
有关如何正常更换探头的任何建议?没有LB和VM停机?
更新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中删除探针是关键。不得不运行模板几次,但是最终仅包含规则和VMSS附带的httpProbe
。
答案 0 :(得分:1)
好吧,该错误明确指出您无法修改此规则,可以创建一个新规则,而改用该规则。
好吧,正如错误所言,您不能对规则进行任何更改,只要它引用了用作VMSS健康状况探针的探针即可。
在您的模板中,您得到了:
"healthProbe": {
"id": "[concat(variables('lbId'), '/probes/', variables('saProbeName'))]"
},
您应该在进行部署之前将其从vmss中删除,或者创建一组不使用该探针的新规则,那样便可以对其进行修改。
答案 1 :(得分:1)
看看之前和之后的模板,似乎loadDistribution从SourceIPProtocol更改为SourceIP(这似乎是两次都指定loadDistribution的情况)。这可能是导致您看到错误的原因(不确定,但这是我的最佳猜测)
希望这会有所帮助! :)
-Neil