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

本主题的章节包括:

前提条件

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

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

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

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

配置源地址关联持续性

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

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

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

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

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

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

基于优先级的会员激活可确保所有调用将首先到达主机(如果可能)。要配置此功能, 请将第一台机器的优先级设置为最高。例如,下面是一个示例池配置文件,来自本地通讯报文管理器的 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. 启用使用本机挂钩或轮询的刷新:
  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

资产提升

消耗