跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise High Availability Extension 文档 / Quick Start Guides / Pacemaker 远程快速入门
SUSE Linux Enterprise High Availability Extension 15 SP4

Pacemaker 远程快速入门

出版日期:2023 年 12 月 11 日

本文档将指导您完成具有远程节点或 Guest 节点的高可用性群集设置,这些节点由 Pacemaker 和 pacemaker_remote 管理。pacemaker_remote 中的 Remote 并不表示实际距离的远近,而是表示节点的特殊状态,即这些节点不运行完整的群集堆栈,因此不属于群集的常规成员。

作者: Tanja RothThomas Schraitle

1 概念概述和术语

一个常规群集最多只能包含 32 个节点。借助 pacemaker_remote 服务,可以将高可用性群集进行扩展,使其包含超出此限制的额外节点。

pacemaker_remote 服务可作为物理节点(称为远程节点)运行,也可作为虚拟节点(称为 Guest 节点)运行。与常规群集节点不同,远程节点和 Guest 节点都作为资源由群集进行管理。因此,它们不会计入群集堆栈的 32 个节点限制。不过,从资源管理的角度而言,它们的行为与常规群集节点无异。

对远程节点不需要安装完整的群集堆栈,因为它们只运行 pacemaker_remote 服务。该服务充当代理,可让常规群集节点上的群集堆栈连接到该服务。因此,运行 pacemaker_remote 服务的节点可作为远程节点(请参见术语)有效集成到群集中。

术语
群集节点

运行完整群集堆栈的节点。

Two nodes (Alice and Bob). Each node contains hardware (the physical host), the cluster stack (Pacemaker and Corosync), and services (such as a web server database).
图 1︰ 常规群集堆栈(双节点群集)

常规群集节点可以执行以下任务:

  • 运行群集资源。

  • 运行所有命令行工具,例如 crmcrm_mon

  • 执行屏蔽操作。

  • 计入群集仲裁。

  • 充当群集的指定协调员 (DC)。

Pacemaker 远程(systemd 服务:pacemaker_remote

可以使节点用作 Pacemaker 节点而无需部署完整群集堆栈的服务守护程序。请注意,pacemaker_remote 是 systemd 服务的名称,pacemaker-remoted (服务名称后带一个 d)才是该守护程序的名称。

远程节点

运行 pacemaker_remote 守护程序的物理机。需要在其中一个群集节点上运行的特殊资源 (ocf:pacemaker:remote),用于管理群集节点与远程节点之间的通讯(请参见第 3 节 “用例 1:设置包含远程节点的群集”)。

Three nodes (Alice, Bob, and Charlie). The cluster stacks for Alice and Bob include Pacemaker and Corosync. The cluster stack for Charlie includes only Pacemaker remote.
Guest 节点

运行 pacemaker_remote 守护程序的虚拟机。通过使用资源代理(如 ocf:pacemaker:VirtualDomain)并指定 remote-node 元属性来创建 Guest 节点(请参见第 4 节 “用例 2:设置包含 Guest 节点的群集”)。

Two nodes (Alice and Bob). In addition to hardware, the cluster stack, and services, each node also contains virtual machines as guest nodes. The guest nodes run Pacemaker remote.

对于包含数个 Guest 节点的物理机,创建过程如下所示:

  1. 在群集节点上,虚拟机由 Pacemaker 启动。

  2. 群集会连接到虚拟机的 pacemaker_remote 服务。

  3. 通过 pacemaker_remote 将虚拟机集成到群集中。

了解虚拟机在高可用性群集中可以具有的数个角色的不同之处很重要:

  • 虚拟机可以运行完整的群集堆栈。在此情况下,虚拟机是常规群集节点,并非以自我管理的方式由群集进行管理。

  • 虚拟机可作为资源由群集进行管理,群集无需感知到虚拟机内运行的服务。在此情况下,虚拟机对于群集不透明。

  • 虚拟机可以是群集资源并运行 pacemaker_remote,这样群集便能管理虚拟机内的服务。在此情况下,虚拟机是 Guest 节点并对群集透明。

远程节点和 Guest 节点可以运行群集资源和大部分命令行工具,但它们具有以下限制:

  • 无法执行屏蔽操作。

  • 不会影响仲裁。

  • 无法充当指定协调员 (DC)。

2 使用情形

本文中的过程介绍了如何设置具有以下特征的最小群集:

  • 两个运行 SUSE Linux Enterprise High Availability Extension 12 GA 或更高版本的群集节点。在本指南中,它们的主机名分别为 alicebob

  • 根据您选择的设置,群集最终包含以下节点之一:

    • 一个运行 pacemaker_remote 的远程节点(本文中该远程节点名为 charlie)。

      或:

    • 一个运行 pacemaker_remote 的 Guest 节点(本文中该 Guest 节点名为 doro)。

  • 用于管理 Guest 节点和远程节点的 Pacemaker。

  • 当活动的主机发生故障(主动/被动设置)时,资源从一个节点故障转移至另一个节点。

3 用例 1:设置包含远程节点的群集

下面的示例设置中使用了远程节点 charlie

3.1 准备群集节点和远程节点

要准备群集节点和远程节点,请执行以下操作:

  1. 安装和设置快速入门中所述安装并设置一个基本的双节点群集。如此双节点群集将包含两个物理主机:alicebob

  2. 在您要用作远程节点的物理主机 (charlie) 上,安装 SUSE Linux Enterprise Server 15 SP4,并以扩展的形式添加 SUSE Linux Enterprise High Availability Extension 15 SP4。但不要安装高可用性安装软件集,因为远程节点只需要单个软件包(请参见第 3.3 节)。

  3. 在所有群集节点上,查看 /etc/hosts 并添加 charlie 对应的项。

3.2 配置身份验证密钥

在群集节点 alice 上,执行以下操作:

  1. pacemaker_remote 服务创建特定的身份验证密钥:

    root # dd if=/dev/urandom of=/etc/pacemaker/authkey bs=4k count=1

    pacemaker_remote 服务的密钥与您在 YaST 群集模块中创建的群集身份验证密钥不同。

  2. 使用 scp 在所有群集节点和您未来的远程节点之间同步身份验证密钥:

    root # scp -r -p /etc/pacemaker/ bob:/etc
    root # scp -r -p /etc/pacemaker/ charlie:/etc

    密钥需始终保持同步。

3.3 配置远程节点

下面的过程将物理主机 charlie 配置为远程节点:

  1. charlie 上执行如下操作:

    1. 在防火墙设置中,为 pacemaker_remote 打开 TCP 端口 3121。

    2. 安装 pacemaker-remotecrmsh 软件包。

      root # zypper in pacemaker-remote crmsh
    3. charlie 上启用并启动 pacemaker_remote 服务:

      root # systemctl enable pacemaker_remote
      root # systemctl start pacemaker_remote
  2. alicebob 上,使用 ssh 校验连到远程节点的主机连接:

    root # ssh -p 3121 charlie

    此 SSH 连接将失败,但其失败过程会指出设置是否有效:

    有效设置
    ssh_exhange_identification: read: Connection reset by peer.
    无效设置
    ssh: connect to host charlie port 3121: No route to host
    ssh: connect to host charlie port 3121: Connection refused

    如果您看到上面两条消息中的任意一条,则表示设置无效。对 ssh 使用 -v 选项并再次执行命令,以查看调试消息。这有助于您找出连接、身份验证或配置问题。使用多个 -v 选项可提高详细程度。

    视需要添加更多远程节点并按上面所述进行配置。

3.4 将远程节点集成到群集中

要将远程节点集成到群集中,请执行以下操作:

  1. 确保所有群集节点上均已启动群集服务。如果情况并非如此,请运行以下命令在所有节点上启动群集服务:

    root # crm cluster start --all
  2. 在节点 alice 上,创建 ocf:pacemaker:remote 原始资源:

    root # crm configure
    crm(live)configure# primitive charlie ocf:pacemaker:remote \
         params server=charlie reconnect_interval=15m \
         op monitor interval=30s
    crm(live)configure# commit
    crm(live)configure# quit
  3. 使用 crm status 命令检查群集的状态:命令结果应包含一个所含节点全部都可访问的运行中群集:

    root # crm status
    [...]
    Online: [ alice bob ]
    RemoteOnline: [ charlie ]
    
    Full list of resources:
    charlie (ocf:pacemaker:remote): Started alice
     [...]

3.5 在远程节点上启动资源

远程节点集成到群集中后,您便可以像在任意群集节点上启动资源一样在远程节点上启动资源。

警告
警告:有关组和约束的限制

请勿在资源组、共置约束或顺序约束中包含远程节点连接资源,否则可能导致在群集转换时出现非预期的行为。

屏蔽远程节点: 屏蔽远程节点的方式与屏蔽群集节点的方式相同。请用为群集节点配置屏蔽资源的相同方式配置用于远程节点的屏蔽资源。

远程节点不会发起屏蔽操作,只有群集节点才可对其他节点执行屏蔽操作。

4 用例 2:设置包含 Guest 节点的群集

下面的示例设置中使用 KVM 来设置虚拟 Guest 节点 (doro)。

4.1 准备群集节点和 Guest 节点

要准备群集节点和 Guest 节点,请执行以下操作:

  1. 安装和设置快速入门中所述安装并设置一个基本的双节点群集。如此双节点群集将包含两个物理主机:alicebob

  2. alice 上创建 KVM Guest。有关详细信息,请参见 SUSE Linux Enterprise Server 15 SP4 的《虚拟化指南》

  3. 在您要用作 Guest 节点的 KVM Guest (doro) 上,安装 SUSE Linux Enterprise Server 15 SP4,并以扩展的形式添加 SUSE Linux Enterprise High Availability Extension 15 SP4。但不要安装高可用性安装软件集,因为远程节点只需要单个软件包(请参见第 4.3 节)。

  4. 在所有群集节点上,查看 /etc/hosts 并添加 doro 对应的项。

4.2 配置身份验证密钥

在群集节点 alice 上,执行以下操作:

  1. pacemaker_remote 服务创建特定的身份验证密钥:

    root # mkdir -p --mode=0755 /etc/pacemaker
    root # dd if=/dev/urandom of=/etc/pacemaker/authkey bs=4k count=1

    pacemaker_remote 服务的密钥与您在 YaST 群集模块中创建的群集身份验证密钥不同。

  2. 使用 scp 在所有群集节点和您的 Guest 节点之间同步身份验证密钥:

    root # scp -r -p /etc/pacemaker/ bob:/etc
    root # scp -p /etc/pacemaker/ doro:/etc

    密钥需始终保持同步。

4.3 配置 Guest 节点

下面的过程会将 doro 配置为群集节点 alice 上的 Guest 节点:

  1. doro 上执行如下操作:

    1. 在防火墙设置中,为 pacemaker_remote 打开 TCP 端口 3121。

    2. 安装 pacemaker-remotecrmsh 软件包。

      root # zypper in pacemaker-remote crmsh
    3. alice 上启用并启动 pacemaker_remote 服务:

      root # systemctl enable pacemaker_remote
      root # systemctl start pacemaker_remote
  2. alicebob 上,运行 ssh 以校验连到 Guest 的主机连接:

    root # ssh -p 3121 doro

    此 SSH 连接将失败,但其失败过程会指出设置是否有效:

    有效设置
    ssh_exhange_identification: read: Connection reset by peer.
    无效设置
    ssh: connect to host doro port 3121: No route to host
    ssh: connect to host doro port 3121: Connection refused

    如果您看到上面两条消息中的任意一条,则表示设置无效。对 ssh 使用 -v 选项并再次执行命令,以查看调试消息。这有助于您找出连接、身份验证或配置问题。使用多个 -v 选项可提高详细程度。

    视需要添加更多 Guest 节点并按上面所述进行配置。

  3. 关闭 Guest 节点并继续第 4.4 节 “将 Guest 节点集成到群集中”

4.4 将 Guest 节点集成到群集中

要将 Guest 节点集成到群集中,请执行以下操作:

  1. 确保所有群集节点上均已启动群集服务。如果情况并非如此,请运行以下命令在所有节点上启动群集服务:

    root # crm cluster start --all
  2. 转储下一步中需要用到的 KVM Guest 的 XML 配置:

    root # virsh list --all
     Id    Name         State
    -----------------------------------
     -     doro       shut off
    root # virsh dumpxml doro > /etc/pacemaker/doro.xml
  3. 在节点 alice 上,创建用于启动虚拟机的 VirtualDomain 资源。使用步骤 2 中转储的配置:

    root # crm configure
    crm(live)configure# primitive vm-doro ocf:heartbeat:VirtualDomain \
      params hypervisor="qemu:///system" \
             config="/etc/pacemaker/doro.xml" \
             meta remote-node=doro

    Pacemaker 将自动监视 pacemaker_remote 连接是否失败,因此无需针对 VirtualDomain 资源创建定期监视器。

  4. 使用 crm status 命令检查群集的状态:命令结果应包含一个所含节点全部都可访问的运行中群集。

4.5 测试设置

要演示资源是如何执行的,请使用一个虚设资源。该资源仅作测试之用。

  1. 创建虚设资源:

    root # crm configure primitive fake1 ocf:pacemaker:Dummy
  2. 使用 crm status 命令检查群集状态。您应该会看到如下内容:

    root # crm status
    [...]
    Online: [ alice bob ]
    GuestOnline: [ doro@alice ]
    
    Full list of resources:
    vm-doro (ocf:heartbeat:VirtualDomain): Started alice
    fake1           (ocf:pacemaker:Dummy): Started bob
  3. 要将虚设原始资源转移到 Guest 节点 (doro),请使用以下命令:

    root # crm resource move fake1 doro

    此时状态将更改为:

    root # crm status
    [...]
    Online: [ alice bob ]
    GuestOnline: [ doro@alice ]
    
    Full list of resources:
    vm-doro (ocf:heartbeat:VirtualDomain): Started alice
    fake1           (ocf:pacemaker:Dummy): Started doro
  4. 要测试屏蔽是否有效果,请终止 doro 上的 pacemaker-remoted 守护程序:

    root # kill -9 $(pidof pacemaker-remoted)
  5. 几秒后,再次检查群集状态。它应显示为:

    root # crm status
    [...]
    Online: [ alice bob ]
    
    Full list of resources:
    vm-doro (ocf::heartbeat:VirtualDomain): Started alice
    fake1           (ocf:pacemaker:Dummy): Stopped
    
    Failed Actions:
    * doro_monitor_30000 on alice 'unknown error' (1): call=8, status=Error, exitreason='none',
        last-rc-change='Tue Jul 18 13:11:51 2017', queued=0ms, exec=0ms

5 升级群集和 pacemaker_remote 节点

有关不同情形和受支持升级路径的完整信息,请参见第 5 章 “升级群集和更新软件包。有关您要升级到的产品的任何更改和新功能的详细信息,请参见其发行说明,所在网址为 https://www.suse.com/releasenotes/

6 更多信息

https://documentation.suse.com/sle-ha-15/ 上提供了更多有关此产品的文档。有关其他配置和管理任务,请参见详尽的 《管理指南》

http://www.clusterlabs.org/pacemaker/doc/ 上提供了上游文档。请参见文档《Pacemaker Remote—Scaling High Availability Clusters》(Pacemaker Remote — 扩缩高可用性群集)。

7 法律声明

版权所有 © 2006– 2023 SUSE LLC 和贡献者。保留所有权利。

根据 GNU 自由文档许可 (GNU Free Documentation License) 版本 1.2 或(根据您的选择)版本 1.3 中的条款,在此授予您复制、分发和/或修改本文档的权限;本版权声明和许可附带不可变部分。许可版本 1.2 的副本包含在题为GNU Free Documentation License的部分。

有关 SUSE 商标,请参见 http://www.suse.com/company/legal/。所有其他第三方商标分别为相应所有者的财产。商标符号(®、™ 等)代表 SUSE 及其关联公司的商标。星号 (*) 代表第三方商标。

本指南力求涵盖所有细节,但这不能确保本指南准确无误。SUSE LLC 及其关联公司、作者和译者对于可能出现的错误或由此造成的后果皆不承担责任。