本主题提供关于如何配置 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 } |
在开始配置 Virtualize 以实现负载平衡之前,请确保配置了负载平衡器,以便只将“更改”传播到一个节点。
接下来,执行以下操作以确保更改随后通过共享文件系统(SAN 和/或 NAS)同步到其他节点:
在命令行中(针对无数据头启动):添加 refresh.enabled=true
到 /.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs
文件,然后重启服务器。例如:
eclipse.preferences.version=1 version=1 refresh.enabled=true |
-J-Dparasoft.auto.deploy.new=false
注意,Virtualize 集群中的部署最终将是一致的。当发送请求部署时,单个服务器处理请求,然后返回响应。文件系统将通知集群中的其他服务器,以进行一致性所需的更改。在某些情况下,这可能需要几秒钟。因此,可能会有一段时间,一些服务器还不知道在另一台服务器上发生了部署。
基于 MongoDB 的 Parasoft 数据存储库应该通过标识一个主数据存储库(其中包含您希望复制的数据),并创建一个副本集来配置集群。要做到这一点,请遵循以下步骤(从 MongoDB 文档中获取并修改):
创建密钥文件,副本集的每个成员将使用它们来对服务器进行相互身份验证。
若要生成用于密钥文件的伪随机数据,请发出以下 openssl 命令:
openssl rand -base64 741 > mongodb-keyfile chmod 600 mongodb-keyfile |
您可以使用您选择的任何方法生成密钥文件。始终确保密钥文件中存储的密码很长,并且包含大量的平均信息量。以这种方式使用 openssl 有助于生成这样一个密钥。
从主数据存储库开始,使用 -keyFile 和 -replSet 命令行选项启动副本集的每个成员(分别指定密钥文件和副本集的名称)。若要添加这些选项,请编辑数据存储库的 server.sh 或 server.bat 脚本文件(在调用 mongodb 的行上)。 例如:
mongod --keyFile /mysecretdirectory/mongodb-keyfile --replSet "rs0" |
连接到主数据存储库,并作为管理用户进行身份验证,该管理员用户由 server.sh 或 server.bat 脚本中的 M_USER 变量创建:
"rs.add("mongodb1.example.net:2424") |
在主数据存储库上,使用 rs.initiate() 初始化副本集:
rs.initiate() |
这将启动一个由当前成员组成的集合,该集合使用默认的副本集配置。
在主数据存储库上,使用 rs.conf()
验证初始 replica set 配置,以显示 replica set configuration 对象:
rs.conf() |
副本集配置对象应类似如下:
{ "_id" : "rs0", "version" : 1, "members" : [ { "_id" : 1, "host" : "mongodb0.example.net:27017" } ] } |
使用 rs.add() 方法将剩余的副本集成员添加到副本集。必须连接到主数据存储库,才能将成员添加到副本集。
在某些情况下,rs.add() 可以触发一个筛选机制/条件。如果连接到的数据存储库成为辅助存储库,则需要将 mongo shell 连接到新的主存储库,以便继续添加新的副本集成员。使用 rs.status() 来标识副本集中的主节点。
下面的例子添加了两个成员:
rs.add("mongodb1.example.net") rs.add("mongodb2.example.net") |
完成后,您就拥有了一个功能齐全的副本集。新的副本集将选择一个主节点。
使用 rs.status() 操作检查副本集的状态:
rs.status() |