我正在尝试使用 Azure 中的新内部负载平衡功能配置 VNET。我计划让 2 个前端服务器通过 ILB(内部负载平衡器)与 2 个后端服务器进行通信。
我相信我已经正确遵循了所有说明,但我的网络中的机器似乎仍然无法使用 ILB 进行通信。
我做了什么:
由于区域 VNET 尚未通过 UI 提供,因此我通过上传以下配置文件设置了一个具有 2 个子网(子网 1 和子网 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 将它们添加到我的 VNet。
$imgname =“ad072bd3082149369c449ba5832401ae__Windows-Server-Remote-Desktop-Session-Host-on-Windows-Server-2012-R2-20140403-2126” $vmname1 =“后端1” $vmname2 = “后端2” $vmname3 =“前端1” $vmname4 = “前端2” $backendSubnet =“BackendSubnet” $frontendSubnet = "前端子网" $adminname =“SomeAdmin” $adminpw = “某个密码” $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“美国西部”-VNetName“my-net” New-AzureVM -ServiceName“my-net-backend”-VMs $backend2 -Location“美国西部” New-AzureVM -ServiceName“my-net-frontend”-VMs $frontend1 -Location“美国西部”-VNetName“my-net” New-AzureVM -ServiceName“my-net-frontend”-VMs $frontend2 -Location“美国西部”
我远程控制每个 VM,并在端口 80 上配置 IIS,使用一个简单的 HTML 页面进行测试,并验证它是否可以在本地运行、匿名访问等。
然后我使用以下 powershell 在 VNET 中创建了一个 DNS 服务器:
$dnsname = "我的DNS" $ dnsconfig = New-AzureVMConfig -Name $ dnsname -InstanceSize Small -ImageName $ imgname | Add-AzureProvisioningConfig -Windows -AdminUsername $ adminname -Password $ adminpw | Set-AzureSubnet $ frontendSubnet
虚拟机准备就绪后,我将服务器配置为 Windows 2012 R2 中的 DNS 服务器,并添加了一个带有简单后缀“mytest.net”的正向查找区域
然后在 Azure 管理 UI 中,我将此 DNS 服务器添加到我的 VNET。重新配置 VNET 后,我重新启动了所有虚拟机。
一旦我的虚拟机恢复在线,我就远程连接到我的 DNS 服务器并为“test.mytest.net”创建了一条 A 记录
之后,我远程控制每个子网中的 1 台服务器,并确保“test.mytest.net”的 NSLOOKUP 正确解析。
到目前为止,一切似乎都进展顺利。
最后,我开始使用 Powershell 配置新的 Azure 内部负载均衡器,如下所示:
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
据我所知,我刚刚创建了一个名为 MyILB 的 ILB,其静态 IP 为 192.168.10.30,然后在后端的每个虚拟机上,我为 HTTP 端口 80 创建了一个端点,并将该机器添加到 ILB。此时,我假设发往 192.168.10.30 的 HTTP 端口 80 流量将在我的 Backend1 和 Backend2 虚拟机之间进行负载平衡。然而,这似乎并没有像我预期的那样工作。
我连接到 DNS 服务器并为 192.168.10.30 创建了一个名为 backend.mytest.net 的 A 记录,并验证该名称可以在所有服务器上解析。
当我远程访问前端服务器并在浏览器中使用 DNS 名称 backend.mytest.net 或 192.168.10.30 时出现失败。
我还验证了两个后端服务器的防火墙都允许所有区域(域、公共和私有)的 HTTP 80 入站。
管理 UI 没有在虚拟机上显示这些端点,但我怀疑这是因为它们是通过 powershell 命令创建的,而 UI 尚不支持这一点。
有人对此有什么见解或想法吗?我知道我即将实现这一点。
答案1
查看文档添加 AzureEndpoint我认为你错过了-ProbePath
如果 ProbeProtocol 设置为“http”,则为必填项。否则,请忽略。指定将探测其健康状况的 URI。
由于您使用的是 http,所以我认为它是必需的。