分享方式:


在 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 負載測試的輸出存取:

  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 會插入至包含應用程式端點的虛擬網路中。 您現在可以使用私人 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 入口網站中設定虛擬網路設定,或在 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 的下一個躍點類型設定為網際網路

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

建立或更新負載測試失敗,並且出現 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 負載測試。 請為負載測試選取另一個子網路。

下一步