Skip to main content

Creating the Proxmox Cluster

One Flag That Makes or Breaks This

Everything in this chapter is straightforward except one thing: every pvecm command includes --link0 pointing to the private vSwitch IP. That flag is what binds Corosync's heartbeat to the private network instead of defaulting to eth0. Skip it and Corosync uses the public interface — cluster heartbeat and SSH share the same NIC, and any issue with that interface takes down both simultaneously. The flag takes two seconds to type. Use it every time.

Step 1 — Create the Cluster on Node 1

On node1 only. Replace <clustername> with a short lowercase name:

pvecm create <clustername> --link0 10.100.101.1
pvecm status

You should see 1 node, quorum achieved, and your cluster name. If it errors, check that vmbr_priv is up and has the right IP.

Step 2 — Confirm Corosync Is on the Right Interface

Five seconds that have saved me a painful undo more than once:

grep "ring0_addr" /etc/pve/corosync.conf

Must show 10.100.101.1. If it shows the public IP instead, stop here and fix it before adding any other nodes. Unwinding a misconfigured Corosync bind address after two nodes have already joined is a lot more work than catching it now. Remove the cluster, fix the bridge, and recreate:

pvecm expected 1
systemctl stop pve-cluster corosync
pmxcfs -l

Step 3 — Join Node 2

On node2 only:

pvecm add 10.100.101.1 --link0 10.100.101.2

You'll be prompted for node1's root password. After it completes:

pvecm status

Two nodes will show, but the cluster is fragile right now — with only two nodes, losing either one drops quorum to zero. Add node3 immediately, don't leave it at two.

Step 4 — Join Node 3

On node3 only:

pvecm add 10.100.101.1 --link0 10.100.101.3

After that completes, check from node1:

pvecm status

The key line to look for:

Votes:            3 expected, 3 total, 2 quorum

Three votes, quorum at 2 — the cluster can lose one node and keep running. That's what you want.

Step 5 — Check the Web UI

Open the Proxmox web UI on any node's public IP (port 8006). All three nodes should appear in the cluster tree on the left with green status. Give it up to a minute if any node shows offline right after joining — the initial sync takes a moment.

Quorum: Why Three Nodes and Not Two

Two nodes is asking for trouble. Quorum requires a strict majority of votes, so two nodes means both must be up at all times — any single failure freezes the cluster. Three nodes gets you fault tolerance without needing an external quorum device (QDevice). It's the minimum sensible cluster size.

NodesQuorum neededCan lose
22 of 20 — any failure freezes the cluster
32 of 31
43 of 41
53 of 52
74 of 73

Stick to odd numbers when you can — 3, 5, 7. Even node counts give you the same fault tolerance as the odd number below them with an extra machine.

Adding More Nodes Later

The process is the same as joining node2 and node3. On the new server: install Proxmox per the first guide in this series, add both vSwitch bridges per Chapter 3 here (use the next sequential IP — 10.100.101.4 for a 4th node, and so on), then:

pvecm add 10.100.101.1 --link0 <new_node_private_ip>

Corosync updates the quorum vote count automatically. No config file edits needed.