配置 Liberty 集合体副本集
可以配置集合体副本集。副本集为 Liberty 管理域提供高可用管理功能。


开始之前
collectiveController-1.0 功能部件及其功能仅在 WebSphere® Application Server Liberty Network Deployment 和 WebSphere Application Server Liberty for z/OS® 中可用。该功能部件在 WebSphere Application Server Liberty 或 WebSphere Application Server Liberty Core 中不可用。如果您已安装 WebSphere Application Server Liberty Network Deployment,那么可以使用其 collectiveController-1.0 功能部件来处理 WebSphere Application Server Liberty 或 WebSphere Application Server Liberty Core 安装中的集合体成员。集合体成员可能来自任何 WebSphere Application Server Liberty 发行版。
关于此任务
副本集是配置为一起工作的一组集合体控制器。每个副本都包含集合中其他副本已处理的所有存储库更新。因此,每次成员或客户机与集合体交互时,都不必与特定集合体控制器进行连接;在副本集中配置的任何集合体控制器都可以提供相同的数据。
有关创建和配置集合体控制器的详细指示信息,请参阅配置 Liberty 集合体。
您可完成以下过程以配置集合体副本集:
请参阅示例:创建并激活副本集以获取有关创建由同一主机上的三个集合体控制器组成的副本集的示例。
副本集需要奇数数目的副本。
过程
- 将副本添加到现有副本集。
例如,在副本集的生存期内,可能必须将一个或多个副本添加到现有集合,以提高容量。
副本集中的现有副本不需要对配置进行任何更新。您可更新它们以便它们在 server.xml 文件中的配置更准确地反映构成副本集的副本,但此更新不必要,并且不影响它们的行为。
注: 不必在集合内现有副本的 server.xml 文件中更改 replicaSet 值。不需要更改现有副本的配置。如果确实想要在集合内现有副本的配置中更新 replicaSet 值,以便配置值在集合中的所有副本之间是一致的,那么必须在现有副本的配置中将 isInitialReplicaSet 值设置为 false。改变 replicaSet 值后,它描述已更改副本集而不是初始副本集。注: 引用副本时,必须保持一致,并使用相同 host:port 值。如果使用主机名,那么必须始终使用。或者,如果使用 IP 地址,那么必须始终使用。要添加副本,请执行以下步骤:
- 确保现有副本集正在运行,而且大多数副本都可供使用。
- 创建将成为新集合体控制器的服务器。
wlp/bin/server create MyNewController
- 进行复制以将新服务器转换为集合体控制器。
wlp/bin/collective replicate MyNewController --host=host_of_running_controller --port=https_port_of_running_controller --user=userName_for_running_controller --password=userPassword_for_running_controller --keystorePassword=keystore_password_for_new_controller
replicate 命令用于将 XML 输出写入控制台屏幕。将输出复制到 server.xml 文件。
要将此命令的输出写入文件,而不是写入控制台屏幕,请指定 --createConfigFile=output_file_path 参数。然后,通过将 include 语句添加到 server.xml 文件来将输出的文件包含在集合体配置中:<include location=output_file_path />
- 使用 replicate 命令的输出来配置新副本的 server.xml 文件。 将 replicate 命令的 XML 输出复制到 server.xml 文件。可按如下所示修改副本配置:下面举例说明了可添加到新副本 server.xml 文件的内容:
- 必需设置:值必须显式设置。replicate 命令输出的 XML 包含此配置,对于这些设置而言已经足够。
- hostAuthInfo
- 主机认证信息,包含远程客户机启动服务器时所需的属性。仅当新副本的主机不支持 SSH 时才需要此设置。通常,Linux 主机支持 SSH,而 Windows 主机不支持 SSH。因此,可能只有 Windows 主机上需要此设置。可通过下列两者中的任何一种方式对副本设置 RPC 凭证:
- 将 rpcUser 设置为副本所在的主机的操作系统登录用户标识,并将 rpcUserPassword 设置为该用户标识的操作系统登录密码。例如,如果使用用户
test1 和密码 test1pwd 登录副本计算机,请将 hostAuthInfo 元素更改为以下内容:
<hostAuthInfo rpcUser="test1" rpcUserPassword="test1pwd" />
- 如果已向集合体控制器注册副本主机,请将 hostAuthInfo useHostCredentials 设置为 true 以便该副本从其主机继承 RPC 凭证。
<hostAuthInfo useHostCredentials="true" />
有关 hostAuthInfo 设置的信息,请参阅覆盖 Liberty 服务器主机信息。
- 将 rpcUser 设置为副本所在的主机的操作系统登录用户标识,并将 rpcUserPassword 设置为该用户标识的操作系统登录密码。例如,如果使用用户
test1 和密码 test1pwd 登录副本计算机,请将 hostAuthInfo 元素更改为以下内容:
- replicaSet
- 以空格分隔的列表,其中包含副本集中每个 replicaHosts 和 replicaPorts 的 host:port,不包括现在要添加到集合的集合体控制器的值。例如,
此集合中至少有一个值必须已成为现有副本集的副本。original.host.com:10001 some.other.host.com:10003
- 可选的设置:这些设置为缺省设置,但可以更改。
- isInitialReplicaSet
- False
- replicaHost
- 各个副本的主机名
- replicaPort
- 各个副本的端口
此端口不是集合体控制器的 HTTP 或 HTTPS 端口,但它是副本集的副本之间进行通信所使用的唯一端口。
- repositoryDir
- 用来存储该存储库数据的目录位置
<collectiveController replicaHost="localhost" replicaPort="10012" replicaSet="localhost:10010 localhost:10011" isInitialReplicaSet="false"/>
replicate 命令输出的 XML 将需要更新服务器的安全性配置并指定 collectiveRootKeys 密钥库密码。服务器的安全性配置必须与原始集合体控制器的配置完全相同,并且 collectiveRootKeys 密钥库密码必须是用作原始集合体控制器的 collectiveRootKeys 密钥库密码的密码。如果副本是通过配置 Liberty 集合体中创建的控制器创建的,那么新控制器的配置必须包含以下内容:<quickStartSecurity userName="adminUser" userPassword="adminPassword" /> <!-- collective root signers keystore --> <keyStore id="collectiveRootKeys" password="yourPassword" location="${server.config.dir}/resources/collective/rootKeys.jks" />
- 必需设置:
- 通过启动新集合体控制器来启动新副本。
- 确认原始集合体控制器已成功连接至新副本。在原始集合体控制器的 messages.log 文件和副本中查找消息 CWWKX6009I。 提示: 对于运行 replicate 和 addReplica 命令的脚本,在 replicate 命令运行后添加 10 秒等待时间以在运行 addReplica 命令前确保原始集合体控制器和副本连接。
- 对集合体实用程序调用 addReplica 操作以激活新副本。addReplica 集的参数必须为要添加的副本的副本端点(格式为“replicaHost:replicaPort”)。
wlp/bin/collective addReplica localhost:10012 --host=host_of_running_controller --port=port_of_running_controller --user=user_for_running_controller --password=user_password
- 可选: 如有必要,可以修改初始副本集的缺省配置。此步骤是建议步骤,但不是必需步骤。
创建初始集合体控制器时会配置初始副本集。如果必须修改缺省副本配置,那么可以在 server.xml 文件中更改下列属性:
可选设置:这些值为缺省值,但可以更改。- replicaHost
- 各个副本的主机名
- replicaPort
- 各个副本的端口
此端口不是集合体控制器的 HTTP 或 HTTPS 端口,但它是副本集的副本之间进行通信所使用的唯一端口。
- repositoryDir
- 用来存储该存储库数据的目录位置
示例:创建并激活副本集
此示例描述如何创建副本集然后将其激活。副本集必须具有至少三个副本(最好在不同主机上)以实现高可用性。此示例在同一主机上具有多个副本,这要求您对副本指定唯一端口号。如果副本在不同主机上,那么这些副本可使用相同端口号。
- 创建副本集。
要创建副本集,应增加集合体控制器数目并配置它们以便它们可相互通信。每个新集合体控制器称为副本,因为所添加集合体控制器的安全性配置与原始控制器相同,并且写至任何一个控制器的所有信息自动复制到所有其他活动控制器。配置后,副本集中的所有集合体控制器可与原始控制器执行相同操作。
- 如果没有集合体控制器,请创建集合体控制器。请参阅配置 Liberty 集合体的步骤 1。
- 确保现有集合体控制器正在运行。对于名为 myController 的现有控制器,请运行 status 命令:
如果集合体控制器未在运行,请使用 start 或 run 命令启动该集合体控制器:wlp/bin/server status myController
wlp/bin/server start myController
- 创建将成为新集合体控制器的服务器。
wlp/bin/server create myController2
- 将现有集合体控制器配置复制到新集合体控制器。新集合体控制器称为副本。
运行使用现有集合体控制器的管理安全域配置的 replicate 命令并为该副本设置新的密钥库密码。查看现有集合体控制器的 server.xml 文件以查找 --host、--port、--user 和 --password 参数的值。对于 --keystorePassword,设置要用于密钥库的值,例如,myController2。要获取有关这些必需参数和可选参数的信息,请在命令行运行 collective help replicate。
wlp/bin/collective replicate myController2 --host=host_of_existing_controller --port=https_port_of_existing_controller --user=userName_for_existing_controller --password=userPassword_for_existing_controller --keystorePassword=keystore_password_for_new_controller
如果系统提示您接受证书链,请输入 y(是)。
replicate 命令用于将 XML 输出写入控制台屏幕。将输出复制到 server.xml 文件。
要将此命令的输出写入文件,而不是写入控制台屏幕,请指定 --createConfigFile=output_file_path 参数。然后,通过将 include 语句添加到 server.xml 文件来将输出的文件包含在集合体配置中:<include location=output_file_path />
- 将 replicate 命令的 XML 输出添加至副本的 server.xml 文件并在必要时编辑参数值。
- 确保 httpEndpoint 元素设置在主机上充当唯一端口号的副本 httpPort 和 httpsPort 值。例如,假定名为
myController 的原始控制器和副本都在同一本地主机上,并且 myController 具有以下 httpEndpoint 元素:
将 myController2 的值更改为:<httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="9080" httpsPort="9443" />
<httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="9085" httpsPort="9448" />
- 设置 hostAuthInfo 的 RPC 凭证。可通过下列两者中的任何一种方式对副本设置 RPC 凭证:
- 设置 hostAuthInfo RPC 用户和密码值。将 rpcUser 设置为副本所在的主机的操作系统登录用户标识,并将 rpcUserPassword 设置为该用户标识的操作系统登录密码。例如,如果使用用户
test1 和密码 test1pwd 登录副本计算机,请将 hostAuthInfo 元素更改为以下内容:
<hostAuthInfo rpcUser="test1" rpcUserPassword="test1pwd" />
- 如果已向集合体控制器注册副本主机,请将 hostAuthInfo useHostCredentials 设置为 true 以便该副本从其主机继承 RPC 凭证。
<hostAuthInfo useHostCredentials="true" />
有关 hostAuthInfo 设置的信息,请参阅覆盖 Liberty 服务器主机信息。
- 设置 hostAuthInfo RPC 用户和密码值。将 rpcUser 设置为副本所在的主机的操作系统登录用户标识,并将 rpcUserPassword 设置为该用户标识的操作系统登录密码。例如,如果使用用户
test1 和密码 test1pwd 登录副本计算机,请将 hostAuthInfo 元素更改为以下内容:
- 确保 replicaPort 为副本设置在副本集中唯一的端口号,并确保 replicaSet 设置用于标识副本集的 host:port 值。例如,如果名为 myController
的原始控制器和副本都在同一本地主机上,请将 myController2 的值 null(代码为:
)更改为 10011(对于副本端口)和 10010(对于副本集端口):<collectiveController replicaPort="null" replicaSet="localhost:null" isInitialReplicaSet="false" />
<collectiveController replicaPort="10011" replicaSet="localhost:10010" isInitialReplicaSet="false" />
- 确保安全性配置设置的值与原始控制器使用的值相同。例如,myController 和
myController2 副本使用:
<quickStartSecurity userName="adminUser" userPassword="adminPassword" />
- 确保集合体根签署者密钥库元素设置的密码与原始控制器使用的密码相同。例如,从 myController server.xml
文件复制 collectiveRootKeys 的密钥库密码并将其粘贴至 myController2 副本 server.xml 文件。此示例显示所生成密码:
<!-- collective root signers keystore --> <keyStore id="collectiveRootKeys" password="{xor}Lz4sLCgwLTs=" location="${server.config.dir}/resources/collective/rootKeys.jks" />
- 确保 httpEndpoint 元素设置在主机上充当唯一端口号的副本 httpPort 和 httpsPort 值。例如,假定名为
myController 的原始控制器和副本都在同一本地主机上,并且 myController 具有以下 httpEndpoint 元素:
- 通过启动新集合体控制器来启动新副本。
wlp/bin/server start myController2
- 请验证原始集合体控制器能否与新副本通信。
- 对原始控制器消息日志 $WLP_USER_DIR/servers/myController/logs/messages.log 打开编辑器。
- 查找以下消息,在您的环境中,此消息可能会包含不同 IP 地址:
CWWKX6009I: 集合体控制器已成功连接至副本 127.0.0.1:10011。当前活动副本集为 [127.0.0.1:10010]。所配置副本集为 [127.0.0.1:10010]。所连接备用副本为 [127.0.0.1:10011]。
- 请验证新副本可与原始集合体控制器通信。
- 对副本消息日志 $WLP_USER_DIR/servers/myController2/logs/messages.log 打开编辑器。
- 查找以下消息,在您的环境中,此消息可能会包含不同 IP 地址:
CWWKX6009I: 集合体控制器已成功连接至副本 127.0.0.1:10010。当前活动副本集为 []。所配置副本集为 []。所连接备用副本为 [127.0.0.1:10011, 127.0.0.1:10010]。
- 激活新副本。
运行 addReplica 命令,此命令使用集合体控制器的管理安全域配置,并以 replicaHost:replicaPort 格式指定您要激活的副本的端点。查看集合体控制器的 server.xml 文件以查找 --host、--port、--user 和 --password 参数的值。查看副本的 server.xml 文件以查找 replicaHost:replicaPort 的值。有关这些参数的信息,请在命令行运行 collective help addReplica。
wlp/bin/collective addReplica replicaHost:replicaPort --host=host_of_existing_controller --port=port_of_existing_controller --user=user_for_existing_controller --password=user_password
对于此示例(现有集合体控制器和副本在同一主机 localhost 上),运行:
wlp/bin/collective addReplica localhost:10011 --host=localhost --port=9443 --user=adminUser --password=adminPassword
如果系统提示您接受证书链,请输入 y(是)。
- 对其他副本重复步骤 1 和 2。例如,将第三个副本添加至副本集。命名新副本 myController3 并指定 replicaPort="10012"。副本集必须具有至少三个副本以实现高可用性。第三个副本添加至副本集后,可验证原始集合体控制器和新副本是否已成功同步。
- 在原始控制器消息日志中查找以下消息。在您的环境中,此消息可能会包含不同 IP 地址:
CWWKX6015I: 已接收到更改活动集合体控制器副本集的请求,正在处理该请求。当前活动副本集为 {127.0.0.1:10010,127.0.0.1:10011}。所请求的新活动副本集为 {127.0.0.1:10010,127.0.0.1:10011,127.0.0.1:10012}。 CWWKX6016I: 已成功更改活动集合体控制器副本集。当前活动副本集为 {127.0.0.1:10010,127.0.0.1:10011,127.0.0.1:10012}。先前活动副本集为 {127.0.0.1:10010,127.0.0.1:10011}。 CWWKX6011I: 集合体控制器已就绪,可接受请求。引导者为 127.0.0.1:10010。当前活动副本集为 [127.0.0.1:10012, 127.0.0.1:10011, 127.0.0.1:10010]。所配置副本集为 [127.0.0.1:10010, 127.0.0.1:10011, 127.0.0.1:10012]。 CWWKX6014I: 此集合体控制器副本已完成与其他副本的数据同步。
- 在所添加副本的消息日志中查找以下消息。在您的环境中,此消息可能会包含不同 IP 地址:
CWWKX6016I: 已成功更改活动集合体控制器副本集。当前活动副本集为 {127.0.0.1:10010,127.0.0.1:10011,127.0.0.1:10012}。先前活动副本集为 {127.0.0.1:10010,127.0.0.1:10011}。 CWWKX6011I: 集合体控制器已就绪,可接受请求。引导者为 127.0.0.1:10010。当前活动副本集为 [127.0.0.1:10012, 127.0.0.1:10011, 127.0.0.1:10010]。所配置副本集为 [127.0.0.1:10010, 127.0.0.1:10011, 127.0.0.1:10012]。 CWWKX8112I: 服务器的主机信息已成功发布至集合体存储库。 CWWKX8114I: 服务器的路径已成功发布至集合体存储库。 CWWKX8116I: 服务器已启动状态已成功发布至集合体存储库。
- 在原始控制器消息日志中查找以下消息。在您的环境中,此消息可能会包含不同 IP 地址:


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=tagt_wlp_configure_replicas
文件名:tagt_wlp_configure_replicas.html