Domain-Name-System

配置 Azure 內部負載均衡器

  • June 6, 2014

我正在嘗試使用 Azure 中的新內部負載平衡功能配置 VNET。我計劃讓 2 台前端伺服器通過 ILB(內部負載均衡器)與 2 台後端伺服器通信。

我相信我已正確遵循所有說明,但我網路中的機器似乎仍然無法使用 ILB 進行通信。

我做了什麼:

我通過上傳以下配置文件設置了具有 2 個子網 Subnet-1 和 Subnet-2 的區域虛擬網路,因為區域 VNET 尚無法通過 UI 使用。

網路配置:

<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 個 VM,並使用以下 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 = "後端子網"
$frontendSubnet = "前端子網"
$adminname = "SomeAdmin"
$adminpw = "密碼"
$backend1 = New-AzureVMConfig -Name $vmname1 -InstanceSize Small -ImageName $imgname | 添加-AzureProvisioningConfig -Windows -AdminUsername $adminname -Password $adminpw | 設置 AzureSubnet $backendSubnet
$backend2 = New-AzureVMConfig -Name $vmname2 -InstanceSize Small -ImageName $imgname | 添加-AzureProvisioningConfig -Windows -AdminUsername $adminname -Password $adminpw | 設置 AzureSubnet $backendSubnet
$frontend1 = New-AzureVMConfig -Name $vmname3 -InstanceSize Small -ImageName $imgname | 添加-AzureProvisioningConfig -Windows -AdminUsername $adminname -Password $adminpw | 設置 AzureSubnet $frontendSubnet
$frontend2 = New-AzureVMConfig -Name $vmname4 -InstanceSize Small -ImageName $imgname | 添加-AzureProvisioningConfig -Windows -AdminUsername $adminname -Password $adminpw | 設置 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"

我遠端連接到每個虛擬機並在埠 80 上配置 IIS,並使用一個簡單的 HTML 頁面進行測試並驗證它在本地工作、匿名訪問等。

然後我使用以下 powershell 在 VNET 中創建了一個 DNS 伺服器:

$dnsname = "我的DNS"
$dnsconfig = New-AzureVMConfig -Name $dnsname -InstanceSize Small -ImageName $imgname | 添加-AzureProvisioningConfig -Windows -AdminUsername $adminname -Password $adminpw | 設置 AzureSubnet $frontendSubnet

VM 準備就緒後,我在 Windows 2012 R2 中將我的伺服器配置為 DNS 伺服器,並添加了一個帶有簡單後綴“mytest.net”的正向查找區域

然後在 Azure 管理 UI 中,我將此 DNS 伺服器添加到我的 VNET。重新配置 VNET 後,我重新啟動了所有虛擬機。

一旦我的虛擬機重新上線,我就遠端連接到我的 DNS 伺服器並為“test.mytest.net”創建了一個 A-Record

之後,我遠端連接到每個子網中的 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" | 更新-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" | 更新-AzureVM

據我了解,我剛剛創建了一個名為 MyILB 的 ILB,其靜態 IP 為 192.168.10.30,然後在後端的每個 VM 上,我為 HTTP 埠 80 創建了一個端點,並將該機器添加到 ILB。此時,我假設發往 192.168.10.30 的 HTTP 埠 80 流量將在我的 Backend1 和 Backend2 虛擬機之間進行負載平衡。但是,這似乎沒有按我的預期工作。

我連接到 DNS 伺服器並為 192.168.10.30 創建了一個名為 backend.mytest.net 的 A-Record,並驗證該名稱可以在所有伺服器上解析。

當我遠端訪問前端伺服器並在瀏覽器中使用 DNS 名稱 backend.mytest.net 或 192.168.10.30 時,我會失敗。

我還驗證了在兩個後端伺服器上,所有區域(域、公共和私有)的防火牆都允許 HTTP 80 入站。

管理 UI 沒有在 VM 上顯示這些端點,但我懷疑這是因為它們是通過 powershell 命令創建的,而 UI 還不支持這一點。

有人在這裡有任何見解或想法嗎?我知道我正處於讓它發揮作用的邊緣。

使用說明:

內部負載平衡公告

區域虛擬網路

錯誤請求故障排除

在 Azure 中設置 DNS

查看Add-AzureEndpoint的文件,我認為您缺少 -ProbePath

如果 ProbeProtocol 設置為“http”,則為必需。否則省略。指定將探測其執行狀況的 URI。

由於您使用的是 http,因此我認為它是必需的。

引用自:https://serverfault.com/questions/601076