練習 - 設定公用負載平衡器
您可以使用 Azure 入口網站、PowerShell 或 Azure CLI 來設定 Azure Load Balancer。
在您的醫療保健組織中,您想要根據患者入口網站 Web 伺服器健康情況來平衡用戶端流量的負載以提供一致回應。 您在可用性設定組中有兩部虛擬機器,作為醫療保健入口網站 Web 應用程式。
在此,您將建立負載平衡器資源,並使用其將負載分散到這兩部 VM 上。
部署患者入口網站 Web 應用程式
首先,將患者入口網站應用程式部署到單一可用性設定組中的兩部虛擬機器。 為節省時間,讓我們從執行指令碼來建立此應用程式開始。 此指令碼會:
- 建立 VM 的虛擬網路和網路基礎結構。
- 在虛擬網路中建立兩個 VM。
部署患者入口網站 Web 應用程式:
在 Azure Cloud Shell 中執行下列
git clone
命令。 該命令會複製包含應用程式來源的存放庫,以及執行來自 GitHub 的指令碼。 接著,您將變更至所複製存放庫的目錄。git clone https://github.com/MicrosoftDocs/mslearn-improve-app-scalability-resiliency-with-load-balancer.git cd mslearn-improve-app-scalability-resiliency-with-load-balancer
顧名思義,此指令碼會在單一可用性設定組中產生兩部 VM。 執行指令碼約需兩分鐘。
bash create-high-availability-vm-with-sets.sh <rgn>[sandbox resource group name]</rgn>
當指令碼完成時,請在 Azure 入口網站功能表上,或從 [首頁] 頁面,選取 [資源群組],然後選取
[沙箱資源群組名稱] 資源群組。 檢閱此指令碼建立的資源。
建立負載平衡器
現在,讓我們開始建立負載平衡器。
在 Azure 入口網站功能表上,或從 [首頁] 頁面,選取位於 [Azure 服務] 下方的 [建立資源]。 [建立資源] 窗格隨即出現。
在 [搜尋服務和 Marketplace] 搜尋方塊中,輸入 Load Balancer,然後按 Enter。
從產生的清單中,選取 [Load Balancer - Microsoft]。 然後,選取 [建立]。
在 [基本] 索引標籤上,為每個設定輸入下列值:
設定 值 [專案詳細資料] 訂用帳戶 指引 資源群組 [沙箱資源群組名稱] 執行個體詳細資料 名稱 輸入唯一名稱。 例如,Pub-LB-PatientsPortal。 區域 選取建立 VM 的位置。 SKU 基本 類型 公開 層 Regional
新增前端 IP 設定
選取 [下一步: 前端 IP 設定]。
選取 [+ 新增前端 IP 設定]。 [新增前端 IP 設定] 窗格隨即出現。
為每個設定輸入下列值。
設定 值 名稱 輸入前端 IP 設定的唯一名稱。 IP 版本 IPv4 公用 IP 位址 選取 [建立新的] 連結。 在出現的 [新增公用 IP 位址] 對話方塊中,輸入每個設定的下列值。
設定 值 名稱 輸入公用 IP 位址的唯一名稱。 例如,Pub-LB-PatientsPortal-IP。 SKU 先前設定為 [基本]。 階層 先前設定為 [區域]。 指派 選取 [靜態] 若要關閉對話方塊,請選取 [確定]。 [新增前端 IP 設定] 窗格再次出現。 選取 [新增]。 [建立負載平衡器] 窗格隨即出現。
新增後端集區
選取 [下一步: 後端集區]。
選取 [+ 新增後端集區]。 [新增後端集區] 窗格隨即顯示。
為每個設定輸入下列值。
設定 值 名稱 為後端集區輸入唯一的名稱。 例如,bepool-http。 虛擬網路 在下拉式方塊中,選取 [bePortalVnet ( [沙箱資源群組名稱] )]選取 [新增]。 [Add IP configurations to backend pool] (將 IP 設定新增至後端集區) 窗格隨即出現。
在 [虛擬機器] 下,選取 [webVM1] 和 [webVM2] 虛擬機器,然後選取 [新增]。
[新增後端集區] 畫面再次出現。 在 [IP 設定] 下,選取 [webVM1] 和 [webVM2] 虛擬機器,然後選取 [儲存]。 [建立負載平衡器] 畫面再次出現。
新增負載平衡規則
最後,讓我們建立負載平衡器的規則。
選取 [下一步: 輸入規則]。
在 [負載平衡規則] 區段中,選取 [+ 新增負載平衡規則]。 [新增負載平衡規則] 窗格隨即顯示。
為每個設定輸入下列值。
設定 值 名稱 負載平衡規則的名稱。 例如,lbrule-http。 IP 版本 IPv4 前端 IP 位址 選取您稍早命名的前端 IP 位址。 其會標示為 (to be created)。 後端集區 選取您稍早命名的後端集區。 例如,bepool-http。 通訊協定 TCP 連接埠 輸入 80 (預設值)。 後端連接埠 輸入 80 (預設值)。 健康狀態探查 選取 [建立新的] 連結。 [新增健康狀態探查] 對話方塊隨即出現。 為每個設定輸入下列值。
設定 值 名稱 健康情況探查的名稱。 例如,healthprobe-http。 通訊協定 TCP 連接埠 輸入 80 (預設值)。 間隔 輸入 5 (預設值)。 這個值是探查之間的時間量。 選取 [確定] 關閉對話方塊。 [新增負載平衡規則] 窗格再次出現。
繼續為每個設定輸入下列值。
設定 值 工作階段持續性* 「無」(預設值) 閒置逾時 (分鐘) 選取 [4] (預設值)。 此值是在不依賴用戶端傳送保持連線訊息的情況下,讓 TCP 或 HTTP 連線保持開啟的時間。 浮動 IP [已停用] (預設值)。 選取 [新增] 以完成負載平衡規則設定。
[建立負載平衡器] 畫面再次出現。 選取 [檢閱 + 建立]。
通過驗證後,選取 [建立]。 完成時,選取 [前往資源]。
在 [概觀] 頁面上,複製並儲存 [公用 IP 位址]。 您可能必須選取 [查看更多項目...],才能檢視公用 IP 位址。
建立 IP 位址
首先,我們需要負載平衡器的公用 IP 位址。
在 Cloud Shell 中,執行此命令來啟動 PowerShell。
pwsh
在 PowerShell 中,建立新的公用 IP 位址。
$Location = $(Get-AzureRmResourceGroup -ResourceGroupName <rgn>[sandbox resource group name]</rgn>).Location $publicIP = New-AzPublicIpAddress ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Location $Location ` -AllocationMethod "Static" ` -Name "myPublicIP"
使用 New-AzLoadBalancerFrontendIpConfig Cmdlet 建立前端 IP。 下列範例會建立名為 myFrontEnd 的前端 IP 設定,並附加 myPublicIP 位址。
$frontendIP = New-AzLoadBalancerFrontendIpConfig ` -Name "myFrontEnd" ` -PublicIpAddress $publicIP
建立負載平衡器
當您使用 PowerShell 設定負載平衡器時,必須先建立後端位址集區、健康狀態探查和規則,再建立平衡器本身。
執行 New-AzLoadBalancerBackendAddressPoolConfig Cmdlet 來建立後端位址集區。 您會在最後的步驟中,將 VM 連結到此後端集區。 下列範例會建立名為 myBackEndPool 的後端位址集區。
$backendPool = New-AzLoadBalancerBackendAddressPoolConfig -Name "myBackEndPool"
若要讓負載平衡器監視醫療保健入口網站的狀態,請建立健康狀態探查。 健康狀態探查會根據 VM 對健康情況檢查的回應,從負載平衡器輪替中動態新增或移除 VM。
$probe = New-AzLoadBalancerProbeConfig ` -Name "myHealthProbe" ` -Protocol http ` -Port 80 ` -IntervalInSeconds 5 ` -ProbeCount 2 ` -RequestPath "/"
您現在需要負載平衡器規則,用來定義如何將流量分散至 VM。 您要定義連入流量的前端 IP 設定和接收流量的後端 IP 集區,以及所需的來源和目的地連接埠。 若要確定只有狀況良好的 VM 可接收流量,您也可定義要使用的健康狀態探查。
$lbrule = New-AzLoadBalancerRuleConfig ` -Name "myLoadBalancerRule" ` -FrontendIpConfiguration $frontendIP ` -BackendAddressPool $backendPool ` -Protocol Tcp ` -FrontendPort 80 ` -BackendPort 80 ` -Probe $probe
現在,您可以執行 New-AzLoadBalancer Cmdlet 來建立基本負載平衡器。
$lb = New-AzLoadBalancer ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Name 'MyLoadBalancer' ` -Location $Location ` -FrontendIpConfiguration $frontendIP ` -BackendAddressPool $backendPool ` -Probe $probe ` -LoadBalancingRule $lbrule
更新指令碼所建立的網路介面,將 VM 連線到後端集區,以使用後端集區資訊。
$nic1 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "webNic1" $nic2 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "webNic2" $nic1.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool $nic2.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool Set-AzNetworkInterface -NetworkInterface $nic1 -AsJob Set-AzNetworkInterface -NetworkInterface $nic2 -AsJob
執行下列命令,取得負載平衡器公用 IP 位址和您網站的 URL。
Write-Host http://$($(Get-AzPublicIPAddress ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -Name "myPublicIP").IpAddress)
建立負載平衡器
讓我們使用 Azure CLI 建立負載平衡器及其相關聯的資源。
建立新的公用 IP 位址。
az network public-ip create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --allocation-method Static \ --name myPublicIP
建立負載平衡器。
az network lb create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --name myLoadBalancer \ --public-ip-address myPublicIP \ --frontend-ip-name myFrontEndPool \ --backend-pool-name myBackEndPool
若要讓負載平衡器監視醫療保健入口網站的狀態,請建立健康狀態探查。 健康狀態探查會根據 VM 對健康情況檢查的回應,從負載平衡器輪替中動態新增或移除 VM。
az network lb probe create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --lb-name myLoadBalancer \ --name myHealthProbe \ --protocol tcp \ --port 80
現在,您需要負載平衡器規則,用來定義如何將流量分散至 VM。 您要定義連入流量的前端 IP 設定和接收流量的後端 IP 集區,以及所需的來源和目的地連接埠。 若要確定只有狀況良好的 VM 可接收流量,您也可定義要使用的健康狀態探查。
az network lb rule create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --lb-name myLoadBalancer \ --name myHTTPRule \ --protocol tcp \ --frontend-port 80 \ --backend-port 80 \ --frontend-ip-name myFrontEndPool \ --backend-pool-name myBackEndPool \ --probe-name myHealthProbe
更新您在指令碼中建立的網路介面,將 VM 連線到後端集區,以使用後端集區資訊。
az network nic ip-config update \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --nic-name webNic1 \ --name ipconfig1 \ --lb-name myLoadBalancer \ --lb-address-pools myBackEndPool az network nic ip-config update \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --nic-name webNic2 \ --name ipconfig1 \ --lb-name myLoadBalancer \ --lb-address-pools myBackEndPool
執行下列命令,取得負載平衡器公用 IP 位址和您網站的 URL。
echo http://$(az network public-ip show \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --name myPublicIP \ --query ipAddress \ --output tsv)
測試負載平衡器設定
讓我們測試負載平衡器設定,看其如何動態處理可用性和健康情況問題。
在新瀏覽器索引標籤中,移至您記下的公用 IP 位址。 您會看到其中一部 VM 傳回回應。
按幾次 Ctrl+F5 來「強制重新整理」,以看到隨機由兩部 VM 傳回的回應。
在 Azure 入口網站功能表上,或從 [首頁] 頁面,選取 [所有資源]。 然後選取 [webVM1],再選取 [停止]。
返回顯示網站的索引標籤,然後強制重新整理網頁。 所有要求都會從 [webVM2] 傳回。