将Azure内部负载均衡器添加到现有RM虚拟网络

时间:2016-07-04 05:21:31

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

我正在从Classic VM迁移解决方案,我的Web应用程序通过端点上的ACL访问,并在虚拟网络中运行新的Resource Manager VM。我的目标是使用“站点到站点”,以便我的Web应用程序可以使用内部IP访问VM,而不是通过Internet呼叫。

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

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

我真的想知道应该创建这些资源的顺序。最后,我希望有一个新的虚拟网络,带有一个内部负载均衡器,我可以创建一个Point-to-Site连接,这样我的Web App就可以进行非互联网呼叫,将它循环分发到集群中的一个虚拟机。

1 个答案:

答案 0 :(得分:0)

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

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

如果您想继续使用内部负载均衡器,例如在负载均衡VM时,您也可以使用现有的vnet执行此操作。

您可以按照https://azure.microsoft.com/en-us/documentation/articles/load-balancer-get-started-ilb-arm-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配置)需要一个subnetID作为输入。如果您已经拥有要使用的子网的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 

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

$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