我正尝试使用Azure中的新内部负载平衡function来configurationVNET。 我打算让2个前端服务器通过ILB(内部负载均衡器)与2个后端服务器进行通信。
我相信我已经正确地遵循了所有的说明,但是我的networking中的机器仍然不能使用ILB进行通信。
我做了什么:
通过上传下面的configuration文件,我已经build立了一个带有2个子网(Subnet-1和Subnet-2)的区域虚拟networking,因为区域VNET不能通过UI访问。
networkingconfiguration:
<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个云服务中创build了2个虚拟机,并使用下面的PowerShell将它们添加到我的VNet中。
$ 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 - 名称$ vmname1 -InstanceSize小-ImageName $ imgname | Add-AzureProvisioningConfig -Windows -AdminUsername $ adminname -Password $ adminpw | Set-AzureSubnet $ backendSubnet $ backend2 = New-AzureVMConfig - 名称$ vmname2 -InstanceSize小-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 - 名称$ vmname4 -InstanceSize小-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”
我远程访问了每个虚拟机,并在一个简单的HTML页面上configuration了端口80上的IIS,以便testing和validation它在本地工作,匿名访问等。
然后,我使用下面的PowerShell在VNET中创build了一个DNS服务器:
$ dnsname =“MyDNS” $ dnsconfig = New-AzureVMConfig -Name $ dnsname -InstanceSize Small -ImageName $ imgname | Add-AzureProvisioningConfig -Windows -AdminUsername $ adminname -Password $ adminpw | Set-AzureSubnet $ frontendSubnet
VM准备就绪后,我将服务器configuration为Windows 2012 R2中的DNS服务器,并添加了一个简单的后缀“mytest.net”的正向查找区域。
然后在Azurepipe理界面中,我添加了这个DNS服务器到我的VNET。 VNET重新configuration后,我重新启动了所有的虚拟机。
一旦我的虚拟机重新联机,我远程访问了我的DNS服务器并为“test.mytest.net”创build了一个A-logging
之后,我远程访问了每个子网中的1台服务器,并确保正确parsing了“test.mytest.net”的NSLOOKUP。
在这一点上,一切似乎都顺利进行。
最后,我开始使用Powershellconfiguration新的Azure内部负载均衡器,如下所示:
Add-AzureInternalLoadBalancer -InternalLoadBalancerName“MyILB”-SubnetName“BackendSubnet”-ServiceName“my-net-backend”-StaticVNetIPAddress“192.168.10.30” Get-AzureVM -ServiceName“my-net-backend” - 名称$ backend1 | Add-AzureEndpoint -Name“backend-ep”-LBSetName“backend-ep-set”-Protocol tcp -LocalPort 80 -PublicPort 80 -ProbePort 80 -ProbeProtocol http -ProbeIntervalInSeconds 10 -InternalLoadBalancerName“MyILB”| 更新AzureVM Get-AzureVM -ServiceName“my-net-backend” - 名称$ backend2 | Add-AzureEndpoint -Name“backend-ep”-LBSetName“backend-ep-set”-Protocol tcp -LocalPort 80 -PublicPort 80 -ProbePort 80 -ProbeProtocol http -ProbeIntervalInSeconds 10 -InternalLoadBalancerName“MyILB”| 更新AzureVM
根据我的理解,我创build了一个名为MyILB的ILB,其静态IP为192.168.10.30,然后在后端的每个虚拟机上为HTTP端口80创build一个端点,并将该机器添加到ILB。 在这一点上,我会假设HTTP端口80stream量到192.168.10.30将在我的Backend1和Backend2虚拟机之间进行负载平衡。 但是,这似乎并不像我预期的那样工作。
我连接到DNS服务器,并创build了一个名为backend.mytest.net的192.168.10.30的A-Record,并validation了这个名字可以在所有服务器上parsing。
当我远程访问前端服务器,并在浏览器中使用DNS名称backend.mytest.net或192.168.10.30时,我失败了。
我也证实,在后端服务器上,所有区域(域,公共和私有)都允许在防火墙中使用HTTP 80入站。
pipe理用户界面不会在虚拟机上显示这些端点,但我怀疑这是因为它们是通过powershell命令创build的,用户界面不支持。
任何人有任何见解或想法吗? 我知道我正在使这个工作的边缘。
使用说明:
内部负载平衡通知
区域虚拟networking
坏请求疑难解答
在Azure中设置DNS
看看Add-AzureEndpoint的文档,我认为你错过了-ProbePath
如果ProbeProtocol设置为“http”,则是必需的。 否则省略。 指定将要探测其健康状况的URI。
既然你使用的是http,我会认为它是必需的。