在 Proxmox VE (PVE) 集群中引入 QDevice (Quorum Device) 是解决偶数节点(尤其是双节点)集群“票数不足”或防止“脑裂”现象的经典方案。它作为一个外部仲裁者,不运行虚拟机,只负责提供额外的一票。

以下是安装和配置 QDevice 的详细步骤:

1. 准备工作

  • 一台外部主机: 需要一台独立的 Linux 服务器(建议是 Debian/Ubuntu,也可以是 Raspberry Pi 或低配 VPS)。它不需要安装 PVE。
  • 网络连接: PVE 集群所有节点必须能通过 SSH 访问这台外部主机。
  • SSH 密钥: 确保 PVE 节点可以免密登录到外部主机(PVE 在设置过程中通常会自动处理这一点)。

2. 在外部主机上安装 (QNetD)

这台机器将充当服务端(Server),负责收集各节点状态。

Bash

# 更新并安装 corosync-qnetd
sudo apt update
sudo apt install corosync-qnetd

安装完成后,确保 corosync-qnetd 服务已启动并运行:

Bash

systemctl status corosync-qnetd

3. 在所有 PVE 节点上安装 (QDevice)

你需要进入每一个 PVE 节点的终端执行以下操作:

Bash

# 安装 qdevice 客户端组件
apt update
apt install corosync-qdevice

4. 将 QDevice 添加到集群

只需在 其中一个 PVE 节点上执行一次此命令即可。

Bash

# 将 <QDevice-IP> 替换为你外部主机的 IP 地址
pvecm qdevice setup <QDevice-IP>

执行过程说明:

  • 系统会提示你输入外部主机的 SSH 密码。
  • 它会自动在 PVE 集群与外部主机之间交换证书。
  • 配置完成后,Corosync 会自动重启以应用新票数。

5. 验证状态

在任意 PVE 节点运行以下命令查看投票情况:

Bash

pvecm status

在输出的 Quorum information 部分,你应该能看到:

  • Vote: 1 (来自 QDevice)。
  • Total votes 应该是 节点数 + 1。
  • Device: Qdevice 状态应该是 Connected。

常见问题与注意点

  • 防火墙: 确保外部主机开启了 UDP 5404-5405 (Corosync) 和 TCP 5403 (QNetD) 端口。
  • 节点一致性: 必须确保所有 PVE 节点都安装了 corosync-qdevice 包,否则 pvecm qdevice setup 会失败。
  • 移除 QDevice: 如果以后想拆除,可以运行 pvecm qdevice remove。