如果负载均衡器下有多个规模集 运行,我能否将 IP 地址指向特定的 Azure VM 规模集?

Can I direct an IP address to a specific Azure VM scale set, if more than one scale set is running under a load balancer?

我在 Azure 中有 2 个不同的虚拟机规模集 运行。他们都在同一个资源组中。我有一个用于 kubernetes 的 Azure 负载平衡器,它有一个后端池,其中包含两个规模集中的所有 VM。

我在 Azure 中设置了 2 个不同的 'Public IP addresses'。我希望其中一个 IP 指向第一个虚拟机规模集,第二个 IP 指向第二个虚拟机规模集(最好不必指定要连接的 VM - 我希望 IP 指向如果可能的话,以某种方式设置规模,而不是单个虚拟机)。

对于两个虚拟机规模集,Azure 中的 'Networking' 部分如下(它显示了第一个 IP 的入站端口规则,但第二个 IP 当前根本不存在于入站上端口规则:

在负载平衡器 > 入站 NAT 规则部分下,我查看了添加新规则,但是 'Add inbound NAT rule' 页面上的 'Target virtual machine' 下拉列表没有显示任何选项(并且在任何情况下,如果可能的话,我更愿意将 IP 定位到 VM 规模集):

我查看了以下问题,但它们没有解决我的情况。是否可以将我的第一个 IP 定向到第一个 VM 规模集,并将第二个 IP 定向到第二个 VM 规模集?如果不是,我可以使用相同的负载均衡器将我的第二个 IP 定向到第二个规模集中的其中一个 VM 吗?我将如何实现这两种方法中的任何一种?

Azure VM: More than one Public IP

我也遇到过这个问题,我认为这是一个需要解决的问题。您无法在 Azure 门户中解决它。我通过 CLI 命令解决了这个问题,步骤如下:

  1. 创建入站 nat 池:
az network lb inbound-nat-pool create --backend-port 22 --frontend-port-range-end 50010 --frontend-port-range-start 50000 --lb-name lbName --name natpoolName --protocol Tcp -g resourceGroupName
  1. 找到入站 nat 池资源 ID:
az network lb show -g resourceGroupName -n lbName --query inboundNatPools
  1. 将入站 nat 池添加到 vmss:
az vmss update -g charles -n azurevmss --add virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].loadBalancerInboundNatPools id=inboundNatPoolId
  1. 升级 Azure 门户中的 vmss 实例

然后您可以看到所有 VMSS 实例都已经在负载均衡器入站 NAT 池中。您还可以根据需要创建具有特殊前端 IP 的入站 Nat Pool。