【问题标题】:Azure Load Balancer with VM Scale Set: signal to remove VM from rotation带有 VM 规模集的 Azure 负载均衡器:从轮换中移除 VM 的信号
【发布时间】:2018-03-13 15:08:58
【问题描述】:

我有一个虚拟机规模集和一个负载均衡器(常规 LB,而不是应用程序网关)。运行状况探测检查 VM 上的 HTTP 端点,这似乎工作得很好:如果端点知道它还没有准备好处理请求,它就会返回一个非 200 响应,这是一种受控且频繁的状态。

问题:探测的最低可能设置是 5 秒,并且连续失败 2 次,因此至少要经过 10 秒才能将故障虚拟机从轮换中拉出。等待的时间太长,因为在该时间段内可能有许多请求到达并被拒绝,即使 VM 知道此状态,并且规模集中的其他 VM 已准备好处理请求。

问题: VM 有什么方法可以立即通知负载均衡器它想退出轮换?然后,VM 应该停止旋转,直到它开始从 HTTP 运行状况探测端点返回 200 OK

旁注:az network nic ip-config address-pool remove (link) 似乎只适用于独立 VM,不适用于规模集 VM。

【问题讨论】:

  • 我有一个问题。您指定 VM Scale Set 与负载均衡器一起使用,并且使用 HTTP 端点。您使用的是常规负载均衡器还是应用程序网关?我问的原因是因为 HTTP 端点探测不是标准负载均衡器的默认机制,但它是应用程序网关的默认机制。由于您没有提及自定义探针实现,因此我想在给出答案之前与您澄清这一点。谢谢。
  • 嗨@AlexS,感谢您的询问-这是常规负载平衡器,而不是应用程序网关。应用程序网关会在这里有所作为吗?据我所知,它仍然使用常规的负载均衡器。

标签: azure azure-virtual-machine azure-vm-scale-set azure-load-balancer


【解决方案1】:

使用 PowerShell,您可以通过这种方式将网卡添加到负载均衡器:

$lb= get-azurermloadbalancer -name NRP-LB -resourcegroupname NRP-RG
$backend=Get-AzureRmLoadBalancerBackendAddressPoolConfig -name LB-backend -LoadBalancer $lb
$nic =get-azurermnetworkinterface -name lb-nic1-be -resourcegroupname NRP-RG
$nic.IpConfigurations[0].LoadBalancerBackendAddressPools=$backend
Set-AzureRmNetworkInterface -NetworkInterface $nic

并以类似的方式从 LB 中删除 nic

$nic = Get-AzureRmNetworkInterface -ResourceGroupName NRP-RG -Name lb-nic1-be
$nic.IpConfigurations[0].LoadBalancerBackendAddressPools = $null
Set-AzureRmNetworkInterface -NetworkInterface $nic

这样您就可以从负载均衡器中取出您的机器,并在它再次工作时将其添加回来。

参见例如这个link 了解更多详情。

【讨论】:

  • 这可能适用于常规 VM,但规模集 VM 及其嵌套资源(例如 NIC)看起来不同。我使用Get-AzureRmNetworkInterface -VirtualMachineScaleSetName myvmss -ResourceGroupName myrg -VirtualMachineIndex 1 尝试了上述变体,但Set-AzureRmNetworkInterface 抱怨它找不到资源:“资源:{0},未找到”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多