Azure VM 的多个 public IP
Multiple public IPs to Azure VM
我正在使用 azure 的新资源管理器设置和几个虚拟机,我正在尝试找到将多个 IP 关联到单个虚拟机的最佳方法。
我阅读了几篇不同的文章,ILPIP(实例级别 public IP)、负载平衡池和多个 NIC。
我不确定最佳选择。我的 VM 已经设置和配置好,所以我不想再次经历加载新 VM 以启用某些功能的过程(有人提到多个 NIC 仅在新 VM 上可用)。
我查看了负载平衡解决方案,但它似乎在新的管理门户中缺失。您可以查看您的负载均衡器,但不能添加新负载均衡器(如果它们仍然可用)。
我需要每个 VM 的多个 IP,因为我们有一些站点具有 SSL,由于旧的浏览器限制,这些站点无法通过 SNI 提供服务。
我很困惑,因为大多数文章都提到了旧的设置,而不是资源管理器方法。
如果有人有可靠的方法来执行此操作,我将不胜感激。
在 ARM(Azure 资源管理器)模型中,实现具有不同 public IP 的多个 SSL 站点的最佳方法是通过 load-balancer。
- 创建一个load-balancer,有一个后端池,多个front-end IP配置(public-IP各一个),多个LB规则(public-IP各一个:443 -> 后端池:)。
- 将所有带有 NIC 的虚拟机配置为后端池的一部分。一张网卡就够了,不需要multi-NIC。
请注意,您可以 create a load-balancer through Powershell, Azure CLI or ARM templates。目前,门户网站支持不可用。
另请参阅此 sample template with multiple public IPs on a load-balancer。
在powershell中实现的相关命令(来自上面Azure官方文档link):
# 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
如果您已经设置了负载均衡器,您可以使用以下 powershell 添加 public 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
我正在使用 azure 的新资源管理器设置和几个虚拟机,我正在尝试找到将多个 IP 关联到单个虚拟机的最佳方法。
我阅读了几篇不同的文章,ILPIP(实例级别 public IP)、负载平衡池和多个 NIC。
我不确定最佳选择。我的 VM 已经设置和配置好,所以我不想再次经历加载新 VM 以启用某些功能的过程(有人提到多个 NIC 仅在新 VM 上可用)。
我查看了负载平衡解决方案,但它似乎在新的管理门户中缺失。您可以查看您的负载均衡器,但不能添加新负载均衡器(如果它们仍然可用)。
我需要每个 VM 的多个 IP,因为我们有一些站点具有 SSL,由于旧的浏览器限制,这些站点无法通过 SNI 提供服务。
我很困惑,因为大多数文章都提到了旧的设置,而不是资源管理器方法。
如果有人有可靠的方法来执行此操作,我将不胜感激。
在 ARM(Azure 资源管理器)模型中,实现具有不同 public IP 的多个 SSL 站点的最佳方法是通过 load-balancer。
- 创建一个load-balancer,有一个后端池,多个front-end IP配置(public-IP各一个),多个LB规则(public-IP各一个:443 -> 后端池:)。
- 将所有带有 NIC 的虚拟机配置为后端池的一部分。一张网卡就够了,不需要multi-NIC。
请注意,您可以 create a load-balancer through Powershell, Azure CLI or ARM templates。目前,门户网站支持不可用。
另请参阅此 sample template with multiple public IPs on a load-balancer。
在powershell中实现的相关命令(来自上面Azure官方文档link):
# 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
如果您已经设置了负载均衡器,您可以使用以下 powershell 添加 public 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