跳转到内容

集群与高可用 ​

把几台 PVE 组成集群,能得到:一套界面管所有节点、客户机在节点间迁移、配置自动同步。再加上共享存储和 fencing,还能做高可用。

代价是复杂度显著上升,以及一类新的故障模式:集群本身出问题。

核心概念:quorum(仲裁) ​

集群靠 corosync 维持成员关系,用 quorum 决定「谁说了算」。

规则很简单:一个分区必须持有超过半数的投票,才有资格继续提供服务。

节点数需要的票数能容忍几台故障
220
321
431
532

两节点集群比单机更脆弱

两节点集群需要 2 票才有 quorum。这意味着任何一台节点故障或网络断开,剩下那台也会失去 quorum——/etc/pve 变成只读,客户机不能启动、不能修改配置。

结果是:两台机器,任何一台出问题,两台都不能正常工作。这比单机还差。

想要两节点,必须加一个 QDevice(一个只投票不跑客户机的轻量仲裁节点,可以是一台树莓派)。或者直接上三节点。

查看当前状态:

sh
pvecm status

关注 Quorate: Yes 和 Expected votes / Total votes。

HA 的前提条件 ​

高可用(节点挂了,客户机自动在别的节点上拉起来)需要:

  1. 至少 3 个节点(或 2 节点 + QDevice)。
  2. 共享存储。客户机磁盘必须在所有节点都能访问的存储上(Ceph、NFS、iSCSI)。磁盘在本地存储上的客户机,别的节点拉不起来。
  3. 可靠的 fencing。PVE 用 watchdog 实现:失去 quorum 的节点会自我重启,确保不会出现两个节点同时跑同一台客户机(脑裂)。

「它为什么自己重启了」

这是 HA 最常见的困惑。答案通常是:这个节点失去了 quorum,watchdog 把它重启了。

这是设计如此,不是故障。脑裂导致的数据损坏比一次重启严重得多。

但这也意味着:corosync 的网络必须可靠。网络抖动会被当成节点失联,触发不必要的重启。生产环境建议给 corosync 独立的网络链路。

本章文章 ​

组建与维护集群

  1. 组建集群:前置条件、创建与加入的步骤,以及加入会怎样覆盖节点的 /etc/pve。
  2. 给两节点集群加 QDevice:用一台不跑客户机的小设备补上第三票。
  3. 在线迁移与离线迁移:什么条件下能不停机搬家。
  4. 安全移除节点:按官方顺序体面地请出一个节点,避免留下幽灵节点。

高可用(HA)

  1. 高可用入门:fencing 与 watchdog:打开 HA 前要懂的两个后台角色和资源状态。
  2. HA 资源与 affinity 规则:PVE 9 用 node-affinity/resource-affinity 规则取代了旧的 HA Groups。
  3. CRS 调度与动态负载均衡:PVE 9.2 新增的持续自动均衡。
  4. 维护模式与 HA arm/disarm:单节点维护模式,和集群级的一键 disarm。

组集群之前想清楚

集群不是「多台机器的自然升级」。它引入了新的依赖(corosync 网络、时间同步、共享存储)和新的故障模式。

如果你的三台机器各跑各的、互不相关,不组集群更简单。 组集群的理由应该是:需要迁移、需要统一管理、或者需要 HA。

单机也能用的相关知识 ​

即使不组集群,这些也值得知道:

  • /etc/pve 是 pmxcfs,一个由数据库支撑的 FUSE 文件系统。单机时它也在跑。它变成只读通常意味着 pve-cluster 服务出了问题。
  • 集群配置在 /etc/corosync/corosync.conf(单机没有这个文件)。
  • pvecm status 在单机上也能跑,会显示这是一个单节点。

继续浏览 ​

Proxmox VE 非官方中文使用指南,与 Proxmox Server Solutions GmbH 无隶属关系。