您可以设置 Parasoft Virtualize 服务器集群,以实现水平扩展和容错。水平扩展通常用于 优化性能测试和基于云的基础设施,以实现持续集成和持续交付。Fault tolerance 通常用于增加业务关键后端系统的正常运行时间和/或促进灾难恢复。

在本章节中

前提条件

负载平衡器配置

配置负载平衡器以将负载路由到每个虚拟化服务器。如果您正在使用 Parasoft CTP 或通过与 Virtualize REST API 资产交互的任何其他工具),您需要执行以下部分中概述的附加配置。

以下说明适用于任何负载平衡器,但我们使用 F5 本地通讯报文管理器(LTM)作为示例,以提供关于负载平衡器配置的一般指导。

配置源地址关联持久性

本节描述如何为 Parasoft CTP 配置源关联持久性。同样的原则也可以应用于配置任何通过与 Virtualize REST API 资产交互的工具。

源地址关联持久性确保来自 Parasoft CTP 的所有调用都路由到同一个节点。会话关联有时称为“粘性会话”。

为以下端口启用源地址关联持久性:

使用 F5 Local Traffic Manager (LTM),通过启用 Match Across Services 和 Match Across Virtual Servers 选项配置源地址关联持久性。例如,可以使用默认的源地址配置文件或创建自定义配置文件来启用源地址关联持久性。下表显示了默认 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
}

Virtualize 配置

确保已配置负载平衡器,以便在为负载平衡配置 Virtualize 之前,更改仅传播到一个节点。 

  1. 在集群中共享 VirtualAssets 项目及其所有相关内容(.pmpdd, .pvadd, .pjcdd, VirtualAssets.xml, .git, etc.)。我们建议使用 git fetch 命令作为提交后触发器来同步共享。
  2. 启用使用本机挂钩或轮询的刷新:
  3. 在集群中的所有节点上,将以下 Java 选项添加到启动命令中,以放置服务器。

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

  4. 重启服务器。

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

Parasoft 数据存储库配置

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

  1. 停止所有您希望成为复制集一部分的数据存储库。
  2. 启动主存储库服务器:

    ./bin/mongod --port 2424 --dbpath repositories

    如果 "repositories” 目录不存在,则应该创建一个。

  3. 连接到 mongo shell,并创建管理员数据库。

    ./bin/mongo --port 2424
    use admin
  4. 运行以下命令,创建管理员用户:

    db.createUser({user:"<username>",pwd:"<password>",roles:[{role:"root",db:"admin"}]});

    如果因为用户已存在而导致命令行失败,请运行以下命令行:

    db.grantRolesToUser('admin',[{role:"<role>"}])
  5. 停止主 mongo 服务器。
  6. 创建密匙文件。以下示例显示了基本命令:

    openssl rand -base64 741 > mongodb-keyfile
    chmod 600 mongodb-keyfile
  7. 将密钥文件复制到复制集的每个成员。

  8. 使用以下命令启动复制集的每个成员:

    ./bin/mongod --replSet "rs0" --dbpath repositories --port 2424 --auth --keyFile <mongodb-keyfile>
  9. 在主服务器上,连接到 mongo shell,并在提示时提供密码。

    ./bin/mongo localhost:2424/admin -u <admin_user> -p
  10. 运行以下命令,验证凭据:

    use admin
    db.auth("<siteRootAdmin>", "<password>");

    这个 shell 应该返回 1

  11. 使用以下命令初始化复制集:

    rs.initiate()
  12.  使用以下命令验证复制集配置:

    rs.conf()

    如果主服务器的主机不正确,请使用以下命令更改主机:

    cfg = rs.conf()
    cfg.members[0].host = "mongodb1.example.net:27017"
    rs.reconfig(cfg)
  13.  对于每个辅助服务器,在主服务器的 mongo shell 中运行以下命令:

    rs.add("<secondary>:<port>")

其他信息