Akemi

Pacemaker双节点问题与仲裁部署

2025/08/18

如果情况非常特殊需要选择部署偶数节点的Pacemaker集群,也不是不行

脑裂问题挑战

在偶数节点集群容易受到脑裂的影响:
俩节点精确分成两半,都能正常工作且成为自己是正常的

红帽建议使用仲裁设备充当第三个节点

  • two_node标志

没有节点故障的余地,所以进行双机部署时,Pacemaker会自动设置votequorum为two_node标志,这种模式下集群将仲裁设置为1,只允许一个节点失败

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
cat /etc/corosync/corosync.conf.1754551840
totem {
version: 2
cluster_name: mycluster
transport: knet
crypto_cipher: aes256
crypto_hash: sha256
cluster_uuid: b5662f394e614019a9569b16c87edd4f
}

nodelist {
node {
ring0_addr: pcs1
name: pcs1
nodeid: 1
}

node {
ring0_addr: pcs2
name: pcs2
nodeid: 2
}
}

quorum {
provider: corosync_votequorum
two_node: 1
}

  • fence race

节点的私有网络与fence设备的网络不一定是一样的,所以节点间可能会互相隔离 ,通过fence把对方干掉

所以可以通过设置fence延迟,比如其中一个节点设置fence 30秒的隔离

  • fence loop

集群重启之后如果网络依然没有恢复,那就会再次把对方干掉,形成循环

所以可以通过给votequorum设置wait_for_all标志,等待资源完全起来之后再仲裁

  • 资源优先级

使用基于优先级的fencing,根据资源优先级激活延迟fencing,通过设置priority-fencing-delay集群属性

因为我是在虚拟环境里做的,没有物理fencing硬件

仲裁设备介绍

一般推荐双数节点的集群使用仲裁设备作为仲裁器

仲裁设备由两部分组成:Qnet守护进程、QDevice守护进程

  • QNet守护进程在单独的机器上运行,并且不使用集群网络,而是使用单独的网络。。多个集群可以共享同一个QNet守护进程
  • QDevice守护进程在所有集群节点上运行,与Qnet通信,并参与quorum投票

仲裁算法

  • ffsplit:投票给承载具有最低节点ID的节点
    使用pcs quorum status可以查看节点ID
  • lms:唯一存活节点优先,仅当分区内仅剩1个节点可与仲裁设备通信时,该节点获得所有投票

仲裁设备部署

仲裁设备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
现在我已经有一个双节点的Pacemaker集群

新搞一台主机,用来部署qnet
# yum安装
yum config-manager --set-enabled highavailability
yum -y install pcs corosync-qnetd
systemctl enable pcsd --now

# 集群身份验证
passwd hacluster

# 防火墙
firewall-cmd --permanent --add-service=high-availability
firewall-cmd --reload

# 创建net仲裁员
pcs qdevice setup model net --enable --start

集群设备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
所有节点安装corosync-qdevice
yum -y install corosync-qdevice

进行新仲裁节点认证
pcs host auth quorum -u hacluster -p 123456

声明仲裁设备
pcs quorum device add model net host=quorum algorithm=ffsplit

查看仲裁状态
pcs quorum status
Quorum information
------------------
Date: Mon Aug 18 16:53:57 2025
Quorum provider: corosync_votequorum
Nodes: 2
Node ID: 1
Ring ID: 1.53
Quorate: Yes

Votequorum information
----------------------
Expected votes: 3
Highest expected: 3
Total votes: 3
Quorum: 2
Flags: Quorate Qdevice

Membership information
----------------------
Nodeid Votes Qdevice Name
1 1 A,V,NMW pcs1 (local)
2 1 A,V,NMW pcs2
0 1 Qdevice

CATALOG
  1. 1. 脑裂问题挑战
  2. 2. 仲裁设备介绍
  3. 3. 仲裁设备部署