导读:本期聚焦于郭世昌创作的《RHEL集群仲裁quorum丢失如何排查与恢复?详解故障处理步骤》,敬请观看详情。当RHEL高可用集群出现仲裁quorum丢失时,集群可能无法正确判断节点状态,导致资源无法启动或脑裂风险。本文从故障现象入手,分析quorum机制在corosync和pacemaker中的工作原理,给出检查集群成员、corosync配置、投票系统状态的具体命令。随后介绍临时恢复仲裁的几种方式,包括手动设置expected votes、使用corosync-quorumtool调整参数,以及通过pcs命令强制启动资源。针对常见的双节点集群无仲裁设备场景,文章还提供配置qdevice或qnetd作为第三方仲裁的步骤,并说明如何验证集群恢复健康。全文结合命令输出和操作示例,帮助运维人员快速定位并解决RHEL集群quorum丢失问题。

RHEL集群仲裁quorum丢失如何排查与恢复?详解故障处理步骤

故障现象与quorum机制的本质

RHEL集群中,quorum(仲裁)是防止脑裂的关键机制。当节点之间的通信中断或节点数量不足以形成多数派时,集群会丢失quorum。此时用pcs status查看,通常会看到类似Current DC: NONE、No quorum的提示,所有资源都处于停止状态,集群拒绝启动任何服务。很多管理员第一次遇到时会误认为节点宕机,实际上节点可能全部在线,只是心跳网络或投票配置出了问题。

在corosync层面,quorum由votequorum服务提供。默认规则是:集群中存活节点数必须大于总节点数的一半(即expected votes的50%以上)才能拥有quorum。例如三节点集群失去一个节点后还剩两个,依然满足多数派;但两节点集群失去一个后就只剩一个,不满足半数以上,因此双节点集群必须额外配置仲裁设备(如qdevice)才能正常工作。此外,如果管理员手动修改过expected_votes或使用了two_node: 1等特殊配置,也会导致quorum判断异常。

确认当前quorum状态最直接的命令是corosync-quorumtool -s,它会输出Quorate: No或Yes,同时显示成员节点和投票数。另一个重要命令是pcs quorum status,它整合了pacemaker视角的仲裁信息。如果看到Quorum: No,说明pacemaker认为当前没有仲裁,资源会被冻结。

排查步骤:从心跳到投票的逐层检查

首先检查集群成员状态。运行pcs status nodes查看所有节点是否在线、是否被标记为UNCLEAN或OFFLINE。如果某个节点显示OFFLINE但实际机器在运行,可能是该节点的corosync进程挂了或网络被防火墙阻断。此时登录该节点执行systemctl status corosync,并检查/var/log/cluster/corosync.log中的错误。常见原因包括:心跳网卡down、UDP端口5405/5406被过滤、节点时间不同步导致token超时等。

其次检查corosync配置文件/etc/corosync/corosync.conf中的quorum部分。重点看provider: corosync_votequorum是否启用,expected_votes是否等于实际节点数(包括将来要加入的节点),以及双节点场景下是否有two_node: 1。配置错误会导致投票总数计算错误。例如三节点集群但expected_votes: 4,那么即使三节点全部存活也只获得3票,不足4的半数(2票?注意规则是存活节点数大于总票数的一半,即大于2,3>2应该满足,但corosync的判断是votes >= expected_votes/2 + 1,对于4票需要至少3票,3票满足,所以可能不会有问题。但若expected_votes设成5,则需要至少3票?5/2+1=3.5取整为4?实际corosync要求total_votes > expected_votes/2,也就是存活节点所持有的票数之和必须严格大于expected_votes的一半。如果expected_votes=5,半数=2.5,存活节点票数至少3才行。如果实际只有2个节点存活且每个节点1票,则2>2.5为假,丢失quorum。所以配置错误确实会导致仲裁丢失。)务必核对准确。

如果集群曾使用qdevice或qnetd作为第三方仲裁,要检查qdevice服务是否正常运行。执行pcs qdevice status查看qdevice是否在线,以及它的投票是否被计入。qdevice通常部署在独立主机上,通过corosync-qdevice服务提供额外的一票。当双节点集群中一个节点宕机时,存活节点加上qdevice的票就能满足多数派。如果qdevice网络不通或证书过期,存活节点将无法获得qdevice的投票,从而丢失quorum。

临时恢复与永久修复方案

在紧急情况下,如果确认所有节点本身健康但quorum因配置或短暂网络抖动丢失,可以临时手动授予quorum。使用命令corosync-quorumtool -e 1可以强制设置期望票数为1,但这个方法会绕过安全机制,仅适用于测试环境或确认不会发生脑裂的场景。更规范的做法是使用pcs quorum expected-votes 1来调整期望票数,这样即使只剩一个节点也能获得仲裁。操作完成后需要尽快恢复正确配置,否则集群失去防护能力。

对于双节点生产集群,推荐配置qdevice。在两节点上都安装corosync-qdevice,然后在一台独立主机(可以是虚拟机或物理机,但不要与集群节点同机)上安装corosync-qnetd并启动服务。然后在集群节点上执行pcs quorum config相关命令将qdevice加入集群。配置完成后,qnetd会监听5403端口,qdevice进程会自动连接并参与投票。验证命令pcs quorum status应显示三个投票来源(两个节点各一票,qdevice一票)。这样即使一个节点完全宕机,另一个节点加上qdevice也能达到多数派(2票>1.5),集群可以继续运行资源。

如果集群规模较大(例如五节点以上),丢失quorum往往是多个节点同时故障或网络分区导致。此时首先要恢复节点间的网络连通性,然后观察corosync自动重建成员关系。切忌在分区情况下手动强制启动资源,否则可能造成数据不一致。可以使用pcs cluster stop --all先停止所有节点,再逐个启动,确保成员列表干净。对于反复出现quorum丢失的环境,建议检查交换机配置、网卡驱动、以及corosync的token超时参数(默认1000ms,可适当调大到3000ms以容忍网络抖动)。

最后展示一个排查过程的命令序列示例:

# 查看集群总体状态
pcs status
# 查看quorum详细信息
corosync-quorumtool -s
pcs quorum status
# 查看节点成员
pcs status nodes
# 检查corosync配置中的quorum段落
grep -A5 'quorum' /etc/corosync/corosync.conf
# 临时调整期望票数(谨慎使用)
pcs quorum expected-votes 1
# 恢复为实际节点数
pcs quorum expected-votes 2
# 配置qdevice(双节点集群)
pcs quorum config
pcs qdevice setup model net --enable --start
pcs qdevice status net

通过以上步骤,管理员可以系统化地定位RHEL集群quorum丢失的根因,并选择临时或永久方案恢复集群可用性。日常运维中建议定期检查corosync日志和qdevice健康状态,避免因小问题积累导致大面积仲裁故障。

RHEL集群仲裁丢失quorum修改时间:2026-09-18 16:43:34

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/0918/58886.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。