Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第 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-node2 节点组成
  • 集群 1 具有为其分配的浮动 IP 地址 192.168.11.100
  • 集群 2 由 cluster2-node1cluster2-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 的当前状态。
  1. 在两个集群的每个节点上安装 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
  2. 在仲裁节点上安装 pcs、booth -core 和 booth-arbitrator 软件包。
    [root@arbitrator-node ~]# yum install -y pcs booth-core booth-arbitrator
  3. 确保在所有群集节点和仲裁节点上打开端口 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。您应该确保主机上仅对需要节点的节点开放。
  4. 在一个集群的一个节点上创建 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
  5. 为 Booth 配置创建 ticket。这是您要用来定义资源约束的票据,允许仅在向集群授予这个票据时运行资源。
    这个基本故障转移配置过程只使用一个 ticket,但您可以为每个复杂情况创建额外的 ticket,因为每个 ticket 都与不同的资源或资源关联。
    [cluster1-node1 ~] # pcs booth ticket add apacheticket
  6. 将 Booth 配置同步至当前集群中的所有节点。
    [cluster1-node1 ~] # pcs booth sync
  7. 在仲裁机构(arbitrator)节点中,将 Booth 配置拉取到仲裁机构中。如果您之前还没有这样做,您必须首先将 pcs 身份验证到您要拉取配置的节点。
    [arbitrator-node ~] # pcs cluster auth cluster1-node1
    [arbitrator-node ~] # pcs booth pull cluster1-node1
  8. 将 Booth 配置拉取到其他集群,并同步到该集群的所有节点。与仲裁节点一样,如果您之前还没有这样做,您必须首先向要拉取配置的节点验证 pcs
    [cluster2-node1 ~] # pcs cluster auth cluster1-node1
    [cluster2-node1 ~] # pcs booth pull cluster1-node1
    [cluster2-node1 ~] # pcs booth sync
  9. 在仲裁机构中开启并启动 Booth。
    注意
    您不能在集群的任何节点上手动启动或启用 Booth,因为 Booth 作为这些集群中的 Pacemaker 资源运行。
    [arbitrator-node ~] # pcs booth start
    [arbitrator-node ~] # pcs booth enable
  10. 将 Booth 配置为作为集群资源在这两个集群站点运行。这将创建一个资源组,并将 booth-ipbooth-service 用作该组的成员。
    [cluster1-node1 ~] # pcs booth create ip 192.168.11.100
    [cluster2-node1 ~] # pcs booth create ip 192.168.22.100
  11. 为您为每个集群定义的资源组添加一个 ticket 约束。
    [cluster1-node1 ~] # pcs constraint ticket add apacheticket apachegroup
    [cluster2-node1 ~] # pcs constraint ticket add apacheticket apachegroup
    您可以输入以下命令来显示当前配置的 ticket 约束。
    pcs constraint ticket [show]
    
  12. 为第一个集群授予您为此设置创建的 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 帮助屏幕。