You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

本主题提供关于如何配置 Parasoft Virtualize 服务器集群的建议,以实现以下好处:

  • Horizontal scaling (horsepower): 通常用于优化性能测试和基于云的基础设施,以实现持续集成/持续交付。
  • Fault tolerance: 通常用于增加业务关键后端系统的正常运行时间和/或促进灾难恢复。

本主题的章节包括:

前提条件

  • 多个 Virtualize 服务器,所有服务器都具有完全相同的版本(如果适用,包括相同的服务包),并且都授权 Virtualize 命令行(virtualizecli)。可部署容器的虚拟化服务器不支持集群。
  • 共享文件系统
  • 承载多个 Virtualize 实例的多个服务器

负载均衡器硬件和软件配置

在所有情况下,都需要配置你的负载均衡器,以到达每个 Virtualize 服务器。

如果你正在使用 Parasoft CTP(或通过 Virtualize REST API 提供/复制/修改/…资产的任何其他工具),你还需要执行以下部分中概述的附加配置。

注意,以下指令适用于任何负载平衡器。本文提供了 F5 Local Traffic Manager (LTM) 示例,让你了解如何在特定的负载平衡器上执行这些通用指南。

配置源地址关联持久性

本节解释如何为 Parasoft CTP 配置源关联持久性。同样的原则也可以应用于配置其他任何通过 Virtualize REST API 提供/复制/修改/…资产的工具。

源地址关联持久性将确保来自 Parasoft CTP 的所有调用都指向同一个节点。这种会话关联也称为“粘性会话”。

你需要为以下端口启用源地址关联持久性(会话粘性):

  • 9080 - Virtualize 默认的 HTTP 连接器(必需)
  • 9443 - Virtualize 默认的 SSL 连接器(必需)
  • 2424 - 数据资源库(如果数据资源库存在于该节点上,则必需)
  • 9617 – 内置的事件监视器提供程序服务(Active MQ)
  • 9618 – 内置的服务器点击统计提供程序服务
  • 9619 – 内置的 JDBC 提供程序服务

使用 F5 Local Traffic Manager (LTM),通过启用 
“跨服务匹配”和“跨虚拟服务器匹配”来配置源地址关联持久性。例如,如果希望使用 F5s LTM 实现源地址关联持久性,则可以使用默认的 source_addr 概要文件或创建自定义概要文件。下表显示了默认 source_addr 配置文件的设置和值。

设置说明 默认值
名称为概要文件定义唯一名称。必需。没有默认值
持久性类型定义持久性概要文件的类型。必需。源地址关联
跨服务匹配指示从客户端 IP 地址到同一虚拟 IP 地址的所有持久连接也应到同一节点。已启用
匹配跨虚拟服务器指示来自同一客户端 IP 地址的所有持久连接都应指向同一节点已启用
跨池匹配指示 LTM 系统可以使用包含此持久性条目的任何池。已禁用
超时时间指示持久性条目超时的秒数。180
掩码定义 LTM 系统在与现有持久性条目匹配之前应该使用的掩码。0.0.0.0
映射代理启用或禁用代理映射。已启用

使用基于优先级的成员激活

基于优先级的成员激活确保来自任何源的所有调用都将首先到达主机(如果可能的话)。要配置此功能,请将第一台机器设置为最高优先级。例如,下面是一个示例池配置文件,来自本地流量管理器的 F5 文档:

pool my_pool {
         lb_mode fastest
         min active members 2
member 10.12.10.7:80 priority 3
member 10.12.10.8:80 priority 3
member 10.12.10.9:80 priority 3
member 10.12.10.4:80 priority 2
member 10.12.10.5:80 priority 2
member 10.12.10.6:80 priority 2
member 10.12.10.1:80 priority 1
member 10.12.10.2:80 priority 1
member 10.12.10.3:80 priority 1
}

Parasoft Virtualize 配置

在开始配置 Virtualize 以实现负载平衡之前,请确保配置了负载平衡器,以便只将“更改”传播到一个节点。

接下来,执行以下操作以确保更改随后通过共享文件系统(SAN 和/或 NAS)同步到其他节点:

  1. 在集群中共享 VirtualAssets 项目及其所有相关内容(.pmpdd, .pvadd, .pjcdd, VirtualAssets.xml, .git, etc.)。一个典型的设置是将 NFS 文件夹挂载为集群每个节点中的 VirtualAssets 项目。



  2. 启用使用本机挂钩或轮询的刷新:
    • 在用户界面中:导航到 Window> Preference> General> Workspace,选择 Refreshusing native hooks or polling,然后重启服务器。



    • 在命令行中(针对无数据头启动):添加 refresh.enabled=true 到 /.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs 文件,然后重启服务器。例如:

      eclipse.preferences.version=1 
      version=1
      refresh.enabled=true
  3. 将服务器置于“集群模式”:
    1. 在集群中的所有节点上,将以下 Java 选项添加到启动命令中。

      -J-Dparasoft.auto.deploy.new=false

    2. 重启服务器。

注意,Virtualize 集群中的部署最终将是一致的。当发送请求部署时,单个服务器处理请求,然后返回响应。文件系统将通知集群中的其他服务器,以进行一致性所需的更改。在某些情况下,这可能需要几秒钟。因此,可能会有一段时间,一些服务器还不知道在另一台服务器上发生了部署。

Parasoft 数据存储库配置

基于 MongoDB 的 Parasoft 数据存储库应该通过标识一个主数据存储库(其中包含你希望复制的数据),并创建一个复制集来配置集群。要做到这一点,请遵循以下步骤(从 MongoDB 文档中获取并修改):

  1. 停止所有你希望成为复制集一部分的数据存储库。
  2. 创建密钥文件,复制集的每个成员将使用该密钥文件彼此对服务器进行身份验证。
    若要生成用于密钥文件的伪随机数据,请发出以下 openssl 命令:

    openssl rand -base64 741 > mongodb-keyfile 
    chmod 600 mongodb-keyfile

    你可以使用你选择的任何方法生成密钥文件。始终确保密钥文件中存储的密码很长,并且包含大量的平均信息量。以这种方式使用 openssl 有助于生成这样一个密钥。

  3. 将 mongodb-keyfile 密钥文件复制到复制集的每个成员。将这些文件的权限设置为 600,以便只有文件的所有者才能读取或编写此文件,以防止系统上的其他用户访问共享机密。
  4. 从主数据存储库开始,使用 -keyFile 和 -replSet 命令行选项启动副本集的每个成员(分别指定密钥文件和副本集的名称)。若要添加这些选项,请编辑数据存储库的 server.sh 或 server.bat 脚本文件(在调用 mongodb 的行上)。  例如:

    mongod --keyFile /mysecretdirectory/mongodb-keyfile --replSet "rs0"
  5. 连接到主数据存储库,并作为管理用户进行身份验证,该管理员用户由 server.sh 或 server.bat 脚本中的 M_USER 变量创建:

    "rs.add("mongodb1.example.net:2424")
  6. (可选)如果希望增加副本集的编写安全性,请修改主数据存储库的编写关注点。使用默认设置,当一个成员确认写入时,客户端返回;你可以改变这一点以使大多数人必须承认编写。有关更多详情,请查阅 MongoDB 文档。
  7. 在主数据存储库上,使用 rs.initiate() 初始化副本集:

    rs.initiate()

    这将启动一个由当前成员组成的集合,该集合使用默认的复制集配置。

  8. 在主数据仓库上,使用 rs.conf() 验证初始 replica set 配置,以显示 replica set configuration 对象:

    rs.conf() 

    复制集配置对象应类似如下:

    {
        "_id" : "rs0",
        "version" : 1,
        "members" : [
           {
               "_id" : 1,
               "host" : "mongodb0.example.net:27017"
           }
         ]
    }
  9. 使用 rs.add() 方法将剩余的复制集成员添加到复制集。必须连接到主数据存储库,才能将成员添加到复制集。
    在某些情况下,rs.add() 可以触发一个选举。如果连接到的数据存储库成为辅助存储库,则需要将 mongo shell 连接到新的主存储库,以便继续添加新的副本集成员。使用 rs.status() 来标识复制集中的主节点。
    下面的例子添加了两个成员:

    rs.add("mongodb1.example.net")
    rs.add("mongodb2.example.net")

    完成后,你就拥有了一个功能齐全的副本集。新的复制集将选择一个主节点。

  10. 使用 rs.status() 操作检查复制集的状态:

    rs.status()

技巧提示

Provisioning

  • CTP 和 Virtualize 桌面可以修改实时资产。当节点通过负载平衡器进行通信时,CTP 和 Virtualize 将集群视为单个服务器。注意,发送到 CTP 的服务器名(在 Virtualize 服务器或 localsettings.properties 中配置)必须在所有节点上相同。
  • 集群环境不支持录制。录制应该在资产提升之前的登台基础设施上执行。

资产提升

  • 使用源代码控制存储“生产级”资产和版本信息。将资产检出到共享文件系统中,以便进行初始节点配置。

消耗

  • 所有 AUT 流量都被发送到负载均衡器,并使用 在负载平衡器后面设置 Virtualize 服务器集群中提到的设置进行适当的过滤。
  • 为了确保更改只发送到一个服务器,应该配置 Virtualize 服务器的负载平衡器,使用 在负载平衡器后面设置 Virtualize 服务器集群中定义的技术将配置消息或“更改”消息发送到集群中的单个节点。应该为处理 Virtualize 桌面或 CTP 发送的“更改”的端口(默认为 9080/9443)和/或路径(/axis2 SOAP 或 /soavirt/api/ REST)执行此操作。
  • 为了确保有状态资产的一致行为, Virutalize 服务器负载平衡器必须将单个会话的所有流量定向到单个节点。注意:
    • 有状态资产的流量应该只发送到一个节点。换句话说,它不应该在“first available”中运行,以确保多个资产不会多次更改状态。
    • 如果有状态的资产打算跨会话保存状态,那么节点将需要将状态存储在同步数据源中(比如,数据存储库)。
  • No labels