配置 Azure 内部负载均衡器

配置 Azure 内部负载均衡器

我正在尝试使用 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 尚不支持这一点。

有人对此有什么见解或想法吗?我知道我即将实现这一点。

使用说明:
内部负载平衡公告
区域虚拟网络
错误请求故障排除
在 Azure 中设置 DNS

答案1

查看文档添加 AzureEndpoint我认为你错过了-ProbePath

如果 ProbeProtocol 设置为“http”,则为必填项。否则,请忽略。指定将探测其健康状况的 URI。

由于您使用的是 http,所以我认为它是必需的。

相关内容