クイック スタート: Azure CLI を使用して VM の負荷を分散する内部ロード バランサーを作成する

Azure CLI を使用して内部ロード バランサーと 2 つの仮想マシンを作成することにより、Azure Load Balancer の使用を開始します。 その他のリソースには、Azure Bastion、NAT Gateway、仮想ネットワーク、必要なサブネットなどがあります。

内部ロード バランサー用にデプロイされたリソースの図。

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

  • このクイックスタートには、Azure CLI のバージョン 2.0.28 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。

リソース グループを作成する

Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。

az group create を使用して、リソース グループを作成します。

    az group create \
      --name CreateIntLBQS-rg \
      --location westus3

内部ロード バランサーを作成すると、仮想ネットワークがロード バランサー用のネットワークとして構成されます。

仮想ネットワークの作成

VM をデプロイしてロード バランサーをテストする前に、サポート用の仮想ネットワークとサブネットを作成します。 この仮想ネットワークとサブネットには、この記事で後ほどデプロイされるリソースが含まれます。

az network vnet create を使用して、仮想ネットワークを作成します。

  az network vnet create \
    --resource-group CreateIntLBQS-rg \
    --location westus3 \
    --name myVNet \
    --address-prefixes 10.1.0.0/16 \
    --subnet-name myBackendSubnet \
    --subnet-prefixes 10.1.0.0/24

Azure Bastion ホストを作成する

この例では、Azure Bastion ホストを作成します。 Azure Bastion ホストは、仮想マシンを安全に管理し、ロード バランサーのデプロイをテストするために、この記事の後半で使用します。

重要

時間単位の料金は、送信データの使用量に関係なく、Bastion がデプロイされた時点から発生します。 詳しくは、「価格」および「SKU」を参照してください。 チュートリアルまたはテストの一環として Bastion をデプロイしている場合は、使用終了後にこのリソースを削除することをお勧めします。

bastion パブリック IP アドレスを作成する

az network public-ip create を使用して、Azure Bastion ホストのパブリック IP アドレスを作成します。

az network public-ip create \
    --resource-group CreateIntLBQS-rg  \
    --name myBastionIP \
    --sku Standard \
    --zone 1 2 3

bastion サブネットを作成する

az network vnet subnet create を使用して、サブネットを作成します。

az network vnet subnet create \
    --resource-group CreateIntLBQS-rg  \
    --name AzureBastionSubnet \
    --vnet-name myVNet \
    --address-prefixes 10.1.1.0/27

bastion ホストを作成する

az network bastion create を使用して、ホストを作成します。

az network bastion create \
    --resource-group CreateIntLBQS-rg  \
    --name myBastionHost \
    --public-ip-address myBastionIP \
    --vnet-name myVNet \
    --location westus3

Azure Bastion ホストがデプロイされるまでに数分かかる場合があります。

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

このセクションでは、ロード バランサーの以下のコンポーネントを作成および構成する方法について説明します。

  • ロード バランサーの着信ネットワーク トラフィックを受け取るフロントエンド IP プール

  • フロントエンド プールから負荷分散されたネットワーク トラフィックが送信されるバックエンド IP プール

  • バックエンド VM インスタンスの正常性を判断する正常性プローブ

  • VM に対するトラフィックの均等配置を定義するロード バランサー規則

ロード バランサーのリソースを作成する

az network lb create を使って、内部ロード バランサーを作成します。

  az network lb create \
    --resource-group CreateIntLBQS-rg \
    --name myLoadBalancer \
    --sku Standard \
    --vnet-name myVNet \
    --subnet myBackendSubnet \
    --backend-pool-name myBackEndPool \
    --frontend-ip-name myFrontEnd

正常性プローブを作成する

正常性プローブは、すべての仮想マシン インスタンスを調べて、ネットワーク トラ フィックを送信できるかどうかを確認します。

プローブ チェックが失敗した仮想マシンは、ロード バランサーから削除されます。 障害が解決されると、仮想マシンがロード バランサーに再び追加されます。

正常性プローブは、az network lb probe create で作成します。

  az network lb probe create \
    --resource-group CreateIntLBQS-rg \
    --lb-name myLoadBalancer \
    --name myHealthProbe \
    --protocol tcp \
    --port 80

ロード バランサー規則の作成

ロード バランサー規則は、以下のものを定義します。

  • 着信トラフィック用のフロントエンド IP 構成

  • トラフィックを受信するためのバックエンド IP プール

  • 必要な発信元ポートと同期先ポート

ロード バランサー規則は、az network lb rule create で作成します。

  az network lb rule create \
    --resource-group CreateIntLBQS-rg \
    --lb-name myLoadBalancer \
    --name myHTTPRule \
    --protocol tcp \
    --frontend-port 80 \
    --backend-port 80 \
    --frontend-ip-name myFrontEnd \
    --backend-pool-name myBackEndPool \
    --probe-name myHealthProbe \
    --idle-timeout 15 \
    --enable-tcp-reset true

ネットワーク セキュリティ グループの作成

Standard ロード バランサーの場合、バックエンド プールが扱う VM には、ネットワーク セキュリティ グループに属しているネットワーク インターフェイスが必要です。

ネットワーク セキュリティ グループを作成するには、az network nsg create を使用します。

  az network nsg create \
    --resource-group CreateIntLBQS-rg \
    --name myNSG

ネットワーク セキュリティ グループ規則を作成する

ネットワーク セキュリティ グループの規則を作成するには、az network nsg rule create を使用します。

  az network nsg rule create \
    --resource-group CreateIntLBQS-rg \
    --nsg-name myNSG \
    --name myNSGRuleHTTP \
    --protocol '*' \
    --direction inbound \
    --source-address-prefix '*' \
    --source-port-range '*' \
    --destination-address-prefix '*' \
    --destination-port-range 80 \
    --access allow \
    --priority 200

バックエンド サーバーの作成

このセクションでは、以下を作成します。

  • 仮想マシンに使用する 2 つのネットワーク インターフェイス

  • ロード バランサーのサーバーとして使用する 2 つの仮想マシン

仮想マシンのネットワーク インターフェイスを作成する

az network nic create を使用して、2 つのネットワーク インターフェイスを作成します。

  array=(myNicVM1 myNicVM2)
  for vmnic in "${array[@]}"
  do
    az network nic create \
        --resource-group CreateIntLBQS-rg \
        --name $vmnic \
        --vnet-name myVNet \
        --subnet myBackEndSubnet \
        --network-security-group myNSG
  done

仮想マシンの作成

az vm create で、仮想マシンを作成します。

  array=(1 2)
  for n in "${array[@]}"
  do
    az vm create \
    --resource-group CreateIntLBQS-rg \
    --name myVM$n \
    --nics myNicVM$n \
    --image win2019datacenter \
    --admin-username azureuser \
    --zone $n \
    --no-wait
  done

VM がデプロイされるまでに、数分かかる場合があります。

Note

パブリック IP が割り当てられていない VM、または内部の Basic Azure Load Balancer のバックエンド プール内にある VM に対しては、Azure によって既定のアウトバウンド アクセス IP が提供されます。 デフォルト送信アクセス IP メカニズムは、構成できないアウトバウンド IP アドレスを提供します。

次のいずれかのイベントが発生すると、既定のアウトバウンド アクセス IP は無効になります。

  • パブリック IP アドレスが VM に割り当てられます。
  • アウトバウンド規則の有無にかかわらず、VM は標準ロード バランサーのバックエンド プール内に配置されます。
  • Azure NAT Gateway リソースが VM のサブネットに割り当てられている。

フレキシブル オーケストレーション モードの仮想マシン スケール セットによって作成された VM には、既定のアウトバウンド アクセスがありません。

Azure のアウトバウンド接続の詳細については、「Azure での既定の送信アクセス」および「送信接続での送信元ネットワーク アドレス変換 (SNAT)を使用する」を参照してください。

仮想マシンをバックエンド プールに追加する

az network nic ip-config address-pool add を使用して、次のように仮想マシンをバックエンド プールに追加します。

  array=(VM1 VM2)
  for vm in "${array[@]}"
  do
  az network nic ip-config address-pool add \
   --address-pool myBackendPool \
   --ip-config-name ipconfig1 \
   --nic-name myNic$vm \
   --resource-group CreateIntLBQS-rg \
   --lb-name myLoadBalancer
  done

NAT ゲートウェイの作成

バックエンド プール内のリソースに送信インターネット アクセスを提供するには、NAT ゲートウェイを作成します。

パブリック IP を作成する

az network public-ip create を使用して、アウトバウンド接続用の 1 つの IP を作成します。

  az network public-ip create \
    --resource-group CreateIntLBQS-rg \
    --name myNATgatewayIP \
    --sku Standard \
    --zone 1 2 3

NAT ゲートウェイ リソースの作成

az network nat gateway create を使用して、NAT ゲートウェイ リソースを作成します。 前の手順で作成したパブリック IP は、NAT ゲートウェイに関連付けられている。

  az network nat gateway create \
    --resource-group CreateIntLBQS-rg \
    --name myNATgateway \
    --public-ip-addresses myNATgatewayIP \
    --idle-timeout 10

NAT ゲートウェイをサブネットに関連付ける

az network vnet subnet update を使って、仮想ネットワーク内の送信元サブネットを、特定の NAT ゲートウェイ リソースを使うように構成します。

  az network vnet subnet update \
    --resource-group CreateIntLBQS-rg \
    --vnet-name myVNet \
    --name myBackendSubnet \
    --nat-gateway myNATgateway

テスト用の仮想マシンを作成する

az network nic create を使用して、ネットワーク インターフェイスを作成します。

  az network nic create \
    --resource-group CreateIntLBQS-rg \
    --name myNicTestVM \
    --vnet-name myVNet \
    --subnet myBackEndSubnet \
    --network-security-group myNSG

az vm create を使用して、仮想マシンを作成します。

  az vm create \
    --resource-group CreateIntLBQS-rg \
    --name myTestVM \
    --nics myNicTestVM \
    --image Win2019Datacenter \
    --admin-username azureuser \
    --no-wait

仮想マシンがデプロイされるまでに、数分かかる場合があります。

IIS のインストール

バックエンド仮想マシンに IIS をインストールし、既定の Web サイトをコンピューター名に設定するには、az vm extension set を使用します。

  array=(myVM1 myVM2)
    for vm in "${array[@]}"
    do
     az vm extension set \
       --publisher Microsoft.Compute \
       --version 1.8 \
       --name CustomScriptExtension \
       --vm-name $vm \
       --resource-group CreateIntLBQS-rg \
       --settings '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}'
  done

ロード バランサーをテストする

  1. Azure portal にサインインします。

  2. [概要] ページで、ロード バランサーのプライベート IP アドレスを見つけます。 左側のメニューで、 [すべてのサービス]>[すべてのリソース]>[myLoadBalancer] を選択します。

  3. myLoadBalancer の概要で、 [プライベート IP アドレス] の横にあるアドレスをコピーしておきます。 プライベート IP アドレスが表示されない場合は、[詳細表示] を選択します。

  4. 左側のメニューで、 [すべてのサービス]>[すべてのリソース] を選択します。 リソースの一覧の [CreateIntLBQS-rg] リソース グループで、 [myTestVM] を選択します。

  5. [概要] ページで、 [接続]>[Bastion] を選択します。

  6. VM の作成時に入力したユーザー名とパスワードを入力します。

  7. myTestVMInternet Explorer を開きます。

  8. 前の手順の IP アドレスをブラウザーのアドレス バーに入力します。 IIS Web サーバーの既定のページがブラウザーに表示されます。

    ブラウザーのアドレス バーに表示される IP アドレスのスクリーンショット。

リソースをクリーンアップする

リソースが不要になったら、az group delete コマンドを使用して、リソース グループ、ロード バランサー、およびすべての関連リソースを削除します。

  az group delete \
    --name CreateIntLBQS-rg

次のステップ

このクイック スタートでは次のようにします。

  • 内部ロード バランサーを作成しました

  • 2 つの仮想マシンをアタッチしました

  • ロード バランサーのトラフィック規則と正常性プローブを構成しました。

  • ロード バランサーをテストしました

Azure Load Balancer についてさらに学習するには、次の記事に進んでください。