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

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

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

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

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

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

Diagram that shows the Azure Load Testing virtual network injection technical overview.

ロード テストを開始すると、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) に委任しないでください。 サブネットの委任について詳しくは、こちらをご覧ください。
  • 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. 左側のナビゲーションで [送信セキュリティ規則] を選択します。

    Screenshot that shows the network security group overview page in the Azure portal, highlighting Outbound security rules.

  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 スクリプトをアップロード] を選択します。

      Screenshot that shows the Tests page, highlighting the button for creating a new test.

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

      Screenshot that shows the Tests page, highlighting the button for editing a test.

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

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

    Screenshot that shows the Load tab for creating or updating a load test.

    重要

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

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

    このオプションを選択する場合は、Azure NAT ゲートウェイ、Azure 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
    

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

    重要

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

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

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

トラブルシューティング

ロード テストの作成または更新が Subscription not registered with Microsoft.Batch (ALTVNET001) で失敗する

仮想ネットワークでロード テストを構成する場合、サブスクリプションを Microsoft.Batch に登録する必要があります。

  1. 数分後にロード テストをもう一度作成または更新してみます。

  2. エラーが解決しない場合は、手動で Microsoft.Batch リソース プロバイダーにサブスクリプションを登録するための手順に従います。

ロード テストの作成または更新が Subnet is not in the Succeeded state (ALTVNET002) で失敗する

ロード テストに使用しているサブネットが Succeeded 状態ではなく、それにロード テストをデプロイする準備ができていません。

  1. サブネットの状態を確認します。

    次の Azure CLI コマンドを実行して、状態を確認します。 結果は Succeeded となるはずです。

    az network vnet subnet show -g MyResourceGroup -n MySubnet --vnet-name MyVNet
    
  2. サブネットに関する問題をすべて解決します。 サブネットを作成したばかりの場合は、数分後にもう一度状態を確認します。

  3. または、ロード テスト用に別のサブネットを選びます。

ロード テストの作成または更新が Subnet is delegated to other service (ALTVNET003) で失敗する

ロード テストのデプロイに使用するサブネットは、別の Azure サービスに委任できません。 既存の委任を削除するか、サービスに委任されていない別のサブネットを選びます。

サブネットの委任の追加または削除について詳細を確認します。

ロード テストの更新または開始が失敗する User doesn't have subnet/join/action permission on the virtual network (ALTVNET004)

ロード テストを更新または開始するには、Azure Load Testing を仮想ネットワークにデプロイするための十分なアクセス許可が必要です。 仮想ネットワークでは、 ネットワーク共同作成者 ロール、またはこのロールの親であることが必要です。

  1. アクセス許可を確認するには、「Azure リソースへのユーザーのアクセスを確認する」を参照してください。

  2. アカウントにネットワーク共同作成者ロールを割り当てるための手順に従います。

ロード テストの作成または更新が IPv6 enabled subnet not supported (ALTVNET005) で失敗する

Azure Load Testing では、IPv6 対応サブネットはサポートされていません。 IPv6 が有効になっていない別のサブネットを選んでください。

ロード テストの作成または更新が NSG attached to subnet is not in Succeeded state (ALTVNET006) で失敗する

サブネットに接続されているネットワーク セキュリティ グループ (NSG) が、Succeeded 状態ではありません。

  1. NSG の状態を確認します。

    次の Azure CLI コマンドを実行して、状態を確認します。 結果は Succeeded となるはずです。

    az network nsg show -g MyResourceGroup -n MyNsg
    
  2. NSG に関する問題をすべて解決します。 NSG またはサブネットを作成したばかりの場合は、数分後に状態をもう一度確認します。

  3. または、別の NSG を選びます。

ロード テストの作成または更新が Route Table attached to subnet is not in Succeeded state (ALTVNET007) で失敗する

サブネットに接続されているルート テーブルが Succeeded 状態ではありません。

  1. ルート テーブルの状態を確認します。

    次の Azure CLI コマンドを実行して、状態を確認します。 結果は Succeeded となるはずです。

    az network route-table show -g MyResourceGroup -n MyRouteTable
    
  2. ルート テーブルに関する問題をすべて解決します。 ルート テーブルまたはサブネットを作成したばかりの場合は、数分後にもう一度状態を確認します。

  3. または、別のルート テーブルを選びます。

ロード テストの作成または更新が Inbound not allowed from AzureLoadTestingInstanceManagement service tag (ALTVNET008) で失敗する

AzureLoadTestingInstanceManagement サービス タグから仮想ネットワークへの受信アクセスは許可されません。

AzureLoadTestingInstanceManagement サービス タグのトラフィック アクセスを有効にするための手順に従ってください。

ロード テストの作成または更新が Inbound not allowed from BatchNodeManagement service tag (ALTVNET009) で失敗する

BatchNodeManagement サービス タグから仮想ネットワークへの受信アクセスは許可されません。

BatchNodeManagement サービス タグの受信アクセスを有効にするための手順に従ってください。

ロード テストの作成または更新が Route Table has next hop set for address prefix 0.0.0.0/0 で失敗する

サブネット ルート テーブルのネクスト ホップ セットの種類が、ルート 0.0.0.0/0仮想アプライアンスに設定されています。 この構成により、サブネット内の仮想マシンをプロビジョニングする際にネットワーク パケットの非対称ルーティングが発生します。

このエラーを解決するには、次の 2 つのアクションのいずれかを実行します。

仮想ネットワーク トラフィック ルーティングの詳細を確認してください。

ロード テストの作成または更新が Subnet is in a different subscription than resource (ALTVNET011) で失敗する

仮想ネットワークは、Azure ロード テスト リソースと同じサブスクリプションおよびリージョンにありません。 Azure 仮想ネットワークまたは Azure ロード テスト リソースを同じサブスクリプションおよびリージョンに移動するか、再作成してください。

プロビジョニングが An azure policy is restricting engine deployment to your subscription (ALTVNET012) で失敗する

Azure ポリシーにより、サブスクリプションへのロード テスト エンジンのデプロイが制限されています。 ポリシーの制限事項を確認し、もう一度お試しください。 パブリック IP アドレス、Azure ロード バランサー、またはネットワーク セキュリティ グループのデプロイにポリシー制限がある場合は、これらのリソースのデプロイを無効にすることができます。 ロード テストの構成を参照してください

プロビジョニングが Engines could not be deployed due to an error in subnet configuration (ALTVNET013) で失敗する

サブネット構成でエラーが発生したため、ロード テスト エンジンのインスタンスをデプロイできませんでした。 サブネット構成を確認します。 問題が解決しない場合は、サポートでチケットをテストの実行 ID を含めて発行します。

  1. サブネットの状態を確認します。

    次の Azure CLI コマンドを実行して、状態を確認します。 結果は Succeeded となるはずです。

    az network vnet subnet show -g MyResourceGroup -n MySubnet --vnet-name MyVNet
    
  2. サブネットに関する問題をすべて解決します。 サブネットを作成したばかりの場合は、数分後にもう一度状態を確認します。

  3. 問題が解決しない場合は、オンライン カスタマー サポート リクエストを開きます

    サポート リクエスト内に、ロード テストの実行 ID を指定します。

ロード テストの開始が Subnet has {0} free IPs, {1} more free IP(s) required to run {2} engine instance load test (ALTVNET014) で失敗する

Azure Load Testing に使用するサブネットには、テスト用のロード テスト エンジンの数に対応できる未割り当ての十分な IP アドレスが必要です。

サブネット設定を更新するための手順に従って、IP アドレス範囲を増やします。

ロード テストの開始が Management Lock is enabled on Resource Group of VNET (ALTVNET015) で失敗する

仮想ネットワークを含むリソース グループにロックがある場合、サービスは仮想ネットワークにテスト エンジンの仮想マシンを挿入できません。 ロード テストを実行する前に、管理ロックを削除します。 Azure portal でロックを構成する方法について説明します。

ロード テストの開始が Insufficient public IP address quota in VNET subscription (ALTVNET016) で失敗する

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

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

ロード テストで使用するサブスクリプションで使用可能なパブリック IP アドレスが少なくとも 1 つのクォータにあることを確認します。

ロード テストの開始が Subnet with name "AzureFirewallSubnet" cannot be used for load testing (ALTVNET017) で失敗する

AzureFirewallSubnet サブネットは予約されており、Azure Load Testing には使用できません。 ロード テスト用に別のサブネットを選びます。

次のステップ