【问题标题】:Add an Azure internal load balancer to existing RM Virtual network将 Azure 内部负载均衡器添加到现有 RM 虚拟网络
【发布时间】:2016-07-04 05:21:31
【问题描述】:

我正在将一个解决方案从经典 VM 迁移到在虚拟网络中运行的新资源管理器 VM,我有一个通过端点上的 ACL 访问的 Web 应用程序。我的目标是使用点对站点,这样我的网络应用程序就可以使用内部 IP 而不是通过 Internet 呼叫来访问虚拟机。

我设置了一个新的虚拟网络。在其中,我创建了新的 RM VM,并使用我的服务对其进行了配置。这一切都运行良好,我的服务(Elasticsearch)能够在所有集群之间进行通信。

我现在要做的是向 VN 添加一个内部负载平衡器。我发现这很难做到,因为我能找到的所有信息都会在创建负载平衡器的过程中创建一个 new 网络和 new 虚拟机。此外,许多命令(尽管我认为这些可能是经典模式命令)都要求提供 ServiceName。我还没有创建服务。

我真的很想知道这些资源的创建顺序。重复一遍,最后,我想要一个新的虚拟网络,带有一个内部负载均衡器,我可以创建一个点到站点连接,这样我的 Web 应用程序就可以进行非互联网调用,并且让它循环分发到集群中的一个虚拟机。

【问题讨论】:

  • 您真的需要点到站点设置吗?一旦您设置了 Vnet 并通过私有端点进行通信,虚拟机/云服务在内部进行通信对吗?

标签: azure azure-virtual-machine azure-resource-manager azure-virtual-network


【解决方案1】:

使用内部负载均衡器时,您可以通过将 vnet 上的 NIC 与 LB 后端相关联来填充后端池。当您在 vnet 上集成 webapp 时,您不会直接管理 NIC,因为这通过 P2S VPN 工作。

这意味着您目前无法将 Web 应用的内部 IP 地址添加到 ILB。如果您想通过内部 IP 在 vnet 上的 webapps 之间进行负载平衡,我建议您查看Azure Application Gateway。这样,您可以在创建网关时在后端池中添加 FQDN 或内部 IP,而不是关联 NIC。

如果您想继续使用内部负载平衡器,例如在负载平衡虚拟机时,您也可以使用现有的 vnet。

您可以按照https://azure.microsoft.com/en-us/documentation/articles/load-balancer-get-started-ilb-arm-ps/ 上的步骤操作,我猜这是您提出问题的起点。

本文介绍了创建负载均衡器的先决条件,然后创建负载均衡器本身。前两个 sn-ps 用于创建子网配置和具有该配置的 vnet:

$backendSubnet = New-AzureRmVirtualNetworkSubnetConfig -Name LB-Subnet-BE -AddressPrefix 10.0.2.0/24

$vnet= New-AzureRmVirtualNetwork -Name NRPVNet -ResourceGroupName NRP-RG -Location "West US" -AddressPrefix 10.0.0.0/16 -Subnet $backendSubnet

这包括在内,因为下一步(创建前端 ip 配置)需要一个子网 ID 作为输入。如果您已经有一个带有子网的 vnet 可以使用,则可以将上面的两行替换为

$vnet = Get-AzureRmVirtualNetwork -Name YourNetwork -ResourceGroupName YourRG

接下来的步骤将是,假设您的前端 IP 位于 vnet 的第一个子网上,并且示例中使用的 IP 空间与您的 vnet 上的 IP 空间匹配:

$frontendIP = New-AzureRmLoadBalancerFrontendIpConfig -Name LB-Frontend -PrivateIpAddress 10.0.2.5 -SubnetId $vnet.subnets[0].Id

$beaddresspool= New-AzureRmLoadBalancerBackendAddressPoolConfig -Name "LB-backend"
$inboundNATRule1= New-AzureRmLoadBalancerInboundNatRuleConfig -Name "RDP1" -FrontendIpConfiguration $frontendIP -Protocol TCP -FrontendPort 3441 -BackendPort 3389

$inboundNATRule2= New-AzureRmLoadBalancerInboundNatRuleConfig -Name "RDP2" -FrontendIpConfiguration $frontendIP -Protocol TCP -FrontendPort 3442 -BackendPort 3389

$healthProbe = New-AzureRmLoadBalancerProbeConfig -Name "HealthProbe" -RequestPath "HealthProbe.aspx" -Protocol http -Port 80 -IntervalInSeconds 15 -ProbeCount 2

$lbrule = New-AzureRmLoadBalancerRuleConfig -Name "HTTP" -FrontendIpConfiguration $frontendIP -BackendAddressPool $beAddressPool -Probe $healthProbe -Protocol Tcp -FrontendPort 80 -BackendPort 80
$NRPLB = New-AzureRmLoadBalancer -ResourceGroupName "NRP-RG" -Name "NRP-LB" -Location "West US" -FrontendIpConfiguration $frontendIP -InboundNatRule $inboundNATRule1,$inboundNatRule2 -LoadBalancingRule $lbrule -BackendAddressPool $beAddressPool -Probe $healthProbe 

假设已经创建了后端 NIC,请为每个 NIC 使用以下代码将它们添加到负载均衡器后端池:

$lb= Get-AzureRmLoadBalancer –name NRP-LB -resourcegroupname NRP-RG
$backend= Get-AzureRmLoadBalancerBackendAddressPoolConfig -name backendpool1 -LoadBalancer $lb

$nic=Get-AzureRmNetworkInterface –name lb-nic1-be -resourcegroupname NRP-RG
$nic.IpConfigurations[0].LoadBalancerBackendAddressPools=$backend
Set-AzureRmNetworkInterface -NetworkInterface $nic

【讨论】:

  • 我目前在我的 VN 的前端池中有我的 VM 网卡。我曾假设其意图是前端是应用程序层,而后端可用于数据库层之类的东西。在这种情况下,我只会使用前端。需要明确的是,我的网络应用程序不是 VN 的一部分。这就是我想创建点对点的原因。我以为我可以在 VN 的前面有一个 lb,并从那里直接向 VM 发出请求。这就是我认为文章上的图像所暗示的。我是否需要在前面有一个 nic,然后再将一个 lb 路由到后面?
  • “我的 VN 的前端池”是什么意思?那是子网吗?负载均衡器上下文中的术语前端和后端与应用程序布局(后端/数据库/等)无关,而是与负载均衡器在前端接收请求并将这些请求路由到与其后端池关联的网络接口这一事实有关。此负载均衡器设置可以在 vnet 上的任何位置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多