0

Я использую новую настройку Resource Manager azure с несколькими виртуальными машинами, и я пытаюсь найти лучший способ связать несколько IP-адресов с одной виртуальной машиной.Несколько публичных IP-адресов для Azure VM

Я читал несколько разных статей, ILPIP (общедоступный IP-адрес уровня), Load Balanced pool и несколько сетевых адаптеров.

Я не уверен в лучших вариантах. Мои виртуальные машины уже настроены и настроены, поэтому я не хочу снова проходить этот процесс загрузки новой виртуальной машины, чтобы включить некоторые функции (некоторые упоминают, что несколько сетевых адаптеров доступны только на новых виртуальных машинах).

Я просмотрел решение Load Balanced, но, похоже, отсутствует на новом портале управления. Вы можете просмотреть балансировщики нагрузки, но вы не можете добавлять новые (если они все еще доступны).

Мне нужно несколько IP-адресов для каждой виртуальной машины, так как у нас есть сайты, на которых есть SSL, которые нельзя обслуживать по SNI из-за более старых ограничений браузера.

Я в затруднении, так как большинство статей относятся к более старым настройкам, а не к методу диспетчера ресурсов.

Если у кого есть солидный способ выполнения этого, я был бы признателен за любую помощь.

ответ

2

В модели ARM (Azure Resource Manager) наилучшим способом достижения нескольких сайтов SSL с различными публичными IP-адресами является балансировка нагрузки.

  • Создание балансировки нагрузки, с одной backendpool, несколько IP-конфигурации интерфейсных (по одному для публичного IP-адрес), несколько правил LB (по одному для публичного IP-: 443 -> backendpool :).
  • Настройте все свои виртуальные машины с помощью своей сетевой платы, чтобы быть частью бэкэндпула. Один сетевой адаптер достаточен, для этого не нужен мульти-сетевой адаптер.

Обратите внимание, что вы можете 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 
0

Если вы уже настроили балансировки нагрузки вы можете добавить 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