練習 - 設定公用負載平衡器

已完成

您可以使用 Azure 入口網站、PowerShell 或 Azure CLI 來設定 Azure Load Balancer。

在您的醫療保健組織中,您想要根據病患入口網站網路伺服器的健康情況來負載平衡用戶端流量,以提供一致回應。 您在可用性設定組中有兩部虛擬機器 (VM),作為醫療保健入口網站 Web 應用程式。

在此,您會建立負載平衡器資源,並使用它將負載分散到所有虛擬機器。

部署患者入口網站 Web 應用程式

首先,將病患入口網站應用程式部署到單一可用性設定組中的兩部虛擬機器。 為節省時間,讓我們從執行指令碼來建立此應用程式開始。 此指令碼會:

  • 建立虛擬機器的虛擬網路和網路基礎結構。
  • 在此虛擬網路中建立虛擬機器。

部署患者入口網站 Web 應用程式:

  1. 建立新的資源群組。 在步驟 3 中,請將 [沙箱資源群組名稱] 替換為您自己的資源群組名稱。

  2. 在 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
    
  3. 如其名所示,該指令碼會在單一可用性設定組中產生兩部虛擬機器。 這約需兩分鐘才能執行。

    bash create-high-availability-vm-with-sets.sh <rgn>[sandbox resource group name]</rgn>
    
  4. 當指令碼完成時,請在 Azure 入口網站功能表上,或從 [首頁] 頁面,選取 [資源群組],然後選取 [沙箱資源群組名稱] 資源群組。 檢閱此指令碼建立的資源。

建立負載平衡器

現在開始建立負載平衡器。

  1. Azure 入口網站功能表上,或從 [首頁] 頁面,選取位於 [Azure 服務] 下方的 [建立資源]。 [建立資源] 窗格隨即會顯示。

  2. 在 [搜尋服務和市集] 搜尋方塊中,輸入 Load Balancer,然後按 Enter 鍵

  3. 從產生的清單中,選取 Load Balancer-Microsoft。 然後,選取 [建立]

    Create a Load Balancer instance in the Azure portal.

  4. 在 [基本資料] 索引標籤上,為每個設定輸入下列值:

    設定
    專案詳細資料
    訂用帳戶 您的訂用帳戶
    資源群組 選取您的資源群組。 例如,learn-ts-loadbalancer-rg
    [執行個體詳細資料]
    名稱 輸入唯一名稱。 例如,Pub-LB-PatientsPortal
    區域 選取虛擬機器的建立位置。
    SKU 標準
    類型 公開
    Regional

    Screenshot that shows the Basics tab of the Create a Load Balancer screen in the Azure portal.

建立前端 IP 設定

  1. 選取 [下一步: 前端 IP 設定]

  2. 選取 [+ 新增前端 IP 設定]。 [新增前端 IP 設定] 窗格隨即出現。

  3. 針對每個設定輸入下列值。

    設定
    名稱 輸入前端 IP 設定的唯一名稱。 例如,myFrontendIP
    虛擬網路 選取 bePortalVnet
    子網路 選取 bePortalSubnet
    指派 選取 Dynamic

    Screenshot that shows the completed settings for the Add frontend IP configuration.

  4. 若要關閉對話方塊,請選取 [新增]。 [建立負載平衡器] 窗格隨即出現。

新增後端集區

  1. 選取 [下一步: 後端集區]

  2. 選取 [+新增後端集區]。 [新增後端集區] 窗格隨即顯示。

  3. 針對每個設定輸入下列值。

    設定
    名稱 輸入後端集區的唯一名稱。 例如,bepool-http
    虛擬網路 確認已選取 bePortalVnet
  4. [IP 設定]下,選取 [新增]。 [Add IP configurations to backend pool] (將 IP 設定新增至後端集區) 窗格隨即出現。

  5. 在 [虛擬機器] 下,選取 [webVM1] 和 [webVM2] 虛擬機器,然後選取 [新增]

    Screenshot that shows the settings on the Add IP configurations to backend pool pane.

  6. [新增後端集區] 畫面再次出現。 在 [IP 設定] 下,選取 [webVM1] 和 [webVM2] 虛擬機器,然後選取 [儲存]。 [建立負載平衡器] 畫面再次出現。

    Screenshot that shows the settings completed on the Add backend pool screen.

新增負載平衡規則

最後,讓我們建立負載平衡器的規則。

  1. 選取 [下一步: 輸入規則]

  2. 在 [負載平衡規則] 區段中,選取 [+ 新增負載平衡規則]。 [新增負載平衡規則] 窗格隨即顯示。

  3. 針對每個設定輸入下列值。

    設定
    名稱 負載平衡規則的名稱。 例如,lbrule-http
    IP 版本 IPv4
    前端 IP 位址 選取您稍早命名的前端 IP 位址。
    後端集區 選取您稍早命名的後端集區。 例如,bepool-http
    通訊協定 TCP
    通訊埠 輸入 80 (預設值)。
    後端連接埠 輸入 80 (預設值)。
    健全狀況探查 選取 [建立新的] 連結。 [新增健康狀態探查] 對話方塊隨即出現。
  4. 針對每個設定輸入下列值。

    設定
    名稱 健康情況探查的名稱。 例如,healthprobe-http
    通訊協定 TCP
    通訊埠 輸入 80 (預設值)。
    間隔 輸入 5 (預設值)。 這個值是探查之間的時間量。
  5. 選取 [儲存] 以關閉對話方塊。 [新增負載平衡規則] 窗格再次出現。

  6. 繼續為每個設定輸入下列值。

    設定
    工作階段持續性* [無] (預設值)
    閒置逾時 (分鐘) 選取 [4] (預設值)。 此值是不依賴用戶端來傳送保持連線訊息,讓 TCP 或 HTTP 連線保持開啟的時間。
    浮動 IP [已停用] (預設值)。

    Add a new load balancing rule.

  7. 選取 [儲存] 以完成負載平衡規則設定。

  8. [建立負載平衡器] 畫面再次出現。 選取 [檢閱 + 建立]。

  9. 通過驗證後,選取 [建立]。 完成部署後,選取 [前往資源]

  10. 在 [概觀] 頁面上,複製並儲存 [公用 IP 位址]。 您可能必須選取 [查看更多...],才能檢視公用 IP 位址。

建立 IP 位址

首先,我們需要負載平衡器的公用 IP 位址。

  1. 在 Cloud Shell 中,執行此命令來啟動 PowerShell:

    pwsh
    
  2. 在 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"
    
  3. 使用 New-AzLoadBalancerFrontendIpConfig Cmdlet 建立前端 IP。 下列程式碼會建立名為 myFrontEnd 的前端 IP 設定,並附加 myPublicIP 位址:

    $frontendIP = New-AzLoadBalancerFrontendIpConfig `
      -Name "myFrontEnd" `
      -PublicIpAddress $publicIP
    

建立負載平衡器

當您使用 PowerShell 設定負載平衡器時,必須先建立後端位址集區、健康狀態探查和規則,再建立平衡器本身。

  1. 執行 New-AzLoadBalancerBackendAddressPoolConfig Cmdlet 來建立後端位址集區。 在最後的步驟中,您會將虛擬機器附加到此後端集區。 下列範例會建立名為 myBackEndPool 的後端位址集區:

    $backendPool = New-AzLoadBalancerBackendAddressPoolConfig -Name "myBackEndPool"
    
  2. 請建立健康狀態探查,以讓負載平衡器監視醫療保健入口網站的狀態。 健康狀態探查會根據虛擬機器對健康狀態檢查的回應,從負載平衡器輪替中動態新增或移除虛擬機器。

    $probe = New-AzLoadBalancerProbeConfig `
      -Name "myHealthProbe" `
      -Protocol http `
      -Port 80 `
      -IntervalInSeconds 5 `
      -ProbeCount 2 `
      -RequestPath "/"
    
  3. 您現在需要負載平衡器規則,來定義如何將流量分散至虛擬機器。 您要定義連入流量的前端 IP 設定和接收流量的後端 IP 集區,以及所需的來源和目的地連接埠。 若要確定只有狀況良好的虛擬機器可接收流量,您也可定義要使用的健康狀態探查。

    $lbrule = New-AzLoadBalancerRuleConfig `
      -Name "myLoadBalancerRule" `
      -FrontendIpConfiguration $frontendIP `
      -BackendAddressPool $backendPool `
      -Protocol Tcp `
      -FrontendPort 80 `
      -BackendPort 80 `
      -Probe $probe
    
  4. 現在,您可以執行 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
    
  5. 藉由更新以後端集區資訊指令碼所建立的網路介面,將虛擬機器連線到後端集區。

    $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
    
  6. 執行下列命令來取得負載平衡器的公用 IP 位址和您網站的 URL:

    Write-Host http://$($(Get-AzPublicIPAddress `
      -ResourceGroupName <rgn>[sandbox resource group name]</rgn> `
      -Name "myPublicIP").IpAddress)
    

建立負載平衡器

讓我們使用 Azure CLI 建立負載平衡器及其相關聯的資源。

  1. 建立新的公用 IP 位址。

    az network public-ip create \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --allocation-method Static \
      --name myPublicIP
    
  2. 建立負載平衡器。

    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
    
  3. 若要讓負載平衡器監視醫療保健入口網站的狀態,請建立健康狀態探查。 健康狀態探查會根據虛擬機器對健康狀態檢查的回應,從負載平衡器輪替中動態新增或移除虛擬機器。

    az network lb probe create \
      --resource-group <rgn>[sandbox resource group name]</rgn> \
      --lb-name myLoadBalancer \
      --name myHealthProbe \
      --protocol tcp \
      --port 80  
    
  4. 現在,您需要負載平衡器規則,來定義如何將流量分散至虛擬機器。 您要定義連入流量的前端 IP 設定和接收流量的後端 IP 集區,以及所需的來源和目的地連接埠。 若要確定只有狀況良好的虛擬機器可接收流量,您也可定義要使用的健康狀態探查。

    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
    
  5. 藉由將指令碼中所建立的網路介面更新為使用後端集區資訊,來將虛擬機器連線到後端集區。

    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
    
  6. 執行下列命令來取得負載平衡器的公用 IP 位址和您網站的 URL:

    echo http://$(az network public-ip show \
                    --resource-group <rgn>[sandbox resource group name]</rgn> \
                    --name myPublicIP \
                    --query ipAddress \
                    --output tsv)
    

測試負載平衡器設定

讓我們測試負載平衡器設定,看其如何動態處理可用性和健康情況問題。

  1. 在新瀏覽器索引標籤中,移至您記下的公用 IP 位址。 其中一部虛擬機的回應會顯示在瀏覽器中。

  2. 使用 Ctrl+F5 來「強制重新整理」幾次,以查看從兩部虛擬機器隨機傳回的回應。

  3. Azure 入口網站功能表上,或從 [首頁] 頁面,選取 [所有資源]。 然後選取 [webVM1],再選取 [停止]

  4. 返回顯示網站的索引標籤,然後強制重新整理網頁。 所有要求都會從 webVM2 傳回。