Pacemaker 远程快速入门 #
本文档将指导您完成具有远程节点或 Guest 节点的高可用性群集设置,这些节点由 Pacemaker 和 pacemaker_remote
管理。pacemaker_remote
中的 Remote 并不表示实际距离的远近,而是表示节点的特殊状态,即这些节点不运行完整的群集堆栈,因此不属于群集的常规成员。
1 概念概述和术语 #
一个常规群集最多只能包含 32 个节点。借助 pacemaker_remote
服务,可以将高可用性群集进行扩展,使其包含超出此限制的额外节点。
pacemaker_remote
服务可作为物理节点(称为远程节点)运行,也可作为虚拟节点(称为 Guest 节点)运行。与常规群集节点不同,远程节点和 Guest 节点都作为资源由群集进行管理。因此,它们不会计入群集堆栈的 32 个节点限制。不过,从资源管理的角度而言,它们的行为与常规群集节点无异。
对远程节点不需要安装完整的群集堆栈,因为它们只运行 pacemaker_remote
服务。该服务充当代理,可让“常规”群集节点上的群集堆栈连接到该服务。因此,运行 pacemaker_remote
服务的节点可作为远程节点(请参见术语)有效集成到群集中。
- 群集节点
运行完整群集堆栈的节点。
图 1︰ 常规群集堆栈(双节点群集) #常规群集节点可以执行以下任务:
运行群集资源。
运行所有命令行工具,例如
crm
、crm_mon
。执行屏蔽操作。
计入群集仲裁。
充当群集的指定协调员 (DC)。
- Pacemaker 远程(systemd 服务:
pacemaker_remote
) 可以使节点用作 Pacemaker 节点而无需部署完整群集堆栈的服务守护程序。请注意,
pacemaker_remote
是 systemd 服务的名称,pacemaker-remoted (服务名称后带一个 d)才是该守护程序的名称。- 远程节点
运行
pacemaker_remote
守护程序的物理机。需要在其中一个群集节点上运行的特殊资源 (ocf:pacemaker:remote
),用于管理群集节点与远程节点之间的通讯(请参见第 3 节 “用例 1:设置包含远程节点的群集”)。- Guest 节点
运行
pacemaker_remote
守护程序的虚拟机。通过使用资源代理(如ocf:pacemaker:VirtualDomain
)并指定remote-node
元属性来创建 Guest 节点(请参见第 4 节 “用例 2:设置包含 Guest 节点的群集”)。对于包含数个 Guest 节点的物理机,创建过程如下所示:
在群集节点上,虚拟机由 Pacemaker 启动。
群集会连接到虚拟机的
pacemaker_remote
服务。通过
pacemaker_remote
将虚拟机集成到群集中。
了解虚拟机在高可用性群集中可以具有的数个角色的不同之处很重要:
虚拟机可以运行完整的群集堆栈。在此情况下,虚拟机是常规群集节点,并非以自我管理的方式由群集进行管理。
虚拟机可作为资源由群集进行管理,群集无需感知到虚拟机内运行的服务。在此情况下,虚拟机对于群集不透明。
虚拟机可以是群集资源并运行
pacemaker_remote
,这样群集便能管理虚拟机内的服务。在此情况下,虚拟机是 Guest 节点并对群集透明。
远程节点和 Guest 节点可以运行群集资源和大部分命令行工具,但它们具有以下限制:
无法执行屏蔽操作。
不会影响仲裁。
无法充当指定协调员 (DC)。
2 使用情形 #
本文中的过程介绍了如何设置具有以下特征的最小群集:
两个运行 SUSE Linux Enterprise High Availability Extension 12 GA 或更高版本的群集节点。在本指南中,它们的主机名分别为
alice
和bob
。根据您选择的设置,群集最终包含以下节点之一:
一个运行
pacemaker_remote
的远程节点(本文中该远程节点名为charlie
)。或:
一个运行
pacemaker_remote
的 Guest 节点(本文中该 Guest 节点名为doro
)。
用于管理 Guest 节点和远程节点的 Pacemaker。
当活动的主机发生故障(主动/被动设置)时,资源从一个节点故障转移至另一个节点。
3 用例 1:设置包含远程节点的群集 #
下面的示例设置中使用了远程节点 charlie
。
3.1 准备群集节点和远程节点 #
要准备群集节点和远程节点,请执行以下操作:
3.2 配置身份验证密钥 #
在群集节点 alice
上,执行以下操作:
为
pacemaker_remote
服务创建特定的身份验证密钥:root #
dd
if=/dev/urandom of=/etc/pacemaker/authkey bs=4k count=1pacemaker_remote
服务的密钥与您在 YaST 群集模块中创建的群集身份验证密钥不同。使用
scp
在所有群集节点和您未来的远程节点之间同步身份验证密钥:root #
scp
-r -p /etc/pacemaker/ bob:/etcroot #
scp
-r -p /etc/pacemaker/ charlie:/etc密钥需始终保持同步。
3.3 配置远程节点 #
下面的过程将物理主机 charlie
配置为远程节点:
在
charlie
上执行如下操作:在防火墙设置中,为
pacemaker_remote
打开 TCP 端口 3121。安装 pacemaker-remote 和 crmsh 软件包。
root #
zypper
in pacemaker-remote crmsh在
charlie
上启用并启动pacemaker_remote
服务:root #
systemctl
enable pacemaker_remoteroot #
systemctl
start pacemaker_remote
在
alice
或bob
上,使用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 将远程节点集成到群集中 #
要将远程节点集成到群集中,请执行以下操作:
确保所有群集节点上均已启动群集服务。如果情况并非如此,请运行以下命令在所有节点上启动群集服务:
root #
crm
cluster start --all在节点
alice
上,创建ocf:pacemaker:remote
原始资源:root #
crm
configurecrm(live)configure#
primitive
charlie ocf:pacemaker:remote \ params server=charlie reconnect_interval=15m \ op monitor interval=30scrm(live)configure#
commit
crm(live)configure#
quit
使用
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 节点,请执行以下操作:
按安装和设置快速入门中所述安装并设置一个基本的双节点群集。如此双节点群集将包含两个物理主机:
alice
和bob
。在
alice
上创建 KVM Guest。有关详细信息,请参见 SUSE Linux Enterprise Server 15 SP4 的《虚拟化指南》。在您要用作 Guest 节点的 KVM Guest (
doro
) 上,安装 SUSE Linux Enterprise Server 15 SP4,并以扩展的形式添加 SUSE Linux Enterprise High Availability Extension 15 SP4。但不要安装高可用性安装软件集,因为远程节点只需要单个软件包(请参见第 4.3 节)。在所有群集节点上,查看
/etc/hosts
并添加doro
对应的项。
4.2 配置身份验证密钥 #
在群集节点 alice
上,执行以下操作:
为
pacemaker_remote
服务创建特定的身份验证密钥:root #
mkdir
-p --mode=0755 /etc/pacemakerroot #
dd
if=/dev/urandom of=/etc/pacemaker/authkey bs=4k count=1pacemaker_remote
服务的密钥与您在 YaST 群集模块中创建的群集身份验证密钥不同。使用
scp
在所有群集节点和您的 Guest 节点之间同步身份验证密钥:root #
scp
-r -p /etc/pacemaker/ bob:/etcroot #
scp
-p /etc/pacemaker/ doro:/etc密钥需始终保持同步。
4.3 配置 Guest 节点 #
下面的过程会将 doro
配置为群集节点 alice
上的 Guest 节点:
在
doro
上执行如下操作:在防火墙设置中,为
pacemaker_remote
打开 TCP 端口 3121。安装 pacemaker-remote 和 crmsh 软件包。
root #
zypper
in pacemaker-remote crmsh在
alice
上启用并启动pacemaker_remote
服务:root #
systemctl
enable pacemaker_remoteroot #
systemctl
start pacemaker_remote
在
alice
或bob
上,运行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 节点并按上面所述进行配置。
关闭 Guest 节点并继续第 4.4 节 “将 Guest 节点集成到群集中”。
4.4 将 Guest 节点集成到群集中 #
要将 Guest 节点集成到群集中,请执行以下操作:
确保所有群集节点上均已启动群集服务。如果情况并非如此,请运行以下命令在所有节点上启动群集服务:
root #
crm
cluster start --all转储下一步中需要用到的 KVM Guest 的 XML 配置:
root #
virsh
list --all Id Name State ----------------------------------- - doro shut offroot #
virsh
dumpxml doro > /etc/pacemaker/doro.xml在节点
alice
上,创建用于启动虚拟机的VirtualDomain
资源。使用步骤 2 中转储的配置:root #
crm
configurecrm(live)configure#
primitive
vm-doro ocf:heartbeat:VirtualDomain \ params hypervisor="qemu:///system" \ config="/etc/pacemaker/doro.xml" \ meta remote-node=doroPacemaker 将自动监视 pacemaker_remote 连接是否失败,因此无需针对
VirtualDomain
资源创建定期监视器。使用
crm status
命令检查群集的状态:命令结果应包含一个所含节点全部都可访问的运行中群集。
4.5 测试设置 #
要演示资源是如何执行的,请使用一个虚设资源。该资源仅作测试之用。
创建虚设资源:
root #
crm
configure primitive fake1 ocf:pacemaker:Dummy使用
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要将虚设原始资源转移到 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要测试屏蔽是否有效果,请终止
doro
上的pacemaker-remoted
守护程序:root #
kill
-9 $(pidof pacemaker-remoted)几秒后,再次检查群集状态。它应显示为:
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– 2024 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 及其关联公司、作者和译者对于可能出现的错误或由此造成的后果皆不承担责任。