Date: 4月 6, 2024
在 Linux 上使用 SIOS LifeKeeper 设置 NFS 文件见证的分步指南
SIOS Lifekeeper 和基于 NFS 的文件见证入门
在高可用集群,见证人对于保证集群的完整性和可靠性起着至关重要的作用。没有第三个节点,可能很难达到法定人数,因为没有数据可以帮助打破两个节点都认为应该上线的平局(这称为裂脑)。您可以通过多种方式解决此问题,例如,通过提供专用见证服务器、整个集群可见的共享存储路径,或者简单地通过在集群本身中拥有更多节点(至少 3 个!)。值得庆幸的是,SIOS 生命守护者为在 Linux 环境中设置高可用性集群提供了强大的解决方案,并且配置见证以提高仲裁是一项重要功能。
在本指南中,我们将引导您完成在 Linux 上使用 SIOS LifeKeeper 设置基于 NFS 的文件见证的步骤,帮助您增强集群应用程序的可用性和弹性。
目标:
使用基于 NFS 的存储见证实现 2 节点集群,如下图所示:
先决条件:开始之前,请确保您具备以下条件:
- Linux 服务器是使用管理权限(即根访问权限)进行配置和连接的。
- SIOS LifeKeeper 已安装或下载并准备安装在每台服务器上。
- NFS 共享可供集群中的所有服务器访问。
步骤 1:安装/修改 SIOS LifeKeeper:
我们需要在此阶段安装 LifeKeeper 或重新运行安装程序以添加 Witness 功能,除非您之前已包含它。
就我而言,我使用的是 RHEL8.8,因此我将在使用 RHEL8.8 所需的补充包运行安装之前安装 ISO。
[root@server1-LK ~]# mount /root/sps.img /mnt/loop -t iso9660 -o 循环
[root@server1-LK ~]# cd /mnt/loop/
[root@server1-LK 循环]# ./setup –addHADR /root/HADR-RHAS-4.18.0-477.10.1.el8_8.x86_64.rpm
这里,我们目的的重要部分是启用见证功能,如下面的屏幕截图所示。但是,您还需要一个额外的许可证文件,您可以在此处添加该文件,也可以稍后通过命令行添加:
否则,根据您的目的配置 LifeKeeper,或者如果已经配置,只需在包含“使用仲裁/见证功能”选项后继续完成设置即可。
如果您决定通过命令行添加许可证,请在集群中的每个节点上运行以下命令,并使用许可证文件的正确路径:
[root@server1-LK ~]# /opt/LifeKeeper/bin/lkkeyins /<许可证文件路径>l/quorum-disk.lic
步骤 2:设置并挂载共享存储:
确保集群中的所有服务器都可以访问共享存储。您可以使用“mount”命令或“findmnt”检查每个服务器,以验证是否已在本地安装:
[root@server1-LK 循环]# mount | grep NFS
/var/lib/nfs/rpc_pipefs 上的 sunrpc 类型 rpc_pipefs (rw,relatime)
172.16.200.254:/var/nfs/general on /nfs/general 类型 nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans= 2、sec=sys、clientaddr=172.16.205.151、local_lock=none、addr=172.16.200.254)
或者
[root@server1-LK ~]# findmnt -l /nfs/general
目标源 FSTYPE 选项
/nfs/general 172.16.200.254:/var/nfs/general nfs4 rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec =sys,clientaddr=172.16.205.151,local_lock=无,addr=172.16.200.254
如果您仍需要自行挂载共享,请按照以下步骤操作:
首先,确认您可以在主机服务器上看到 NFS 共享。
[root@server1-LK ~]# showmount -e 172.16.200.254
172.16.200.254 的导出列表:
/首页172.16.205.244,172.16.205.151
/var/nfs/一般 172.16.205.244,172.16.205.151
就我而言,我想挂载“/var/nfs/general”共享。
要挂载此共享,首先请确保您计划挂载的目录存在。如果没有,请创建它:
[root@server1-LK ~]# mkdir -p /nfs/general
现在,您可以使用以下命令手动挂载共享以确认可以连接,并且它可以工作:
[root@server1-LK ~]# mount 172.16.200.254:/var/nfs/general /nfs/general
最后,一旦满意,将挂载点添加到您的 /etc/fstab 文件中,以便它将在启动时挂载:
[root@server1-LK ~]# cat /etc/fstab
#
# /etc/fstab
# 由 anaconda 创建于 2024 年 1 月 25 日星期四 12:07:15
#
# 通过引用,可访问的文件系统维护在“/dev/disk/”下。
# 有关更多信息,请参阅手册页 fstab(5)、findfs(8)、mount(8) 和/或 blkid(8)。
#
# 编辑此文件后,运行 ‘systemctl daemon-reload’ 来更新 systemd
从该文件生成的 # 个单位。
#
/dev/mapper/rhel-root/xfs 默认 0 0
UUID=6b22cebf-8f1c-405b-8fa8-8f12e1b6b56c /boot xfs 默认 0 0
/dev/mapper/rhel-swap 无 交换默认值 0 0
#为 NFS 共享添加
172.16.200.254:/var/nfs/general /nfs/general nfs4 默认 0 0
现在,您可以使用 mount 命令确认它已安装:
[root@server1-LK ~]# mount -l | grep NFS
/var/lib/nfs/rpc_pipefs 上的 sunrpc 类型 rpc_pipefs (rw,relatime)
172.16.200.254:/var/nfs/general on /nfs/general 类型 nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans= 2、sec=sys、clientaddr=172.16.205.151、local_lock=none、addr=172.16.200.254)
从上面突出显示的文本可以看到,现在已经成功安装了。在所有服务器上重复此操作,直到确定所有服务器都已安装共享,然后再继续。
步骤 4:检查您的主机名并配置 /etc/default/LifeKeeper 设置:
您可以通过在每个节点上运行以下命令来查看 LifeKeeper 所知道的每个服务器的主机名:
/opt/LifeKeeper/bin/lcduname
您需要添加到 /etc/default/LifeKeeper 文件的设置示例:
WITNESS_MODE=存储
QWK_STORAGE_TYPE=文件
QWK_STORAGE_HBEATTIME=6
QWK_STORAGE_NUMHBEATS=9
QWK_STORAGE_OBJECT_server1_LK_localdomain=/nfs/general/nodeA
QWK_STORAGE_OBJECT_server2_LK_localdomain=/nfs/general/nodeB
对于“QWK_STORAGE_OBJECT_<server-name>”,您需要为每个节点声明它,它是使用您的主机名、路径以及见证文件本身的所需位置形成的。
需要注意的是,如果主机名包含“-”或“.”,请将其替换为下划线“_”(例如 lksios-1 → lksios_1 或 lksios-1.localdomain → lksios_1_localdomain )。
在我的示例中,我有以下主机名:
server1-LK.localdomain
server2-LK.localdomain
这意味着添加以下“QWK_STORAGE_OBJECT_”定义:
QWK_STORAGE_OBJECT_server1_LK_localdomain=/nfs/general/nodeA
QWK_STORAGE_OBJECT_server2_LK_localdomain=/nfs/general/nodeB
此外,我们需要调整 /etc/default/LifeKeeper 中的现有设置之一:
QUORUM_MODE=存储
为了帮助理解为什么我们将 WITNESS_MODE 和 QUORUM_MODE 设置为存储,请查看下表:
支持仲裁模式和见证模式的组合
LifeKeeper 支持以下组合。
法定模式 | |||||
多数 | tcp_远程 | 贮存 | 无/关 | ||
见证模式 | 远程验证 | 支持3个或更多节点 | 支持3个或更多节点 | 不支持 | 支持3个或更多节点 |
贮存 | 不支持 | 不支持 | 支持2到4个节点之间 | 不支持 | |
无/关 | 支持3个或更多节点 | 支持2个或更多节点 | 不支持 | 支持的 |
我们有一个双节点集群,想要使用外部存储来进行仲裁,因此唯一支持的组合是两个值的“存储”。但是,您可以从表中看到,当您需要更多节点时,这可以非常灵活,提供多种方式来实现通信并提供法定人数。
第四步:初始化见证文件:
要初始化见证文件并启用其使用,您必须在每个节点上运行以下命令:
[root@server1-LK ~]# /opt/LifeKeeper/bin/qwk_storage_init
运行时它将暂停,直到每个节点完成,因此在集群中的第一个节点上执行命令,然后在第二个节点上执行命令,依此类推,然后返回检查命令是否完成且没有错误。
例子:
[root@server1-LK ~]# /opt/LifeKeeper/bin/qwk_storage_init
好的:LifeKeeper 正在运行。
ok:LifeKeeper 许可证密钥已成功安装。
ok:QWK 参数有效。
/nfs/general/nodeA 的 QWK 对象尚不可用。
/nfs/general/nodeA 已存在,但不存在 QWK_STORAGE_OBJECT:覆盖? (是/否):是
ok:QWK对象的路径有效。
好的:向下:/opt/LifeKeeper/etc/service/qwk-storage:1377s
ok:本节点QWK对象初始化完成。
/nfs/general/nodeB 的 QWK 对象尚不可用。
/nfs/general/nodeB 的 QWK 对象尚不可用。
/nfs/general/nodeB 的 QWK 对象尚不可用。
/nfs/general/nodeB 的 QWK 对象尚不可用。
/nfs/general/nodeB 的 QWK 对象尚不可用。
/nfs/general/nodeB 的 QWK 对象尚不可用。
/nfs/general/nodeB 的 QWK 对象尚不可用。
ok:仲裁系统已准备就绪。
ok: 运行: /opt/LifeKeeper/etc/service/qwk-storage: (pid 14705) 1s, 正常down
成功的。
第 5 步:验证配置:
可以通过运行以下命令来验证配置:
/opt/LifeKeeper/bin/lktest
如果发现任何错误,它们将被打印到终端上。在下面的示例中,我没有替换主机名中的特殊字符,因此它突出显示无法找到存储。
[root@server1-LK ~]# /opt/LifeKeeper/bin/lktest
/opt/LifeKeeper/bin/lktest: /etc/default/LifeKeeper[308]: QWK_STORAGE_OBJECT_server1_LK.localdomain=/nfs/general/nodeA: 未找到
/opt/LifeKeeper/bin/lktest: /etc/default/LifeKeeper[309]: QWK_STORAGE_OBJECT_server2_LK.localdomain=/nfs/general/nodeB: 未找到
FS UID PID PPID C CLS PRI NI SZ STIME TIME CMD
4 S 根 2348 873 0 TS 39 -20 7656 15:49 00:00:00 lcm
4 S 根 2388 882 0 TS 39 -20 59959 15:49 00:00:00 ttymonlcm
4 S 根 2392 872 0 TS 29 -10 10330 15:49 00:00:00 液晶
4 S 根 8591 8476 0 TS 19 0 7670 15:58 00:00:00 lcdremexec -d server2-LK.localdomain -e — cat /proc/mdstat
您还可以通过命令行确认见证文件正在更新,如下所示:
[root@server1-LK ~]# cat /nfs/general/nodeA
签名=lifekeeper_qwk_object
local_node=server1-LK.localdomain
时间=2024年2月15日星期四14:10:56
序列=157
节点=server2-LK.localdomain
通讯状态=UP
校验和=13903688106811808601
使用 NFS 的成功文件共享见证
使用 NFS 设置文件共享见证非常简单!如果您仅限于两个节点,但需要更好地应对脑裂事件,那么它可能会很强大,特别是在云中,您可以利用 AWS 的 EFS 之类的东西……另一个重要部分可以是利用更多的通信路径,但这是一个不同的博客。但是,通过遵循本指南中概述的步骤,您可以增强集群应用程序的弹性并最大限度地降低停机风险。请始终参考SIOS文档以及进一步指导和优化高可用性设置的最佳实践。它是公开的并且非常全面!
SIOS 高可用性和灾难恢复
SIOS科技公司提供高可用性和灾难恢复通过针对最重要应用程序的集群管理来保护和优化 IT 基础设施的产品。今天联系我们有关我们的服务和专业支持的更多信息。
经许可转载安全操作系统