Proxmox Cluster Setup: Multi-Node Configuration Guide

Proxmox official documentation screenshot gui-cluster-create.png

A Proxmox cluster joins several nodes into one management domain: a single web UI, shared configuration, and the ability to migrate guests between nodes. Underneath,
corosync tracks which nodes are alive and whether the cluster has quorum, and the Proxmox cluster filesystem replicates
/etc/pve to every node.

This guide covers the prerequisites that prevent most cluster problems, the corosync network, creating and joining, quorum and two-node clusters, and day-two operations.
Once it works, continue with live migration and high availability.

Quick answer: pvecm create mycluster on the first node, pvecm add <first-node-ip> on each new node (which must have no guests).

What a Cluster Shares

The cluster filesystem (pmxcfs) keeps /etc/pve identical on every node, so VM configs, storage definitions and firewall rules are cluster-wide. Corosync decides membership and quorum; without quorum, /etc/pve becomes read-only to prevent split-brain.

architecturecluster.txt
  pve1 <--corosync--> pve2 <--corosync--> pve3
    \______ /etc/pve replicated by pmxcfs ______/
Cluster components
pmxcfs, corosync, one UI

Get the Prerequisites Right

Each node needs a unique hostname and a static IP that resolves correctly, all nodes should run the same Proxmox version, and clocks must be in sync. Time sync is not optional: corosync and Ceph misbehave when clocks drift (see the chrony guide).

bashcheck on every node
hostname -f
getent hosts $(hostname)
pveversion
chronyc tracking | grep -E 'System time|Leap'
Cluster prerequisites
Hostnames, versions, time

Plan the Corosync Network

Corosync needs low, stable latency (a few milliseconds at most), not bandwidth. Give it a dedicated network or VLAN, separate from storage and migration traffic that can saturate a link, and add a second link for redundancy.

WarningPutting corosync on the same saturated link as backups or Ceph is a classic cause of nodes randomly dropping out of the cluster.
Corosync network
Low latency, dedicated, redundant

Create the Cluster on the First Node

Use Datacenter → Cluster → Create Cluster, or the shell. Specify the corosync link address explicitly.

bashcreate with two corosync links
pvecm create mycluster --link0 10.10.40.11 --link1 192.168.1.11
pvecm status
Creating the cluster
pvecm create

Join Additional Nodes

The joining node must have no VMs or containers, because its /etc/pve is replaced by the cluster’s. Join from the new node, pointing at an existing member.

bashon the new node
pvecm add 10.10.40.11 --link0 10.10.40.12 --link1 192.168.1.12
pvecm nodes
TipIn the web UI, copy the Join Information from the first node and paste it into Join Cluster on the new one.
Joining nodes
Empty node, pvecm add

Understand Quorum

Each node has one vote and the cluster needs a majority to make changes. Three nodes tolerate one failure; four nodes still only tolerate one. With two nodes, losing either one loses quorum.

bashsee votes and quorum
pvecm status | grep -A6 Votequorum
Quorum
Majority of votes

Add a QDevice to a Two-Node Cluster

A QDevice is a small external host (a Raspberry Pi or tiny VM elsewhere) that provides a third vote, so a two-node cluster keeps quorum when one node is down.

bashon the external host (Debian)
apt install -y corosync-qnetd
bashon every cluster node, then from one node
apt install -y corosync-qdevice
pvecm qdevice setup 192.168.1.50
QDevice
A third vote for two nodes

Day-Two Operations

Check health regularly. To remove a node that has permanently failed, power it off for good and delete it from a remaining member; it must never come back online with its old identity.

bashhealth and removal
pvecm status
pvecm nodes
# only after the node is permanently off:
pvecm delnode pve3
Cluster operations
Status, nodes, delnode

How many nodes do I need for a Proxmox cluster?

Two work, but need a QDevice to keep quorum when one node is down. Three is the practical minimum for high availability without extra hardware.

Can I join a node that already has VMs?

No. The joining node’s /etc/pve is replaced by the cluster’s. Back up and remove its guests first, then restore them after joining.

What happens when a Proxmox cluster loses quorum?

/etc/pve becomes read-only on the nodes without quorum, so you cannot start, create or change guests until quorum returns. Running guests keep running.

Does corosync need a fast network?

It needs low, consistent latency rather than bandwidth. A dedicated network or VLAN, separate from storage and migration traffic, is strongly recommended.

How do I remove a dead node from a Proxmox cluster?

Make sure it is permanently powered off, then run pvecm delnode nodename from a remaining member.

Cheat Sheet

  • Unique hostnames, same version, time sync; dedicated corosync link (+ second link)
  • pvecm create / pvecm add (empty node); QDevice for two nodes

Related tutorials

Diagrams are original illustrations by Gnome IT Solutions. Tutorial text © Gnome IT Solutions.