Настройка внутреннего балансировщика нагрузки Azure
Я пытаюсь настроить VNET с помощью новой функции внутренней балансировки нагрузки в Azure. Я планирую иметь 2 внешних сервера, взаимодействующих с 2 внутренними серверами через ILB (Internal Load Balancer).
Я считаю, что правильно выполнил все инструкции, но машины в моей сети все еще не могут обмениваться данными с использованием ILB.
Что я сделал:
Я настроил региональную виртуальную сеть с 2 подсетями, Subnet-1 и Subnet-2, загрузив следующий файл конфигурации, так как региональные VNET еще не доступны через пользовательский интерфейс.
Конфигурация сети:
<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 виртуальные машины в двух облачных сервисах и добавил их в свою виртуальную сеть с помощью следующего 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 -Расположение "Западная часть США" -VNetName "my-net" New-AzureVM -ServiceName "my-net-backend" -VMs $backend2 -Расположение "Западная часть США" New-AzureVM -ServiceName "my-net-frontend" -VMs $frontend1 -Расположение "Западная часть США" -VNetName "my-net" New-AzureVM -ServiceName "my-net-frontend" -VMs $frontend2 -Расположение "Запад США"
Я переместился на каждую виртуальную машину и настроил 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. После перенастройки 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
1 ответ
Глядя на документацию по Add-AzureEndpoint, я думаю, что вам не хватает -ProbePath
Требуется, если для ProbeProtocol установлено значение "http". Пропустить иначе. Указывает URI, состояние которого будет проверяться.
Поскольку вы используете http, я бы предположил, что это будет необходимо.