Я пытаюсь настроить виртуальную сеть с помощью новой функции внутренней балансировки нагрузки в Azure. Я планирую иметь 2 внешних сервера, взаимодействующих с 2 внутренними серверами через ILB (Internal Load Balancer).
Я считаю, что правильно выполнил все инструкции, но машины в моей сети все еще не могут обмениваться данными с помощью ILB.
Что я наделал:
Я настроил региональную виртуальную сеть с 2 подсетями, Subnet-1 и Subnet-2, загрузив следующий файл конфигурации, поскольку региональные виртуальные сети еще не доступны через пользовательский интерфейс.
Конфигурация сети:
<NetworkConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/ServiceHosting/2011/07/NetworkConfiguration">
<VirtualNetworkConfiguration>
<VirtualNetworkSites>
<VirtualNetworkSite name="my-net" Location="West US">
<AddressSpace>
<AddressPrefix>192.168.10.0/24</AddressPrefix>
</AddressSpace>
<Subnets>
<Subnet name="BackendSubnet">
<AddressPrefix>192.168.10.0/27</AddressPrefix>
</Subnet>
<Subnet name="FrontendSubnet">
<AddressPrefix>192.168.10.32/27</AddressPrefix>
</Subnet>
<Subnet name="GatewaySubnet">
<AddressPrefix>192.168.10.64/29</AddressPrefix>
</Subnet>
</Subnets>
</VirtualNetworkSite>
</VirtualNetworkSites>
</VirtualNetworkConfiguration>
</NetworkConfiguration>
Я создал 2 виртуальные машины в 2 облачных службах и добавил их в свою виртуальную сеть с помощью следующей оболочки PowerShell.
$imgname = "ad072bd3082149369c449ba5832401ae__Windows-Server-Remote-Desktop-Session-Host-on-Windows-Server-2012-R2-20140403-2126" $vmname1 = "Backend1" $vmname2 = "Backend2" $vmname3 = "Frontend1" $vmname4 = "Frontend2" $backendSubnet = "BackendSubnet" $frontendSubnet = "FrontendSubnet" $adminname = "SomeAdmin" $adminpw = "SomePassword" $backend1 = New-AzureVMConfig -Name $vmname1 -InstanceSize Small -ImageName $imgname | Add-AzureProvisioningConfig -Windows -AdminUsername $adminname -Password $adminpw | Set-AzureSubnet $backendSubnet $backend2 = New-AzureVMConfig -Name $vmname2 -InstanceSize Small -ImageName $imgname | Add-AzureProvisioningConfig -Windows -AdminUsername $adminname -Password $adminpw | Set-AzureSubnet $backendSubnet $frontend1 = New-AzureVMConfig -Name $vmname3 -InstanceSize Small -ImageName $imgname | Add-AzureProvisioningConfig -Windows -AdminUsername $adminname -Password $adminpw | Set-AzureSubnet $frontendSubnet $frontend2 = New-AzureVMConfig -Name $vmname4 -InstanceSize Small -ImageName $imgname | Add-AzureProvisioningConfig -Windows -AdminUsername $adminname -Password $adminpw | Set-AzureSubnet $frontendSubnet New-AzureVM -ServiceName "my-net-backend" -VMs $backend1 -Location "West US" -VNetName "my-net" New-AzureVM -ServiceName "my-net-backend" -VMs $backend2 -Location "West US" New-AzureVM -ServiceName "my-net-frontend" -VMs $frontend1 -Location "West US" -VNetName "my-net" New-AzureVM -ServiceName "my-net-frontend" -VMs $frontend2 -Location "West US"
Я удаленно подключился к каждой виртуальной машине и настроил IIS на порту 80 с простой HTML-страницей для тестирования и проверки ее работы локально, анонимного доступа и т. Д.
Затем я создал DNS-сервер в VNET со следующей оболочкой PowerShell:
$dnsname = "MyDNS" $dnsconfig = New-AzureVMConfig -Name $dnsname -InstanceSize Small -ImageName $imgname | Add-AzureProvisioningConfig -Windows -AdminUsername $adminname -Password $adminpw | Set-AzureSubnet $frontendSubnet
После того, как виртуальная машина была готова, я настроил свой сервер в качестве DNS-сервера в Windows 2012 R2 и добавил зону прямого просмотра с простым суффиксом «mytest.net».
Затем в пользовательском интерфейсе управления Azure я добавил этот DNS-сервер в свою виртуальную сеть. После перенастройки VNET я перезагрузил все свои виртуальные машины.
Как только мои виртуальные машины снова подключились к сети, я подключился к своему DNS-серверу и создал A-запись для "test.mytest.net"
После этого я удалился на 1 сервер в каждой подсети и убедился, что NSLOOKUP для "test.mytest.net" разрешен правильно.
В этот момент все, казалось, шло гладко.
Наконец, я начал настраивать новый внутренний балансировщик нагрузки Azure с помощью Powershell следующим образом:
Add-AzureInternalLoadBalancer -InternalLoadBalancerName "MyILB" -SubnetName "BackendSubnet" -ServiceName "my-net-backend" -StaticVNetIPAddress "192.168.10.30" Get-AzureVM -ServiceName "my-net-backend" -Name $backend1 | Add-AzureEndpoint -Name "backend-ep" -LBSetName "backend-ep-set" -Protocol tcp -LocalPort 80 -PublicPort 80 -ProbePort 80 -ProbeProtocol http -ProbeIntervalInSeconds 10 -InternalLoadBalancerName "MyILB" | Update-AzureVM Get-AzureVM -ServiceName "my-net-backend" -Name $backend2 | Add-AzureEndpoint -Name "backend-ep" -LBSetName "backend-ep-set" -Protocol tcp -LocalPort 80 -PublicPort 80 -ProbePort 80 -ProbeProtocol http -ProbeIntervalInSeconds 10 -InternalLoadBalancerName "MyILB" | Update-AzureVM
Насколько я понимаю, я только что создал ILB с именем MyILB со статическим IP-адресом 192.168.10.30, затем на каждой виртуальной машине в моем бэкэнде я создал конечную точку для HTTP-порта 80 и добавил эту машину в ILB. На этом этапе я бы предположил, что трафик HTTP-порта 80, адресованный 192.168.10.30, будет сбалансирован по нагрузке между моими виртуальными машинами Backend1 и Backend2. Однако, похоже, это не сработало, как я ожидал.
Я подключился к DNS-серверу и создал A-запись для 192.168.10.30 с именем backend.mytest.net и убедился, что это имя может быть разрешено на всех серверах.
Когда я удален на внешний сервер и использую в браузере DNS-имя backend.mytest.net или 192.168.10.30, я получаю сбой.
Я также проверил, что на обоих внутренних серверах входящий HTTP 80 разрешен в брандмауэре для всех регионов (доменных, общедоступных и частных).
Пользовательский интерфейс управления не отображает эти конечные точки на виртуальных машинах, но я подозреваю, что это связано с тем, что они создаются с помощью команд PowerShell, а пользовательский интерфейс еще не поддерживает это.
У кого-нибудь есть идеи или мысли здесь? Я знаю, что нахожусь на грани того, чтобы это заработало.
Используемые инструкции:
Объявление о внутренней балансировке нагрузки
Региональные виртуальные сети
Устранение неполадок с неверным запросом
Настройка DNS в Azure
Глядя на документацию для Добавить-AzureEndpoint Я думаю, вам не хватает -ProbePath
Требуется, если для ProbeProtocol установлено значение «http». В противном случае пропустите. Задает URI, работоспособность которого будет проверяться.
Поскольку вы используете http, я предполагаю, что он потребуется.