销售电话: 1-800-867-1380

在混合环境中运行负载测试

注:本页面内容可能不完全适用中国大陆地区运营的 Windows Azure服务。如要了解不同地区 Windows Azure 服务的差异, 请参考本网站.

本主题涵盖在混合环境中运行 Visual Studio 负载测试的内容。“混合环境”是指负载测试组件承载在不同的环境中,比如在内部承载或以 Windows Azure 辅助角色的形式承载。例如,混合环境可以是这样的环境:测试代理在内部运行,而数据存储库位于 Windows Azure SQL Database 服务器上。这与 Windows Azure 中的 Visual Studio 负载测试概述中描述的系统相反。在该主题中,除工作站之外的所有组件都将作为 Windows Azure 辅助角色运行。

由于需要遵从法规或您应用程序特定的原因,可能需要在这些混合环境中运行负载测试。无论是哪种环境,本主题都会介绍可供您选择的选项以及如何搭建这些多变的应用场景。

作者:Jaimie Alva Bravo、Sidney Higa、Paolo Salvatori。

下载

可在下面的网站中找到这些过程需要的文件: VSLoadTestInMixedEnvironments

并发

权衡不同配置时使用的一个因素是:因在大型数据中心中运行许多进程而提升的“并发程度”。并发定义为系统的一种属性,此时有多个任务同时执行,任务之间还可能交互。限制并发的一个因素是可用的 IP 地址数。系统利用的 IP 地址越多,并发处理的程度越高。通常,可用的地址数取决于 IP 提供商的规模。如果您的服务级别协议级别较高,通常会分配有大量的 IP 地址。但此类协议不常见。但是,将 Windows Azure 用作平台时,您享有使用 Microsoft 数据中心及其资源的优势。数据中心提供大量的 IP 地址。Windows Azure 中的托管服务分配有虚拟 IP 地址。在本主题中,IP 地址由外向 (Internet) 负载平衡器(而不是托管服务)使用。提供大量地址是 Microsoft 数据中心的一项优势。还请注意,并不是所有系统都要求较高的并发程度。

这种提升的并发能力是在 Windows Azure 上运行负载测试的另一大优势。这种并发程度在大型数据中心之外是极难再现的。

因素

有六个因素影响并发程度。前两个因素是运行负载测试所在的环境:云环境和内部环境。

  • 内部



另外四个因素是负载测试的组件。它们分别是:

  • 测试控制器

  • 测试代理

  • 结果存储库

  • 测试系统

这四个组件显示如下:

负载测试因素

在图中,线条的相对粗细表示传输的数据量;线条越粗,数据量越大。测试控制器与结果存储库之间的数据传输量是最大的。测试系统与控制器之间的负载是最小的。(不过,实际负载取决于测试系统生成的日志记录量。)相关参考请参阅 Windows Azure 中的 Visual Studio 负载测试概述中的示意图。

note注意
为清楚起见,上图假定承载 Visual Studio 的工作站也同时承载测试控制器。此配置可加快 Visual Studio 与测试控制器之间的通信。负载测试期间,控制器将大量数据流式传输回 Visual Studio 以进行实时性能监视。

拓扑

考虑到这四个组件以及两种环境,显而易见有多种拓扑选择。在任一种环境中都可以承载负载测试的这四个组件。例如,下面说明了两种最简单的拓扑结构。

  1. 所有组件均位于云环境中。

  2. 所有组件均位于内部环境中。

为清楚起见,下表列出了这两种最简单的选择。

 

控制器 代理 存储库 测试系统 说明

内部

内部

内部

内部

有限的并发程度,内部环境外无网络通信流量。

较大并发程度(多个 IP 地址),云外无网络通信流量。

现在的拓扑结构都较为复杂。为简便起见,此表显示一个主要区别。在此表中,控制器在内部运行。

从代理到测试系统的通信流量不计算在内,这部分流量被认为是任何测试都会发生的成本。还请注意,以下各表中的网络通信流量具有货币成本。您需要为从数据中心传出的数据付费。内部通信流量不计费。有关定价详细信息,请参阅定价详细信息,并搜索“data transfers measured in GB”(以 GB 为单位衡量的数据传输)。

下一个表显示一个主要的区分点:测试控制器在内部运行。在这种情况下,组件之间的通信流量必须跨越边界,并发程度各不相同,具体取决于组件及其通信频率。

控制器在内部运行

控制器 代理 存储库 测试系统 说明

内部

内部

内部

有限的并发程度,从测试系统向控制器传输网络流量。

内部

内部

内部

有限的并发程度,从控制器向存储库传输网络流量。

内部

内部

有限的并发程度,从测试系统向控制器传输网络流量,并且传回存储库。

内部

内部

内部

较高的并发程度,从代理向控制器传输网络流量。

内部

内部

较高的并发程度,从代理和测试系统向控制器传输网络流量。

内部

内部

较高的并发程度,从代理向控制器传输网络流量,并且传回存储库。

内部

较高的并发程度,从代理和测试系统向控制器传输网络流量,并且传回存储库。

下表显示第二点主要区别。在下表中,控制器在云中运行。

控制器在云中运行

控制器 代理 存储库 测试系统 说明

内部

内部

内部

有限的并发程度,从代理和测试系统向控制器传输网络流量,并且传回存储库。

内部

内部

有限的并发程度,从代理向控制器传输网络流量,并且传回存储库。

内部

内部

有限的并发程度,从代理和测试系统向控制器传输网络流量。

较高的并发程度,从代理向控制器传输网络流量。

内部

内部

较高的并发程度,从测试系统向控制器传输网络流量,并且传回存储库。

内部

较高的并发程度,从控制器向存储库传输网络流量。

内部

较高的并发程度,从测试系统向控制器传输网络流量。

多个云环境

最高的并发程度,至少从 DC1 中的测试系统传输到 DC2 中的控制器(可能还需进行其他传输,具体取决于设置)。

建议

显示这些拓扑结构是为力求完整。拓扑结构的选择可能并不由您来决定。例如,如果您需要超过 100 GB 的 SQL Server 数据存储空间,则必须将其存储在内部;目前 100 GB 是 SQL Database 的上限。但是,如果您有一定的余地,则可以选择以下最佳拓扑结构。这些建议最为高效,并且可以在两个主要区分环境中(控制器位于内部以及控制器位于云环境中)提供最高的并发程度。

控制器在内部运行时最佳

控制器 代理 存储库 测试系统 说明

内部

内部

内部

较高的并发程度,从代理向控制器传输网络流量。

内部

内部

较高的并发程度,从代理和测试系统向控制器传输网络流量。

控制器在云中运行时最佳

控制器 代理 存储库 测试系统 说明

内部

内部

有限的并发程度,从代理和测试系统向控制器传输网络流量。

较高的并发程度,从代理向控制器传输网络流量。

多个云环境

最高的并发程度,至少从 DC1 中的测试系统传输到 DC2 中的控制器(可能还需进行其他传输,具体取决于设置)

提高的复杂性要求

在现实世界中,实际的组件布局会很复杂。待测试系统可能有许多子组件,每个子组件都作为辅助角色或 Web 角色运行或使用内部服务。例如,某个组件初始化系统,或提供验证服务。随后很可能有许多组件必须与系统的其他部分通信。这部分组件是负载测试系统本身(由控制器、代理和存储库构成)之外的组件。下图显示了由许多部分构成的系统。这只是用来演示实际解决方案可能由多个部分构成并且具有许多通信要求。系统细节并不是重点。

复杂配置示例

尽管如此复杂,仍可能根据需要将不同组件置于 Windows Azure 或内部环境中。下一节概述了所需步骤。

设置

本节中的设置是指设置 Windows Azure 进行负载测试文档中的基本设置之外的一组备选设置。其中的过程指定如何使用正确的组件设置管理门户。例如,它解释如何设置存储帐户,以及如何设置 Windows Azure Connect 组。

本节中的第一个备选设置支持您使用 SQL Database 作为结果存储库。第二个备选设置说明如何在每个辅助角色上设置端点。端点支持在代理、测试系统、测试控制器和(如果需要)辅助因素(承载 Visual Studio 的工作站)之间通信。在最简洁的模式中,该计算机位于内部。但如果您的应用程序要求您在测试执行过程中使用该计算机,则也可将其承载为 Windows Azure 辅助角色。

必备组件

需要以下组件:

  • 下载 LoadTest2010.bacpac 文件。

  • 可选。在辅助角色上安装 Visual Studio 2010 Ultimate。

    如果想在辅助角色上运行测试控制器,请在该辅助角色上安装 Visual Studio 2010 Ultimate。在 Visual Studio 中,向 Windows Azure 项目添加辅助角色。确保已启用远程桌面。将该辅助角色添加至某个连接组,以便该角色连接到您的内部站点。使用远程桌面连接该辅助角色,然后安装 Visual Studio 2010 Ultimate。

使用 SQL BACPAC 设置 Windows Azure SQL Database

使用此方法可将结果存储在 SQL Database 上,以存储负载测试数据。将名为 LoadTest2010.bacpac 的文件上载到您的 Azure 存储帐户。您还必须具备下列必备组件:

  1. 一个 SQL Database 帐户。

  2. 在订阅中创建的 SQL Server 实例。有关详细信息,请参阅如何创建 Windows Azure SQL Database 服务器

  3. 拥有修改服务器实例权限的登录名和密码。

使用 BACPAC 设置 SQL Database

  1. 将 LoadTest2010.bacpac 文件上载到您的 Azure 存储帐户。

    使用 StorageServicesSmartClient 将该文件上载到某个公共容器。一旦上载 .dacpac 文件,即可使用管理门户的导入功能来创建数据库。

  2. 在管理门户中,单击“数据库”

  3. 展开包含您使用的 SQL Database 服务器的订阅,然后选择该服务器。

  4. 在功能区的“数据库”部分中,单击“导入”

  5. 按照以下网站上的说明导入 LoadTest2010.bacpac 文件:如何导入数据层应用程序 (Windows Azure SQL Database)

在 SQL Database 中创建存储库之后,请配置测试控制器。具体而言,应设置“结果存储区”的连接字符串。用于设置该值的对话框仅在 Visual Studio Ultimate 中提供。但是在您继续操作之前需要做出一项选择。决定是否运行测试控制器:

  1. 从内部计算机。

    如果选择此选项,请从内部计算机执行接下来的一组指令。

  2. 从 Windows Azure 上的辅助角色运行 Visual Studio 实例。

    如果已决定从 Windows Azure 上的辅助角色运行测试控制器:

    1. 创建 Windows Azure Connect 组。

    2. 向该组添加内部工作站。

    3. 部署托管服务后,使用远程桌面连接到要承载 Visual Studio 的辅助角色。

    4. 从网络上的安装 (.msi) 文件安装 Visual Studio 2010 Ultimate。

配置测试控制器的内部实例

  1. 以管理员身份运行 Visual Studio。

  2. 在 Visual Studio 的“测试”菜单中,单击“管理测试控制器”

  3. “加载测试结果存储区”文本下,单击省略号按钮。

  4. “连接属性”对话框中,粘贴 SQL Database 服务器的名称。

  5. “登录到服务器”文本下,选择“使用 SQL Server 身份验证”选项。

  6. “用户名”值设置为 SQL Database 管理员的登录名。

  7. “密码”字段值设置为 SQL Database 管理员的密码值。

  8. “连接到数据库”部分中,选择 LoadTest2010 数据库。

    如果连接字符串和凭据正确,请检查“配置测试控制器”对话框。该对话框将填充正确值。

使用端点而不是 Azure Connect 组

可用另一种方式替代使用连接组:在每个辅助角色上配置端点,以便在不同实例之间通信。由于这种连接更可靠,所以此方式有一定的优势。使用以下步骤试用此替代方式。

在辅助角色实例上配置端点

  1. 在 Visual Studio 中打开负载测试项目。

  2. 为每个辅助角色配置内部 TCP 端点。有关向角色添加端点的一般说明,请参阅如何定义角色的内部端点。为每个端点指定不同的专用端口号。下表显示了每个角色的端点配置。请注意,所有这些端口都是使用 TCP 协议的专用端口:

     

    角色名称 端口名称 端口号

    代理

    SQL

    1433

    代理

    WFS

    137-445

    代理

    代理侦听器端口

    6910

    代理

    AgentDownload

    80

    控制器

    SQL

    1433

    控制器

    WFS

    137-445

    控制器

    控制器

    6910

    控制器

    AgentDownload

    80

    控制器

    控制器侦听器端口

    6901

    控制器

    代理

    6910

    控制器/工作站

    回叫

    49152

  3. 配置特定端口,允许控制器向代理发送消息。在承载控制器的辅助角色上使用以下注册表项:

    1. HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\VisualStudio\10.0\EnterpriseTools\QualityTools\ListenPortRange\PortRangeStart

    2. HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\VisualStudio\10.0\EnterpriseTools\QualityTools\ListenPortRange\PortRangeEnd

  4. 在辅助角色启动过程中,运行 setupwfw.cmd 文件。

  5. 使用远程桌面连接每个角色,并执行以下操作:

    1. 打开以下目录:\Windows\System32\drivers\etc\

      打开“主机”文件对其进行编辑。可使用 Notepad.exe 打开该文件。请将“主机”文件放在具有该主机名称和 IP 地址的每个系统上。文件编辑要靠人工完成。若要查找某个角色的 IP 地址,请在每个角色上打开一个命令窗口,然后键入 IPCONFIG。主机文件的示例:

    2. 
      # Copyright (c) 1993-2009 Microsoft Corp.
      #
      # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
      #
      # This file contains the mappings of IP addresses to host names. Each
      # entry should be kept on an individual line. The IP address should
      # be placed in the first column followed by the corresponding host name.
      # The IP address and the host name should be separated by at least one
      # space.
      #
      # Additionally, comments (such as these) may be inserted on individual
      # lines or following the machine name denoted by a '#' symbol.
      #
      # For example:
      #
      #      102.54.94.97     rhino.acme.com          # source server
      #       38.25.63.10     x.acme.com              # x client host
      
      # localhost name resolution is handled within DNS itself.
      #127.0.0.1       localhost
      #::1             localhost
      10.115.222.131 RD00155D317984    # workstation
      10.115.218.125 RD00155D3175BF    # Controller
      10.115.222.142 RD001455316FEE    # Agent00
      10.115.196.26 RD00D32D6747       # Agent01
      10.115.228.52  RD000155D317EBD  # Agent02
      10.115.222.131 RD00155D317984    # Agent03
      
      
  6. 每个角色都可以通信,您可以在每个系统上安装二进制文件。若要加快该过程,请将二进制文件放入 Blob 存储区。此外,运行启动任务中的其他命令。有关详细信息,请参阅如何为角色定义启动任务)。

  7. 在 SQL Server 上,为要访问结果数据库的控制器和工作站创建本地 SQL 帐户。然后配置该存储库使用这些帐户。在您设置控制器时创建该数据库,然后配置该数据库使用 IDE 中的帐户。


生成日期:

2013-09-12
本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈

社区附加资源

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft