Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from space FUNCTDEV and version SOAVIRT_9.10.6_CTP_3.1.2

...

Table of Contents
maxLevel1

前提条件

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

负载均衡器硬件和软件配置
Anchor
Load Balancer Hardware and Software Configuration
Load Balancer Hardware and Software Configuration

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

...

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

配置源地址关联持续性

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

...

设置说明 默认值
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 文档:

Code Block
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 以实现负载平衡之前,请确保配置了负载平衡器,以便只将“更改”传播到一个节点。

...

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

Parasoft 数据存储库配置

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

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

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

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

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

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

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

    Code Block
    rs.initiate()

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

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

    Code Block
    rs.conf() 

    副本集配置对象应类似如下:

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

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

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

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

    Code Block
    rs.status()

技巧提示

Provisioning

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

资产提升

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

消耗

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