次の方法で共有


Azure 仮想ネットワークに Azure Load Testing をデプロイしてプライベート エンドポイントをテストする

この記事では、Azure Load Testing でプライベート アプリケーション エンドポイントをテストする方法について説明します。 Azure Load Testing リソースを作成し、仮想ネットワーク内から負荷を生成できるようにします (仮想ネットワーク インジェクション)。

この機能により、次の使用シナリオが有効になります。

  • Azure 仮想ネットワークでデプロイされているエンドポイントへの負荷を生成します。
  • クライアント IP アドレスの制限など、 アクセス制限を使用してパブリック エンドポイントへの負荷を生成します。
  • ExpressRoute を介して Azure に接続されている、パブリックにアクセスできない、オンプレミス サービスへの負荷を生成します。

仮想ネットワークに Azure Load Testing をデプロイするシナリオについて説明します。

次の図は、技術的な概要を示しています。

Azure Load Testing 仮想ネットワーク インジェクションの技術的概要を示す図。

ロード テストを開始すると、Azure Load Testing サービスは、アプリケーション エンドポイントを含む仮想ネットワークに次の Azure リソースを挿入します。

  • テスト エンジンの仮想マシン。 これらの VM では、ロード テスト中にアプリケーション エンドポイントを呼び出します。
  • パブリック IP アドレス。
  • ネットワーク セキュリティ グループ (NSG)。
  • Azure Load Balancer。

これらのリソースは一時的なものであり、ロード テストの実行中にのみ存在します。 サブネット内のパブリック IP アドレス、Azure ロード バランサー、またはネットワーク セキュリティ グループのデプロイに制限がある場合は、これらのリソースのデプロイを無効にすることができます。 詳細については、「ロード テストを構成する」を参照してください。

仮想ネットワークへのアクセスを制限する場合は、これらの Azure Load Testing と挿入された VM 間の通信を有効にするように仮想ネットワークを構成する必要があります。

前提条件

  • 仮想ネットワークでは、Azure アカウントは、ネットワーク共同作成者ロール、またはこのロールの親です。 アクセス許可を確認するには、「Azure リソースへのユーザーのアクセスを確認する」を参照してください。
  • Azure Load Testing に使用するサブネットには、テスト用のロード テスト エンジンの数に対応できる未割り当ての十分な IP アドレスが必要です。 大規模な読み込み用にテストを構成する方法の詳細について説明します。
  • サブネットは、他の Azure サービスに委任しないでください。 たとえば、Azure Container Instances (ACI) に委任しないでください。 サブネットの委任について詳しくは、こちらをご覧ください。
  • サブネットでは IPv6 を有効にしないでください。 Azure Load Testing では、IPv6 対応サブネットはサポートされていません。 Azure Virtual Network の IPv6 について詳しくは、こちらをご覧ください
  • Azure CLI バージョン 2.2.0 以降 (CI/CD を使用している場合)。 コンピューターにインストールされているバージョンを調べるには、az --version を実行します。 Azure CLI をインストールまたはアップグレードする必要がある場合は、「Azure CLI をインストールする方法」を参照してください。

仮想ネットワークを構成する

プライベート エンドポイントをテストするには、Azure Load Testing を Azure 仮想ネットワークに接続します。 仮想ネットワークには少なくとも 1 つのサブネットが必要であり、Azure Load Testing サービスへの送信トラフィックを許可する必要があります。

仮想ネットワークがない場合は、次の手順に従って、Azure portal で Azure 仮想ネットワークを作成します

重要

仮想ネットワークは、ロード テスト リソースと同じサブスクリプションおよび同じリージョンに存在する必要があります。

サブネットの作成

仮想ネットワークに Azure Load Testing をデプロイする場合は、Azure Load Testing とアプリケーション エンドポイントに別々のサブネットを使用することをお勧めします。 この方法では、目的ごとにネットワーク トラフィック アクセス ポリシーを構成できます。 仮想ネットワークにサブネットを追加する方法の詳細について説明します。

(省略可能) トラフィック規則の構成

Azure Load Testing では、仮想ネットワークに挿入された VM に Azure Load Testing サービスへの送信アクセスが許可されている必要があります。 既定では、仮想ネットワークを作成するときに、送信アクセスは既に許可されています。

ネットワーク セキュリティ グループを使用して仮想ネットワークへのアクセスをさらに制限する場合、または既にネットワーク セキュリティ グループがある場合は、テスト エンジン VM から Azure Load Testing サービスへのトラフィックを許可するように送信セキュリティ規則を構成する必要があります。

次の手順で Azure Load Testing の送信アクセスを構成します。

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

  2. ネットワーク セキュリティ グループに移動します。

    NSG がまだない場合は、次の手順に従って、ネットワーク セキュリティ グループを作成します

    仮想ネットワークと同じリージョンに NSG を作成し、サブネットに関連付けます。

  3. 左側のナビゲーションで [送信セキュリティ規則] を選択します。

    Azure portal のネットワーク セキュリティ グループの概要ページを示すスクリーンショット。[送信セキュリティ規則] が強調表示されています。

  4. 新しい送信セキュリティ規則を追加するため、 [+ 追加] を選択します。 新しい規則を作成するには、次の情報を入力します。

    フィールド
    ソース [任意]
    ソース ポート範囲 *
    宛先 [任意]
    宛先ポート範囲 *
    名前 azure-load-testing-outbound
    説明 ロード テストの調整に関連するさまざまな操作に使用されます。
  5. [追加] を選択して、ネットワーク セキュリティ グループにセキュリティ規則を追加します。

ロード テスト スクリプトを構成する

JMeter スクリプトを実行するテスト エンジン VM は、アプリケーション エンドポイントを含む仮想ネットワークに挿入されます。 これで、プライベート IP アドレスを使用するか、ネットワークで名前解決を使用して、JMX ファイル内のエンドポイントを直接参照できるようになりました。

たとえば、IP アドレスが 10.179.0.7 のエンドポイントの場合、サブネット範囲が 10.179.0.0/18 の仮想ネットワークでは、JMX ファイルに次の情報が含まれる可能性があります。

<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Internal service homepage" enabled="true">
  <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Service homepage" enabled="true">
    <collectionProp name="Arguments.arguments"/>
  </elementProp>
  <stringProp name="HTTPSampler.domain">10.179.0.7</stringProp>
  <stringProp name="HTTPSampler.port">8081</stringProp>
  <stringProp name="HTTPSampler.protocol"></stringProp>
  <stringProp name="HTTPSampler.contentEncoding"></stringProp>
  <stringProp name="HTTPSampler.path"></stringProp>
  <stringProp name="HTTPSampler.method">GET</stringProp>
</HTTPSamplerProxy>

ロード テストを構成する

プライベートにホストされているエンドポイントをロード テストに含めるには、ロード テストの仮想ネットワーク設定を構成する必要があります。 Azure portal で仮想ネットワークの設定を構成することも、CI/CD パイプラインの YAML テスト構成ファイルでこれらを指定することもできます。

重要

仮想ネットワークに Azure Load Testing をデプロイすると、追加料金が発生します。 Azure Load Testing は、サブスクリプションに Azure Load Balancerパブリック IP アドレスをデプロイします。生成されるトラフィックにはコストがかかる可能性があります。 詳細については、「Virtual Network の価格情報」を参照してください。

Azure portal で仮想ネットワークを構成する

ロード テストの作成/更新ウィザードで仮想ネットワーク構成の設定を指定できます。

  1. ご利用の Azure サブスクリプションの資格情報を使って、Azure portal にサインインします。

  2. Azure Load Testing リソースに移動して、左側のペインで [テスト] を選択します。

  3. 次の 2 つの方法のいずれかで、ロード テストの作成/更新ウィザードを開きます。

    • 新しいテストを作成する場合は、[+作成] > [JMeter スクリプトをアップロード] を選択します。

      新しいテストを作成するためのボタンを強調表示する [テスト] ページを示すスクリーンショット。

    • 一覧から既存のテストを選択し、[編集] を選択します。

      テストを編集するためのボタンを強調表示する [テスト] ページを示すスクリーンショット。

  4. [読み込み] タブで、[プライベート] トラフィック モードを選択し、仮想ネットワークとサブネットを選択します。

    仮想ネットワークに複数のサブネットがある場合は、挿入されたテスト エンジン VM をホストするサブネットを選択してください。

    ロード テストを作成または更新するための [ロード] タブを示すスクリーンショット。

    重要

    仮想ネットワークを管理できる十分なアクセス許可を持っていることを確認します。 ネットワーク共同作成者ロールが必要です。

  5. (省略可能) パブリック IP アドレス、ロード バランサー、およびネットワーク セキュリティ グループをサブネットにデプロイしない場合は、[Disable Public IP deployment]\(パブリック IP のデプロイの無効化\) をオンにします。

    このオプションを選択する場合は、サブネットからの送信トラフィック ルーティングを有効にするために、Azure NAT GatewayAzure Firewallネットワーク仮想アプライアンス (NVA) などの代替メカニズムがあることを確認します。

  6. ロード テスト情報を確認または入力します。 次の手順に従ってテストを作成または管理します

  7. [確認と作成] を選択し、[作成] (または既存のテストを更新するときは 適用) を選択します。

    ロード テストが開始されると、Azure Load Testing によって仮想ネットワークとサブネットにテスト エンジン VM が挿入されます。 これで、テスト スクリプトから、仮想ネットワークでプライベートにホストされているアプリケーション エンドポイントにアクセスできるようになりました。

CI/CD パイプラインの仮想ネットワークを構成する

仮想ネットワーク設定でロード テストを構成するには、YAML テスト構成ファイルを更新します。

  1. ターミナルを開き、Azure CLI を使用して Azure サブスクリプションにサインインします。

    az login
    az account set --subscription <your-Azure-Subscription-ID>
    
  2. サブネット ID を取得し、結果の値をコピーします。

    az network vnet subnet show -g <your-resource-group> --vnet-name <your-vnet-name> --name <your-subnet-name> --query id
    
  3. 任意のエディターで YAML テスト構成ファイルを開きます。

  4. 構成ファイルに subnetId プロパティを追加し、前にコピーしたサブネット ID を指定します。

    version: v0.1
    testName: SampleTest
    testPlan: SampleTest.jmx
    description: 'Load test the website home page'
    engineInstances: 1
    subnetId: <your-subnet-id>
    publicIPDisabled: False
    

    必要に応じて、publicIPDisabled プロパティを True に設定できます。 YAML 構成の詳細については、テスト構成 YAML リファレンスに関する記事を参照してください。

    重要

    仮想ネットワークを管理できる十分なアクセス許可を持っていることを確認します。 ネットワーク共同作成者ロールが必要です。

  5. YAML 構成ファイルを保存し、変更をソース コード リポジトリにコミットします。

  6. CI/CD ワークフローがトリガーされると、ロード テストが開始され、仮想ネットワークでプライベートにホストされているアプリケーション エンドポイントにアクセスできるようになります。

トラブルシューティング

プライベート エンドポイントに対するロード テストの作成と実行に関する問題をトラブルシューティングするには、プライベート エンドポイント テストをトラブルシューティングする方法に関する記事を参照してください。

次のステップ