演習 - パブリック ロード バランサーを構成する

完了

Azure portal、PowerShell、または Azure CLI を使用して、Azure Load Balancer を構成できます。

あなたが勤務する医療機関では、クライアント トラフィックの負荷を分散し、患者ポータル Web サーバーの正常性に基づいて一貫した応答を提供する必要があります。 1 つの可用性セット内に 2 台の仮想マシン (VM) があり、医療ポータル Web アプリケーションとして機能します。

ここでは、ロード バランサー リソースを作成し、それを仮想マシン間の負荷分散に使用します。

患者ポータル Web アプリケーションをデプロイする

まず、1 つの可用性セット内の 2 台の仮想マシンに患者ポータル アプリケーションをデプロイします。 時間を節約するために、このアプリケーションを作成するためのスクリプトの実行から始めましょう。 スクリプトは次のようになります。

  • 仮想マシンの仮想ネットワークとネットワーク インフラストラクチャを作成します。
  • この仮想ネットワークに 2 台の仮想マシンを作成します。

患者ポータル 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. その名前が示すように、このスクリプトによって 1 つの可用性セット内に 2 台の仮想マシンが生成されます。 その実行には約 2 分かかります。

    bash create-high-availability-vm-with-sets.sh <rgn>[sandbox resource group name]</rgn>
    
  4. スクリプトが終了したら、Azure portal のメニューまたは [ホーム] ページで [リソース グループ] を選択し、[サンドボックス リソース グループ名] リソース グループを選択します。 スクリプトによって作成されたリソースを確認します。

ロード バランサーを作成する

では、ロード バランサーを作成しましょう。

  1. Azure portal のメニューまたは [ホーム] ページで、[Azure サービス] の下の [リソースの作成] を選択します。 [リソースの作成] ウィンドウが表示されます。

  2. [Search services and marketplace](サービスとマーケットプレースの検索) 検索ボックスに「ロード バランサー」と入力し、Enter キーを押します。

  3. 続いて表示される一覧で、[Load Balancer - Microsoft](ロード バランサー - Microsoft) を選択します。 次に、[作成] を選択します。

    Create a Load Balancer instance in the Azure portal.

  4. [基本] タブで、各設定に対して次の値を入力します。

    設定
    プロジェクトの詳細
    サブスクリプション 該当するサブスクリプション
    リソース グループ リソース グループを選択します。 例: learn-ts-loadbalancer-rg
    インスタンスの詳細
    名前 一意の名前を入力します。 たとえば、Pub-LB-PatientsPortal などです。
    リージョン 仮想マシンが作成された場所を選択します。
    SKU Standard
    Type Public
    階層 Regional

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

フロント エンドの IP 構成を追加する

  1. [Next : Frontend IP configuration](次へ: フロントエンド IP 構成) を選択します。

  2. [+ Add a frontend IP configuration] (+ フロントエンド IP 構成の追加) を選択します。 [Add frontend IP configuration] (フロントエンド IP 構成の追加) ペインが表示されます。

  3. 各設定に対して次の値を入力します。

    設定
    名前 フロントエンド IP 構成の一意の名前を入力します。 例: 、myFrontendIP
    Virtual Network bePortalVnet を選択します
    サブネット bePortalSubnet を選択します
    割り当て [動的] を選択します

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

  4. ダイアログ ボックスを閉じるには、[追加] を選択します。 [ロード バランサーの作成] ペインがもう一度表示されます。

バックエンド プールを追加する

  1. [Next : Backend pools](次へ: バックエンド プール) を選択します。

  2. [バックエンド プールの追加] を選択します。 [バックエンド プールの追加] ウィンドウが表示されます。

  3. 各設定に対して次の値を入力します。

    設定
    Name バックエンド プールの一意の名前を入力します。 例: bepool-http
    仮想ネットワーク bePortalVnet が選択されていることを確認します。
  4. [IP 構成][追加] を選択します。 [Add IP configurations to backend pool] (バックエンド プールへの IP 構成の追加) ペインが表示されます。

  5. [仮想マシン] の下で webVM1webVM2 の各仮想マシンを選択し、[追加] を選択します。

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

  6. [バックエンド プールの追加] 画面がもう一度表示されます。 [IP 構成] で、webVM1webVM2 の各仮想マシンを選択し、[保存] を選択します。 [ロード バランサーの作成] 画面がもう一度表示されます。

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

負荷分散規則の追加

最後に、ロード バランサーの規則を作成しましょう。

  1. [Next : Inbound rules](次へ: 受信規則) を選択します。

  2. [負荷分散規則] セクションで、[+ 負荷分散規則の追加] を選択します。 [負荷分散規則の追加] ウィンドウが表示されます。

  3. 各設定に対して次の値を入力します。

    設定
    Name 負荷分散規則の名前。 例: lbrule-http
    IP バージョン IPv4
    フロントエンド IP アドレス 前に名前を付けたフロントエンド IP アドレスを選択します。
    バックエンド プール 前に名前を付けたバックエンド プールを選択します。 例: bepool-http
    Protocol TCP
    Port 80」 (既定値) と入力します。
    バックエンド ポート 80」 (既定値) と入力します。
    正常性プローブ [新規作成] リンクを選択します。 [正常性プローブの追加] ダイアログ ボックスが表示されます。
  4. 各設定に対して次の値を入力します。

    設定
    Name 正常性プローブの名前。 例: healthprobe-http
    Protocol TCP
    Port 80」 (既定値) と入力します。
    Interval 5」 (既定値) と入力します。 この値は、プローブ間の時間の長さです。
  5. [保存] を選択してダイアログ ボックスを閉じます。 [負荷分散規則の追加] ウィンドウが再び表示されます。

  6. 続いて、各設定に対して次の値を入力します。

    設定
    セッション永続化* なし (既定値)
    アイドル タイムアウト (分) [4] (既定値) を選択します。 この値は、クライアントからキープアライブ メッセージを送信しなくても TCP 接続または HTTP 接続が開いたまま維持される時間です。
    フローティング IP 無効 (既定値)。

    Add a new load balancing rule.

  7. [保存] を選択して、負荷分散規則の構成を完了します。

  8. [ロード バランサーの作成] 画面がもう一度表示されます。 [Review + create](レビュー + 作成) を選択します。

  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 コマンドレットを使用して、フロントエンド IP を作成します。 次のコードでは、myFrontEnd という名前のフロントエンド IP 構成を作成し、myPublicIP アドレスをアタッチします。

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

ロード バランサーを作成する

PowerShell を使用してロード バランサーを構成する場合は、バランサー自体を作成する前に、バックエンド アドレス プール、正常性プローブ、規則を作成する必要があります。

  1. New-AzLoadBalancerBackendAddressPoolConfig コマンドレットを実行して、バックエンド アドレス プールを作成します。 最後の数ステップで、このバックエンド プールに仮想マシンを接続します。 次の例では、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 コマンドレットを実行して基本ロード バランサーを作成できます。

    $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 アドレスと Web サイトの 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 アドレスと Web サイトの 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 portal のメニューまたは [ホーム] ページで、[すべてのリソース] を選択します。 次に webVM1 を選択し、[停止] を選択します。

  4. Web サイトが表示されているタブに戻り、Web ページを強制的に最新の情報に更新します。 すべての要求が webVM2 から返されます。