在 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-qnetd3. 在所有 PVE 节点上安装 (QDevice)
你需要进入每一个 PVE 节点的终端执行以下操作:
Bash
# 安装 qdevice 客户端组件
apt update
apt install corosync-qdevice4. 将 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。