macOS平台上的HA组配置
本节向您展示如何在macOS平台上的Docker Desktop(或等效的桌面容器环境,如Rancher Desktop)中手动设置并运行PubSub+软件事件代理容器的HA冗余组。
或者,如果您想使用Docker Compose(或等效工具)设置HA组,请查看GitHub上的模板和说明:https://github.com/SolaceLabs/solace-ha-docker-compose。
开始之前锚点
示例中展示的HA配置使用了Solace PubSub+ Standard版本,适用于在消息节点上使用多达100个客户端连接。然而,如果您的平台提供了适当的资源,最多可以配置1000个客户端连接。有关资源配置的详细信息,请参考系统资源需求。
本示例中的配置适用于在非生产环境中演示和测试PubSub+的基本原理,如HA故障转移和保证消息传递。这是在资源受限环境(如笔记本电脑)中设置HA组的一种方式。示例的目的是帮助您熟悉HA配置的各个方面,作为使用更高级、面向生产的技术的一步。
假设锚点
假设您已具备以下条件:
- macOS X Yosemite 10.10.3或更高版本。
- 安装了Docker,至少分配6 GiB的虚拟内存(其中4 GiB必须是RAM)和至少2个虚拟核心给Docker for Mac。如果可能,分配更多的核心将提高整体性能。在此示例中,已为Docker for Mac分配了4 GiB的RAM、2 GiB的交换空间和4个虚拟核心。有关分配内存和交换空间的详细信息,请参考Docker设置页面。
- 建议主机机器配备8 GB RAM和4个CPU核心,并启用超线程(8个虚拟核心)。
- HA组中的所有软件事件代理Docker容器映像必须相同:Solace PubSub+ 8.10或更高版本。
- HA组内的所有消息节点配置为使用相同的连接扩展层。
限制锚点
- 不支持以下功能:复制;Docker Engine Swarm模式。
- 在100个连接扩展层上不支持多节点路由(MNR)。要使用MNR,您必须使用1000个连接扩展层或更高。
第1步:获取软件事件代理锚点
首先,您需要获得一个事件代理Docker包,这是一个包含单个事件代理Docker映像的压缩tar存档。
本示例假设您使用的是Solace PubSub+ Standard。如果您想使用其他版本,您需要获得相应的 事件代理包:
- 访问Solace PubSub+事件代理下载页面。
- 滚动到Docker部分,然后选择软件事件代理的版本。
- 填写您的详细信息,然后点击获取下载。
将下载名为solace-pubsub-<edition>-<version>-docker.tar.gz
的压缩存档文件。
一旦您获得了事件代理包的副本,您可以将其上传到主机目录,并使用以下两个步骤加载映像:
- 启动Docker并打开命令行终端。
- 加载映像:
> docker load -i /Users/username/Downloads/solace-pubsub-standard-9.13.x.x-docker.tar
在此示例中,Solace PubSub+ Standard的压缩tar存档已上传到Users/username/Downloads
。
加载完成后,您可以使用images
命令检查映像。
> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
solace-pubsub-standard 9.13.x.x b8a61124d92f 10 days ago 1.644 GB
第2步:创建Docker桥接网络锚点
加载映像后,使用docker network create
命令创建一个新的Docker桥接网络。新的桥将允许使用hostname
连接HA组中的软件事件代理。
在以下示例中,我们创建了一个新的Docker桥接网络solace-net
。
> docker network create solace-net
第3步:配置HA组锚点
在这一步中,您将使用docker create
命令创建用于HA组的主事件代理和备份事件代理以及监控节点的Docker容器。开始之前请注意以下几点:
- 使用
--network solace-net
选项将所有三个容器连接到solace-net
Docker桥接网络。 - 使用配置密钥设置HA组。在以下示例中,配置密钥
redundancy/enable
在--env 'redundancy_enable=yes'
行中使用以启用冗余。容器通过使用redundancy/group/node/<name>/connectvia
配置密钥在--env 'redundancy_group_node_primary_connectvia=<hostname>'
行中相互连接。在此示例中,<hostname>
变量的值分别为primary
、backup
和monitoring
。有关与HA相关的配置密钥的完整列表,请参考配置密钥。 - 在
docker create
命令中,冗余组的<pre-shared-key>
必须至少为44个字符长,Base64编码,并且对于HA组中的每个节点都相同。有关更多详细信息,请参考软件事件代理的预共享密钥。 - 如果您从压缩tar存档加载了映像,请将示例中的
solace/solace-pubsub-standard
替换为您的映像对应的仓库和标签。例如,如果您加载了Solace PubSub+ Enterprise版的9.13.0.16版本,请使用solace-pubsub-enterprise:9.13.0.16
。
要创建Docker容器并配置HA组,请执行以下步骤:
- 运行以下命令配置主事件代理:
> docker create -p 212:2222 -p 213:8080 -p 214:55555 -p 215:8300 -p 216:8301 -p 217:8302 -p 218:8741 \
--shm-size=1g \
--ulimit nofile=2448:38048 \
--env 'username_admin_globalaccesslevel=admin' \
--env 'username_admin_password=admin' \
--env 'system_scaling_maxconnectioncount=100' \
--name=primary \
--hostname=primary \
--env 'routername=primary' \
--network solace-net \
--env 'nodetype=message_routing' \
--env 'configsync_enable=yes' \
--env 'redundancy_enable=yes' \
--env 'redundancy_group_node_primary_connectvia=primary' \
--env 'redundancy_group_node_primary_nodetype=message_routing' \
--env 'redundancy_group_node_backup_connectvia=backup' \
--env 'redundancy_group_node_backup_nodetype=message_routing' \
--env 'redundancy_group_node_monitoring_connectvia=monitoring' \
--env 'redundancy_group_node_monitoring_nodetype=monitoring' \
--env 'redundancy_authentication_presharedkey_key=<pre-shared-key>' \
--env 'redundancy_activestandbyrole=primary' \
--env 'redundancy_matelink_connectvia=backup' \
solace-pubsub-standard:9.13.x.x
- 运行以下命令配置备份事件代理:
> docker create -p 312:2222 -p 313:8080 -p 314:55555 -p 315:8300 -p 316:8301 -p 317:8302 -p 318:8741 \
--shm-size=1g \
--ulimit nofile=2448:38048 \
--env 'username_admin_globalaccesslevel=admin' \
--env 'username_admin_password=admin' \
--env 'system_scaling_maxconnectioncount=100' \
--name=backup \
--hostname=backup \
--env 'routername=backup' \
--network solace-net \
--env 'nodetype=message_routing' \
--env 'configsync_enable=yes' \
--env 'redundancy_enable=yes' \
--env 'redundancy_group_node_primary_connectvia=primary' \
--env 'redundancy_group_node_primary_nodetype=message_routing' \
--env 'redundancy_group_node_backup_connectvia=backup' \
--env 'redundancy_group_node_backup_nodetype=message_routing' \
--env 'redundancy_group_node_monitoring_connectvia=monitoring' \
--env 'redundancy_group_node_monitoring_nodetype=monitoring' \
--env 'redundancy_authentication_presharedkey_key=<pre-shared-key>' \
--env 'redundancy_activestandbyrole=backup' \
--env 'redundancy_matelink_connectvia=primary' \
solace-pubsub-standard:9.13.x.x
- 运行以下命令配置监控节点:
> docker create -p 412:2222 -p 413:8080 -p 414:55555 -p 415:8300 -p 416:8301 -p 417:8302 -p 418:8741 \
--shm-size=1g \
--ulimit nofile=2448:38048 \
--env 'username_admin_globalaccesslevel=admin' \
--env 'username_admin_password=admin' \
--env 'system_scaling_maxconnectioncount=100' \
--name=monitoring \
--hostname=monitoring \
--env 'routername=monitoring' \
--network solace-net \
--env 'nodetype=monitoring' \
--env 'redundancy_enable=yes' \
--env 'redundancy_group_node_primary_connectvia=primary' \
--env 'redundancy_group_node_primary_nodetype=message_routing' \
--env 'redundancy_group_node_backup_connectvia=backup' \
--env 'redundancy_group_node_backup_nodetype=message_routing' \
--env 'redundancy_group_node_monitoring_connectvia=monitoring' \
--env 'redundancy_group_node_monitoring_nodetype=monitoring' \
--env 'redundancy_authentication_presharedkey_key=<pre-shared-key>' \
solace-pubsub-standard:9.13.x.x
- 配置软件事件代理Docker容器后,执行
docker start
命令以启动容器。
> docker start primary backup monitoring
第4步:断言主配置
在前一步中,我们使用配置密钥configsync/enable
在--env configsync_enable=yes
行中启用了主备事件代理上的Config-Sync。当您首次在HA对上启用Config-Sync时,您必须断言一个事件代理的系统级配置覆盖其配对。这个“领导者”事件代理通常是HA对中的主事件代理。
如果需要在两个事件代理之间手动同步消息VPN配置,您可以断言一个事件代理的消息VPN配置覆盖另一个事件代理上的相同消息VPN配置。
要在主事件代理上断言系统级和消息VPN级配置,请执行以下步骤:
- 访问主事件代理的Solace CLI:
> docker exec -it <container-name> /usr/sw/loads/currentload/bin/cli -A
其中,
<container-name>
是主事件代理容器的名称,在本示例中为primary
。
- 使用
assert-leader router
和assert-leader message-vpn
命令:
primary> enable
primary# admin
primary(admin)# config-sync
primary(admin/config-sync)# assert-leader router
WARNING: This command can delete SEMP sessions on the HA mate of this router, logging out SEMP and PubSub+ Manager users.
Do you want to continue (y/n)? y
Processed 1 config-sync tables.
primary(admin/config-sync)# assert-leader message-vpn <vpn-name>
WARNING: This command can temporarily disconnect clients on either the AD-inactive or replication-standby routers. As well in-flight messages may not be delivered to AD endpoints on the replication-standby routers if those endpoints are not currently configured the same as they are on this router. Clients connected to this router will not be affected.
Do you want to continue (y/n)? y
Processed 1 config-sync tables.
其中:
<vpn-name>
是消息VPN名称,可能包含通配符。
Config-Sync的Oper Status从Down变为Up,主备事件代理上都是如此。要检查这一点,请运行show config-sync
用户执行命令。
- 通过执行
show redundancy
命令验证HA组的冗余状态。
下一步
此时,您已在平台上运行HA冗余组,并启用了保证消息传递。您现在可以使用SDKPerf工具测试消息传递,或测试HA组的故障转移操作。
- 下载SDKPerf - 要开始,请参见SDKPerf的快速入门指南。
- 验证故障转移 - 了解如何验证HA组的故障转移操作。
尝试了一些基本的HA相关功能后,您可能对一些更高级的HA主题感兴趣。
- 监控冗余 - 了解如何查看HA配置和状态。
- 扩展现有HA组 - 使用Solace CLI为HA冗余组配置系统扩展参数。