你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

通过在 Azure 虚拟网络中部署 Azure 负载测试来测试专用终结点

本文介绍如何使用 Azure 负载测试来测试专用应用程序终结点。 你将创建一个 Azure 负载测试资源,并使其能够在虚拟网络中生成负载(虚拟网络注入)。

此功能具有以下用途:

  • 将负载生成到 Azure 虚拟网络中部署的终结点。
  • 将负载生成到具有访问限制的公共终结点,例如限制的客户端 IP 地址。
  • 将负载生成到通过 ExpressRoute 连接到 Azure 的本地服务(不可公开访问)。

详细了解在虚拟网络中部署 Azure 负载测试的方案。

下图提供了技术概述:

图表显示 Azure 负载测试虚拟网络注入技术概述。

启动负载测试时,Azure 负载测试服务会在包含应用程序终结点的虚拟网络中注入以下 Azure 资源:

  • 测试引擎虚拟机。 这些 VM 会在负载测试期间调用应用程序终结点。
  • 公共 IP 地址。
  • 网络安全组 (NSG)。
  • Azure 负载均衡器。

这些资源是临时的,仅在负载测试运行期间存在。 如果对在子网中部署公共 IP 地址、Azure 负载均衡器或网络安全组有限制,则可以禁用这些资源的部署。 有关详细信息,请参阅配置负载测试

如果限制对虚拟网络的访问,则需要配置虚拟网络,以启用这些 Azure 负载测试和注入的 VM 之间的通信。

先决条件

  • 你的 Azure 帐户在虚拟网络上具有网络参与者角色或此角色的父级。 请参阅检查用户对 Azure 资源的访问权限以验证权限。
  • 用于 Azure 负载测试的子网必须有足够多的未分配 IP 地址来容纳用于测试的负载测试引擎数。 详细了解针对大规模负载配置测试
  • 不应将子网委派给任何其他 Azure 服务。 例如,不应将其委派给 Azure 容器实例 (ACI)。 详细了解子网委派
  • 子网不应启用 IPv6。 Azure 负载测试不支持已启用 IPv6 的子网。 详细了解适用于 Azure 虚拟网络的 IPv6
  • 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. 在左侧导航中选择“出站安全规则”

    屏幕截图显示 Azure 门户中的网络安全组概述页面,突出显示了出站安全规则。

  4. 选择“+ 添加”,添加新的出站安全规则。 输入以下信息以创建新规则。

    字段
    Source 任意
    源端口范围 *
    目标 任意
    目标端口范围 *
    Name azure-load-testing-outbound
    描述 用于协调负载测试所涉及的各种操作
  5. 选择“添加”将出站安全规则添加到网络安全组

配置负载测试脚本

运行 JMeter 脚本的测试引擎 VM 已注入到包含应用程序终结点的虚拟网络中。 现在,可以使用专用 IP 地址或使用网络中的名称解析直接引用 JMX 文件中的终结点。

例如,在子网范围为 10.179.0.0/18 的虚拟网络中,对于 IP 地址为 10.179.0.7 的终结点,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 负载均衡器公共 IP 地址,生成的流量可能会产生费用。 有关详细信息,请参阅虚拟网络定价信息

在 Azure 门户中配置虚拟网络

可以在负载测试创建/更新向导中指定虚拟网络配置设置。

  1. 使用 Azure 订阅的凭据登录到 Azure 门户

  2. 转到 Azure 负载测试资源,然后从左侧窗格中选择“测试”

  3. 通过以下两种方式之一打开负载测试创建/更新向导:

    • 如果要创建新的测试,请选择“+ 创建”>“上传 JMeter 脚本”

      显示“测试”页面的屏幕截图,其中突出显示了用于创建新测试的按钮。

    • 从列表中选择一个现有测试,然后选择“编辑”

      显示“测试”页面的屏幕截图,其中突出显示了用于编辑测试的按钮。

  4. 在“负载”选项卡上,选择“专用”流量模式,然后选择虚拟网络和子网。

    如果虚拟网络中有多个子网,请确保选择的子网将托管注入的测试引擎 VM。

    屏幕截图显示用于创建或更新负载测试的“负载”选项卡。

    重要

    确保有足够的权限来管理虚拟网络。 需要网络参与者角色。

  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. 检索子网 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 工作流触发后,负载测试将启动,此时即可访问虚拟网络中的专用托管应用程序终结点。

故障排除

要排查针对专用终结点创建和运行负载测试时出现的问题,请参阅如何排查专用终结点测试的问题

后续步骤