第 14 章 使用 Pacemaker 配置多站点集群
当集群跨越多个站点时,站点间网络连接的问题可能会导致崩溃问题。当连接断开时,某个位置的节点无法判断位于另一个站点中的某个节点是否失败,或者仍然能够使用失败的站点间连接。此外,在两个站点间提供高可用性服务可能会有问题。
为了解决这些问题,Red Hat Enterprise Linux release 7.4 提供了全面支持,通过使用 Booth 集群票据管理器配置跨多个站点的高可用性集群。Booth 票据管理器是一个分布式服务,它应该在与在特定站点连接集群节点的网络不同的物理网络中运行。它会产生另一个松散集群,一个 Booth 组成,位于站点的常规集群之上。这可整合沟通层,为独立的 Booth ticket 采用基于认可的决策流程。
Booth ticket 是 Boothship 中的单例,代表一个对时间敏感、可移动的授权单元。资源可以被配置为需要运行某个 ticket。这样可保证资源一次只在一个站点运行,并为其提供 ticket。
您可以将 Booth 看成一个覆盖集群,由在不同站点中运行的集群组成,所有原始集群相互独立。这是与集群沟通的 Booth 服务,它是否获得一个 ticket,而 Pacemaker 会根据 Pacemaker ticket 约束决定是否在集群中运行资源。这意味着,在使用 ticket 管理器时,每个集群都可以运行自己的资源和共享资源。例如,在一个集群中只能运行资源 A、B 和 C,资源 D、E 和 F 仅在另一个集群中运行,且在这两个集群中之一运行的资源 G 和 H 由 ticket 决定。也可以按照一个单独的 ticket 来决定在两个集群中运行的额外资源 J。
以下流程概述了配置使用 Booth ticket 管理器的多站点配置的步骤。
这些示例命令使用以下协议:
- 集群 1 由 node
1 和
节点组成cluster1-node
2 - 集群 1 具有为其分配的浮动 IP 地址 192.168.11.100
- 集群 2 由
cluster2-node1
和cluster2-node2
组成 - 集群 2 具有为其分配的浮动 IP 地址 192.168.22.100
- 仲裁节点是具有
IP 地址 192.168.99.100 的仲裁节点
- 此配置使用的 Booth ticket 的名称是
apacheticket
这些示例命令假定已将 Apache 服务的集群资源配置为每个群集的资源组
apachegroup
的一部分。不需要每个集群上的资源和资源组为这些资源配置一个 ticket 约束,因为每个集群的 Pacemaker 实例都是独立的,但这是一个常见故障转移的场景。
有关在集群中配置 Apache 服务的完整集群配置步骤,请参阅高可用性附加组件管理示例。
请注意,您可以随时输入 pcs booth config 命令来显示当前节点或集群的 booth 配置,或使用 pcs booth status 命令在本地节点上显示 booth 的当前状态。
- 在两个集群的每个节点上安装
booth-site
Booth ticket manager 软件包。[root@cluster1-node1 ~]#
yum install -y booth-site
[root@cluster1-node2 ~]#yum install -y booth-site
[root@cluster2-node1 ~]#yum install -y booth-site
[root@cluster2-node2 ~]#yum install -y booth-site
- 在仲裁节点上安装
pcs
、booth-core
和 booth-arbitrator[root@arbitrator-node ~]#
yum install -y pcs booth-core booth-arbitrator
- 确保在所有群集节点和仲裁节点上打开端口 9929/tcp 和 9929/udp。例如,在两个集群的所有节点上和临时节点上运行以下命令,允许访问这些节点上的端口 9929/tcp 和 9929/udp。
#
firewall-cmd --add-port=9929/udp
#firewall-cmd --add-port=9929/tcp
#firewall-cmd --add-port=9929/udp --permanent
#firewall-cmd --add-port=9929/tcp --permanent
请注意,这个过程本身允许任何机器访问节点上的端口 9929。您应该确保主机上仅对需要节点的节点开放。 - 在一个集群的一个节点上创建 Booth 配置。您为每个集群和地区指定的地址必须是 IP 地址。对于每个集群,您可以指定一个浮动 IP 地址。
[cluster1-node1 ~] #
pcs booth setup sites 192.168.11.100 192.168.22.100 arbitrators 192.168.99.100
这个命令会在运行它的节点上创建配置文件/etc/booth/booth.conf
和 /etc/booth/booth.key - 为 Booth 配置创建 ticket。这是您要用来定义资源约束的票据,允许仅在向集群授予这个票据时运行资源。这个基本故障转移配置过程只使用一个 ticket,但您可以为每个复杂情况创建额外的 ticket,因为每个 ticket 都与不同的资源或资源关联。
[cluster1-node1 ~] #
pcs booth ticket add apacheticket
- 将 Booth 配置同步至当前集群中的所有节点。
[cluster1-node1 ~] #
pcs booth sync
- 在仲裁机构(arbitrator)节点中,将 Booth 配置拉取到仲裁机构中。如果您之前还没有这样做,您必须首先将
pcs
身份验证到您要拉取配置的节点。[arbitrator-node ~] #
pcs cluster auth cluster1-node1
[arbitrator-node ~] #pcs booth pull cluster1-node1
- 将 Booth 配置拉取到其他集群,并同步到该集群的所有节点。与仲裁节点一样,如果您之前还没有这样做,您必须首先向要拉取配置的节点验证
pcs
。[cluster2-node1 ~] #
pcs cluster auth cluster1-node1
[cluster2-node1 ~] #pcs booth pull cluster1-node1
[cluster2-node1 ~] #pcs booth sync
- 在仲裁机构中开启并启动 Booth。注意您不能在集群的任何节点上手动启动或启用 Booth,因为 Booth 作为这些集群中的 Pacemaker 资源运行。
[arbitrator-node ~] #
pcs booth start
[arbitrator-node ~] #pcs booth enable
- 将 Booth 配置为作为集群资源在这两个集群站点运行。这将创建一个资源组,并将
booth-ip
和booth-service
用作该组的成员。[cluster1-node1 ~] #
pcs booth create ip 192.168.11.100
[cluster2-node1 ~] #pcs booth create ip 192.168.22.100
- 为您为每个集群定义的资源组添加一个 ticket 约束。
[cluster1-node1 ~] #
pcs constraint ticket add apacheticket apachegroup
[cluster2-node1 ~] #pcs constraint ticket add apacheticket apachegroup
您可以输入以下命令来显示当前配置的 ticket 约束。pcs constraint ticket [show]
- 为第一个集群授予您为此设置创建的 ticket。请注意,在授予 ticket 前不需要定义 ticket 约束。最初为集群授予一个 ticket 后,booth 会接管票据管理,除非您使用 pcs booth ticket revoke 命令手动覆盖此票据。有关 pcs booth 管理命令的详情请参考 pcs booth 命令的 PCS 帮助屏幕。
[cluster1-node1 ~] #
pcs booth ticket grant apacheticket
可在任何时间添加或删除票据,即使完成此步骤后也是如此。但是,添加或删除一个 ticket 后,您必须将配置文件同步到其他节点和集群,并赋予这个问题单。
有关您可用于清理和删除 Booth 配置文件、票据和资源的其他 Booth 管理命令的详情,请查看 pcs booth 命令的 PCS 帮助屏幕。