在 Azure 虛擬網路中部署 Azure 負載測試,以測試私人端點

在本文中,瞭解如何使用 Azure 負載測試來測試私人應用程式端點。 您可以建立 Azure 負載測試資源,並讓它從虛擬網路內產生負載(虛擬網路插入)。

這項功能具有下列使用方式情節:

  • 對部署在 Azure 虛擬網路中的端點產生負載。
  • 產生具有存取限制的公用端點負載,例如限制用戶端 IP 位址。
  • 產生透過 ExpressRoute 連線至 Azure 的內部部署服務負載,但無法公開存取。

深入瞭解在虛擬網路中部署 Azure 負載測試的案例

下圖提供技術概觀:

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

當您啟動負載測試時,Azure 負載測試服務會在包含應用程式端點的虛擬網路中插入下列 Azure 資源:

  • 測試引擎虛擬機。 這些 VM 會在負載測試期間叫用您的應用程式端點。
  • 公用 IP 位址。
  • 網路安全群組 (NSG) 。
  • Azure Load Balancer。

這些資源是暫時的,只有在負載測試執行時才會存在。 如果您在子網中部署公用IP位址、Azure 負載平衡器或網路安全組有限制,您可以停用這些資源的部署。 如需詳細資訊,請參閱 設定負載測試

如果您限制對虛擬網路的存取,您必須 設定虛擬網路 ,以啟用這些 Azure 負載測試與插入的 VM 之間的通訊。

必要條件

  • 您的 Azure 帳戶在虛擬網路上具有 網路參與者 角色或此角色的父系。 請參閱 檢查 Azure 資源的 存取權,以確認您的許可權。
  • 您用於 Azure 負載測試的子網必須有足夠的未指派 IP 位址,以容納測試的負載測試引擎數目。 深入瞭解如何 設定測試以進行大規模負載
  • 子網不應委派給任何其他 Azure 服務。 例如,它不應該委派給 Azure 容器執行個體 (ACI)。 深入瞭解 子網委派
  • Azure CLI 2.2.0 版或更新版本(如果您使用 CI/CD)。 執行 az --version 以尋找電腦上安裝的版本。 如果您需要安裝或升級 Azure CLI,請參閱 如何安裝 Azure CLI

設定虛擬網路

若要測試私人端點,您可以將 Azure 負載測試連線到 Azure 虛擬網路。 虛擬網路應該至少有一個子網,並允許輸出流量至 Azure 負載測試服務。

如果您還沒有虛擬網路,請遵循下列步驟,在 Azure 入口網站 中建立 Azure 虛擬網路。

重要

虛擬網路必須位於相同的訂用帳戶和與負載測試資源相同的區域。

建立子網

當您在虛擬網路中部署 Azure 負載測試時,建議針對 Azure 負載測試和應用程式端點使用不同的子網。 此方法可讓您特別針對每個用途設定網路流量存取原則。 深入瞭解如何將 子網新增至虛擬網路

(選擇性)設定流量規則

Azure 負載測試要求虛擬網路中插入的 VM 允許對 Azure 負載測試服務的輸出存取。 根據預設,當您建立虛擬網路時,已允許輸出存取。

如果您打算進一步限制使用網路安全組存取虛擬網路,或如果您已經有網路安全組,則必須設定輸出安全性規則,以允許從測試引擎 VM 到 Azure 負載測試服務的流量。

若要設定 Azure Load Testing 的輸出存取:

  1. 登入 Azure 入口網站

  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 會插入包含應用程式端點的虛擬網路中。 您現在可以直接參考 JMX 檔案中的端點,方法是使用私人 IP 位址,或在網路中使用名稱解析。

例如,對於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 入口網站 中設定虛擬網路設定,或在 CI/CD 管線的 YAML 測試組態檔指定它們。

重要

當您在虛擬網路中部署 Azure 負載測試時,將會產生額外費用。 Azure 負載測試會在 訂用帳戶中部署 Azure Load Balancer公用 IP 位址 ,而且產生的流量可能會產生成本。 如需詳細資訊,請參閱 虛擬網絡 定價資訊

在 Azure 入口網站 中設定虛擬網路

您可以在負載測試建立/更新精靈中指定虛擬網路組態設定。

  1. 使用 Azure 訂用帳戶的認證登入 Azure 入口網站

  2. 移至您的 Azure 負載測試資源,然後從左窗格中選取 [ 測試 ]。

  3. 以兩種方式之一開啟負載測試建立/更新精靈:

    • 如果您想要建立新的測試,請選取 [+ 建立 > 上傳 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 防火牆網路虛擬裝置 (NVA)替代機制,以啟用來自子網的輸出流量路由。

  6. 檢閱或填入負載測試資訊。 請遵循下列步驟來 建立或管理測試

  7. 選取 [ 檢閱 + 建立 ],然後在 更新現有測試時選取 [建立 ] (或 [套用]。

    負載測試啟動時,Azure 負載測試會在虛擬網路和子網中插入測試引擎 VM。 測試腳本現在可以存取虛擬網路中的私人裝載應用程式端點。

設定 CI/CD 管線的虛擬網路

若要使用虛擬網路設定來設定負載測試,請更新 YAML 測試組態檔

  1. 開啟終端機,並使用 Azure CLI 登入您的 Azure 訂用帳戶:

    az login
    az account set --subscription <your-Azure-Subscription-ID>
    
  2. 擷取子網標識碼,並複製產生的值:

    az network vnet subnet show -g <your-resource-group> --vnet-name <your-vnet-name> --name <your-subnet-name> --query id
    
  3. 在慣用的編輯器中開啟YAML測試組態檔。

  4. subnetId 屬性新增至組態檔,並提供您稍早複製的子網標識碼:

    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 工作流程觸發程式之後,負載測試就會啟動,現在可以存取虛擬網路中的私人裝載應用程式端點。

疑難排解

建立或更新負載測試失敗, 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 負載測試部署至虛擬網路。 您需要虛擬網路上的網路參與者角色或此角色的父系。

  1. 請參閱 檢查 Azure 資源的 存取權,以確認您的許可權。

  2. 請遵循下列步驟, 將網路參與者角色 指派給您的帳戶。

建立或更新負載測試失敗, IPv6 enabled subnet not supported (ALTVNET005)

Azure 負載測試不支援已啟用 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/0 的虛擬設備 在子網中布建虛擬機時,此設定會導致網路封包的非對稱路由。

執行兩個動作之一來解決此錯誤:

  • 使用不同的子網,其沒有自定義路由。
  • 修改子網路由表 ,並將路由 0.0.0.0/0 的下一個躍點類型設定為 因特網

深入了解 虛擬網路流量路由

建立或更新負載測試失敗, 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)

無法部署負載測試引擎實例,因為子網組態發生錯誤。 確認您的子網組態。 如果問題持續發生,請提出支援票證,以及測試的執行標識符。

  1. 確認子網的狀態。

    執行下列 Azure CLI 命令來驗證狀態。 結果應為 Succeeded

    az network vnet subnet show -g MyResourceGroup -n MySubnet --vnet-name MyVNet
    
  2. 解決子網的任何問題。 如果您剛建立子網,請在幾分鐘后再次確認狀態。

  3. 如果問題持續發生, 請開啟在線客戶支援要求

    在支援要求內提供負載測試回合標識碼。

啟動負載測試失敗, Subnet has {0} free IPs, {1} more free IP(s) required to run {2} engine instance load test (ALTVNET014)

您用於 Azure 負載測試的子網必須有足夠的未指派 IP 位址,以容納測試的負載測試引擎數目。

請遵循下列步驟來 更新子網設定 ,並增加IP位址範圍。

啟動負載測試失敗, Management Lock is enabled on Resource Group of VNET (ALTVNET015)

如果資源群組上有包含虛擬網路的鎖定,服務就無法在虛擬網路中插入測試引擎虛擬機。 在執行負載測試之前,請先移除管理鎖定。 瞭解如何在 Azure 入口網站 中設定鎖定。

啟動負載測試失敗, Insufficient public IP address quota in VNET subscription (ALTVNET016)

當您開始負載測試時,Azure 負載測試會在包含應用程式端點的虛擬網路中插入下列 Azure 資源:

  • 測試引擎虛擬機。 這些 VM 會在負載測試期間叫用您的應用程式端點。
  • 公用 IP 位址。
  • 網路安全群組 (NSG) 。
  • Azure Load Balancer。

請確定您訂用帳戶中至少有一個公用IP位址的配額,才能在負載測試中使用。

啟動負載測試失敗, Subnet with name "AzureFirewallSubnet" cannot be used for load testing (ALTVNET017)

AzureFirewallSubnet 子網已保留,您無法將其用於 Azure 負載測試。 選取負載測試的另一個子網。

下一步