Olhando a documentação para Add-AzureEndpoint , acho que você está sem o -ProbePath
Required if ProbeProtocol is set to "http". Omit otherwise. Specifies the URI whose health will be probed.
Como você está usando http, presumo que seja necessário.
Eu estou tentando configurar uma VNET usando o novo recurso Internal Load Balancing no Azure. Eu planejo ter dois servidores frontend se comunicando com 2 servidores de backend em um ILB (Internal Load Balancer).
Acredito que segui todas as instruções corretamente, mas as máquinas da minha rede ainda não conseguem se comunicar usando o ILB.
O que eu fiz:
Eu configurei uma rede virtual regional com 2 sub-redes, Sub-rede 1 e Sub-rede 2, carregando o seguinte arquivo de configuração, já que as VNETs regionais ainda não estão disponíveis pela interface do usuário.
Configuração de rede:
<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>
Eu criei duas VMs em dois serviços de nuvem e as adicionei à minha rede virtual com o seguinte 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"
Eu fiz uma remotinha em cada VM e configurei o IIS na porta 80 com uma página HTML simples para testar e verificar se ele funciona localmente, acesso anônimo, etc.
Em seguida, criei um servidor DNS na VNET com o seguinte powershell:
$dnsname = "MyDNS" $dnsconfig = New-AzureVMConfig -Name $dnsname -InstanceSize Small -ImageName $imgname | Add-AzureProvisioningConfig -Windows -AdminUsername $adminname -Password $adminpw | Set-AzureSubnet $frontendSubnet
Após a VM estar pronta, configurei meu servidor como um servidor DNS no Windows 2012 R2 e adicionei uma zona de pesquisa direta com um simples sufixo "mytest.net"
Em seguida, na IU de gerenciamento do Azure, adicionei esse servidor DNS à minha VNET. Depois que o VNET foi reconfigurado, reiniciei todas as minhas VMs.
Depois que minhas VMs voltaram a ficar on-line, fiz um novo login no meu servidor DNS e criei um A-Record para "test.mytest.net"
Depois disso, eu remotquei para 1 servidor em cada sub-rede e assegurei que o NSLOOKUP para "test.mytest.net" fosse resolvido corretamente.
Tudo parecia estar indo bem neste momento.
Por fim, comecei a configurar o novo Azure Internal Load Balancer usando o Powershell da seguinte forma:
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
Do meu ponto de vista, acabei de criar um ILB chamado MyILB com um IP estático de 192.168.10.30 e, em seguida, em cada VM em meu back-end, criei um terminal para a porta HTTP 80 e adicionei essa máquina ao ILB. Neste ponto, eu diria que o tráfego da porta HTTP 80 endereçado para 192.168.10.30 seria balanceado de carga entre minhas VMs Backend1 e Backend2. No entanto, isso não parece funcionar como eu esperava.
Conectei-me ao servidor DNS e criei um registro A para 192.168.10.30 com o nome de backend.mytest.net e verifiquei que esse nome poderia ser resolvido em todos os servidores.
Quando eu for remoto para um servidor front-end e usar o nome DNS backend.mytest.net ou 192.168.10.30 no navegador, recebo uma falha.
Também verifiquei que, em ambos os servidores de backend, a entrada HTTP 80 é permitida no firewall para todas as regiões (domínio, público e privado).
A interface do usuário de gerenciamento não mostra esses endpoints nas VMs, mas suspeito que isso seja porque eles são criados por meio dos comandos do powershell e a interface do usuário ainda não suporta isso.
Alguém tem algum insight ou pensamentos aqui? Eu sei que estou no limite de fazer isso funcionar.
Instruções usadas: Anúncio de balanceamento de carga interno
Redes virtuais regionais
Bad Request Troubleshooting
Configurando o DNS no Azure
Olhando a documentação para Add-AzureEndpoint , acho que você está sem o -ProbePath
Required if ProbeProtocol is set to "http". Omit otherwise. Specifies the URI whose health will be probed.
Como você está usando http, presumo que seja necessário.