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

排查针对专用终结点运行负载测试的问题。

本文解决了在使用 Azure 负载测试针对专用应用程序终结点运行负载测试时可能出现的问题。 Azure 负载测试服务注入在包含应用程序终结点的虚拟网络中生成负载所需的 Azure 资源。 在此过程中,可能会遇到与虚拟网络配置和基于角色的访问控制 (RBAC) 权限相关的一些问题。

Azure 负载测试服务需要从虚拟网络到以下目标的出站连接。

目标 需要连接
*.azure.com Azure 负载测试服务需要访问此目标才能与 Azure Batch 服务进行交互。
*.windows.net Azure 负载测试服务需要访问此目标才能与 Azure 服务总线、Azure 事件网格和 Azure 存储进行交互。 若要了解有关这些服务中的防火墙配置的详细信息,请参阅
  • Azure 服务总线常见问题解答
  • Azure 事件中心防火墙规则
  • 配置 Azure 存储防火墙和虚拟网络
  • *.azurecr.io Azure 负载测试服务需要访问此目标才能与 Azure 容器注册表进行交互。 若要详细了解 Azure 容器注册表中的防火墙配置,请参阅
  • 防火墙访问规则 - Azure 容器注册表
  • (可选)需要与 *.maven.org 和 *.github.com 建立出站连接才能下载测试配置中包含的任何插件。

    通过部署 Azure 虚拟机排查虚拟网络的连接问题

    若要测试虚拟网络的连接,请执行以下操作:

    1. 在 Azure 负载测试的测试配置中使用的子网中创建具有公共 IP 的虚拟机。 此虚拟机仅用于诊断网络连接,可在故障排除后将其删除。 Azure 负载测试服务不使用此虚拟机来生成负载。

      运行以下 Azure CLI 命令以创建虚拟机。

      az vm create --resource-group <your-resource-group> --name <your-virtual-machine-name> --image UbuntuLTS --generate-ssh-keys --subnet <your-subnet>
      

      虚拟机可以是任何类型。

    2. 使用 Azure Bastion 登录到虚拟机。

    3. 测试从虚拟机到 azure.com 的出站连接

      • 若要验证域名系统 (DNS) 查找,请运行以下命令

        nslookup azure.com
        

        与 azure.com 关联的 IP 地址的响应指示连接成功。

        显示 DNS 验证成功响应的屏幕截图。

      • 若要验证与“azure.com”的连接,请运行以下命令

        curl azure.com -I
        

        HTTP 响应指示连接成功。

        显示连接验证成功响应的屏幕截图。

      1. 对“windows.net”和“azurecr.io”重复步骤 3,以验证 DNS 查找和这些目标的连接。

    还可以使用任何其他方法来确保从子网到 *.azure.com、*.windows.net 和 *.azurecr.io 的连接。

    执行连接测试时,可能会因策略约束或防火墙限制而遇到问题。 按照错误消息执行所需的任何纠正措施,然后重试连接测试。

    使用可操作错误消息排查问题

    创建或更新负载测试失败并显示 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. 或者,选择另一个路由表。

    创建或更新负载测试失败并显示 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 负载测试的子网必须有足够多的未分配 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 负载均衡器。

    请确保订阅中至少有一个公共 IP 地址的配额可用于负载测试。

    启动负载测试失败并显示 Subnet with name "AzureFirewallSubnet" cannot be used for load testing (ALTVNET017)

    子网 AzureFirewallSubnet 已保留,不能将其用于 Azure 负载测试。 选择另一个子网进行负载测试。

    后续步骤