Provision a 3-node cluster
This is the canonical lab for getting a cluster off the ground. The goal is a working 3-node cluster ready for VM workloads, with traffic separation between management and cluster communication.
Environment
| Host | IP (mgmt) | IP (corosync) |
|---|---|---|
| pve-01 | 10.0.0.11/24 | 10.0.1.11/24 |
| pve-02 | 10.0.0.12/24 | 10.0.1.12/24 |
| pve-03 | 10.0.0.13/24 | 10.0.1.13/24 |
Steps
1. Post-install hardening on each host
On every node:
# Disable the enterprise repo if you do not have a subscription
sed -i 's/^/#/' /etc/apt/sources.list.d/pve-enterprise.list
# Add the no-subscription repo
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" \
> /etc/apt/sources.list.d/pve-no-subscription.list
apt update && apt full-upgrade -y
2. Configure corosync network (optional but recommended)
Edit /etc/network/interfaces on each node to add the second NIC. Use
a separate physical NIC for the corosync link to avoid head-of-line
blocking with management traffic.
3. Initialise the cluster on pve-01
pvecm create mycluster --link0 10.0.1.11
Verify:
pvecm status
# Expected: Quorate: Yes, Nodes: 1, Active votes: 1
4. Join pve-02 and pve-03
On pve-01, get the join information:
pvecm expected 1 # Reset expected votes before joining
On pve-02 and pve-03:
pvecm add 10.0.0.11 --link0 10.0.1.12
pvecm add 10.0.0.11 --link0 10.0.1.13
5. Verify the cluster
From any node:
pvecm status
# Expected: Nodes: 3, Active votes: 3
pvecm nodes
In the GUI, the cluster view should show all three nodes green with identical versions.
Verification
pvecm statusreportsQuorate: YesandNodes: 3- The cluster dashboard in the GUI shows three green nodes
/etc/pve/corosync.confon every node lists all three nodesha-manager status(after enabling HA on at least one VM) lists the manager
Cleanup
# On the nodes you want to remove:
pvecm delnode pve-0X
# On pve-01, after removing all others:
pvecm destroy
This is destructive — only run cleanup if you’re throwing away the lab.