Azure VM

时间:2016-01-06 12:55:36

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

我使用azure的新资源管理器设置和几个虚拟机,我试图找到将多个IP关联到单个虚拟机的最佳方法。

我已经阅读了一些不同的文章,ILPIP(实例级公共IP),负载平衡池和多个NIC。

我不确定最好的选择。我的虚拟机已经设置和配置,所以我不想再次尝试加载新虚拟机以启用某些功能(有些功能提到多个网卡仅在新虚拟机上可用)。

我查看了Load Balanced解决方案,但似乎新管理门户网站中缺少该解决方案。您可以查看负载均衡器,但无法添加新的负载均衡器(如果它们仍然可用)。

我需要每个虚拟机有多个IP,因为我们的网站拥有SSL,由于浏览器限制较旧,无法通过SNI提供服务。

我感到茫然,因为大多数文章都提到了较旧的设置,而不是资源管理器方法。

如果有人有坚实的表现方式,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

在ARM(Azure资源管理器)模型中,通过负载均衡器实现具有不同公共IP的多个SSL站点的最佳方式。

  • 创建一个负载均衡器,具有一个后端池,多个前端IP配置(一个用于公共IP),多个LB规则(公共IP各一个:443 - > backendpool :)。
  • 将所有具有NIC的VM配置为后端池的一部分。一个网卡就足够了,不需要多网卡。

请注意,您可以create a load-balancer through Powershell, Azure CLI or ARM templates。目前,门户网站支持不可用。

另见sample template with multiple public IPs on a load-balancer

相关命令(来自上面的Azure官方文档链接)在powershell中实现了这一点:

# Two public IP addresses
$publicIP1 = New-AzureRmPublicIpAddress -Name PublicIp1 -ResourceGroupName NRP-RG -Location "West US" –AllocationMethod Static -DomainNameLabel loadbalancernrp 
$publicIP2 = New-AzureRmPublicIpAddress -Name PublicIp2 -ResourceGroupName NRP-RG -Location "West US" –AllocationMethod Static -DomainNameLabel loadbalancernrp 

# Two frontend IP configurations
$frontendIP1 = New-AzureRmLoadBalancerFrontendIpConfig -Name LB-Frontend1 -PublicIpAddress $publicIP1 
$frontendIP2 = New-AzureRmLoadBalancerFrontendIpConfig -Name LB-Frontend2 -PublicIpAddress $publicIP2

# One backend pool. 
# Note that Name parameter value
$beaddresspool= New-AzureRmLoadBalancerBackendAddressPoolConfig -Name "LB-backend"

# Two LB rules
# Note that backend port is 444 for the second rule.
$lbrule1 = New-AzureRmLoadBalancerRuleConfig -Name "HTTPS1" -FrontendIpConfiguration $frontendIP1 -BackendAddressPool  $beAddressPool -Probe $healthProbe -Protocol Tcp -FrontendPort 443 -BackendPort 443
$lbrule2 = New-AzureRmLoadBalancerRuleConfig -Name "HTTPS2" -FrontendIpConfiguration $frontendIP2 -BackendAddressPool  $beAddressPool -Probe $healthProbe -Protocol Tcp -FrontendPort 443 -BackendPort 444

# Two NICs
# Use the specific backendpool referenced in the LB rules
$backendnic1 = New-AzureRmNetworkInterface -Name lb-nic1-be -ResourceGroupName NRP-RG -Location "West US" -Subnet $backendSubnet -LoadBalancerBackendAddressPool $beaddresspool
$backendnic2 = New-AzureRmNetworkInterface -Name lb-nic2-be -ResourceGroupName NRP-RG -Location "West US" -Subnet $backendSubnet -LoadBalancerBackendAddressPool $beaddresspool

答案 1 :(得分:0)

如果您已经设置了负载均衡器,则可以使用以下powershell将公共IP和前端IP配置添加到现有负载均衡器中:

$IPName = "PublicIp2"
#domain name lable must be lower case
$DomainName = "public2"
$frontendConfigName = "LB-" + $DomainName

$slb = get-AzureRmLoadBalancer -Name my-web-loadbalancer -ResourceGroupName RGN01
$publicIP2 = New-AzureRmPublicIpAddress -Name $IPName -ResourceGroupName RGN01 -Location "West Europe" –AllocationMethod Static -DomainNameLabel $DomainName
$frontendIP2 = New-AzureRmLoadBalancerFrontendIpConfig -Name $frontendConfigName -PublicIpAddress $publicIP2
$slb | Add-AzureRmLoadBalancerFrontendIpConfig -PublicIpAddress $publicIP2 -Name $frontendConfigName
$slb | Set-AzureRmLoadBalancer 

$HTTPSName = $DomainName + "HTTPS"
$HTTPName = $DomainName + "HTTP"
$healthProbe = $slb.Probes[0]

#You need to get a backend port that's not being used. Use #Get-AzureRmLoadBalancerRuleConfig -LoadBalancer $slb to see the config rules that are currently on the load balancer
#don't use 445 - it's used by Active directory
#You need to open the ports you've chosen on your webservers firewalls
$slb | Add-AzureRmLoadBalancerRuleConfig -Name $HTTPSName -FrontendIpConfiguration $frontendIP2 -BackendAddressPool $slb.BackendAddressPools[0] -Probe $healthProbe -Protocol Tcp -FrontendPort 443 -BackendPort 446
$slb | Set-AzureRmLoadBalancer
$slb | Add-AzureRmLoadBalancerRuleConfig -Name $HTTPName -FrontendIpConfiguration $frontendIP2 -BackendAddressPool $slb.BackendAddressPools[0] -Probe $healthProbe -Protocol Tcp -FrontendPort 80 -BackendPort 82
$slb | Set-AzureRmLoadBalancer