Setting up a High Availability (HA) cluster in a homelab environment transforms isolated hypervisors into a fault-tolerant infrastructure pool. By combining multiple Proxmox nodes, distributed Ceph storage, and a lightweight quorum device (QDevice), workloads can seamlessly failover across hardware boundaries without manual intervention.
1. Architecture Overview & Node Layout
Our cluster architecture consists of primary and secondary nodes interconnected via dedicated cluster networks, supported by a lightweight external tie-breaker node.
- Node pve (`10.0.10.21`): Acts as a Monitor (MON), Manager (MGR), and OSD storage host.
- Node pve2 (`10.0.10.30`): Acts as a Monitor (MON), Manager (MGR), and active Ceph peer.
- Node pve3 (`10.0.10.40`): Extended cluster node running configuration monitor services.
- QDevice (`10.0.10.55`): External tie-breaker node running
corosync-qnetdto prevent split-brain scenarios in a 2-node majority environment[cite: 6].
2. Initial Storage Re-allocation (LVM to Root)
Fresh Proxmox installations often allocate a large chunk of space to local-lvm (`data`), which is unnecessary if you are shifting fully toward shared network storage or Ceph. To reclaim this disk space and expand the root volume:
# Access node shell and run[cite: 6]:
lvremove /dev/pve/data
lvresize -l +100%FREE /dev/pve/root
resize2fs /dev/mapper/pve-root
3. Configuring Ceph Storage Pools & Replication
When managing a two-node or restricted cluster layout, default pool sizes may throw health warnings if configured for 3 replicas. To correct pool sizing and unblock writes:
ceph osd unset noup
ceph osd unset noout
# Set pool size and minimum size for replication[cite: 6]
ceph osd pool set ceph-pool size 2
ceph osd pool set ceph-pool min_size 1
ceph config set global osd_pool_default_size 2
ceph config set global osd_pool_default_min_size 1
# Apply configuration to system pools like .mgr[cite: 6]
ceph osd pool set .mgr size 2
ceph osd pool set .mgr min_size 1
Once applied, verify cluster status using ceph status[cite: 6]. The health output should return HEALTH_OK with active OSD daemons and quorum synchronized[cite: 6].
4. Establishing Quorum with QDevice
Because a cluster requires an odd number of votes to maintain quorum securely during a node failure, setting up a Corosync QDevice on a lightweight external device (such as a Raspberry Pi or auxiliary VM at `10.0.10.55`) is essential[cite: 6].
apt install corosync-qnetd -y
systemctl enable --now corosync-qnetd
# On the primary Proxmox node[cite: 6]:
pvecm qdevice setup 10.0.10.55
# On other cluster nodes[cite: 6]:
apt update && apt install corosync-qdevice -y
Verify that the cluster is fully quorate by running pvecm status. You should see Quorate: Yes with expected votes matching your nodes plus the QDevice[cite: 6].
Conclusion
With local storage optimized, Ceph replication tuned, and a stable QDevice tie-breaker integrated, your Proxmox HA cluster is robust against single-node hardware failures. Containers and virtual machines can now migrate dynamically across nodes with complete data integrity.
About the Author
Nirmal Himansha is an IT Administrator and infrastructure engineer specializing in Proxmox virtual environments, enterprise storage arrays, and self-hosted high-availability architectures.