Buying a second Proxmox node to remove a single point of failure is the right instinct. Then you cluster them, reboot one for updates, and discover the survivor will not start guests. Two nodes means two votes. Majority of two is two. Losing either one leaves you below it, and a Proxmox node without quorum refuses to act. You have to solve this before forming the cluster, not after.
This is not a bug and it is not conservatism. It is the only safe behaviour available.
A node that has lost contact with its peer cannot tell the difference between two situations: the peer is down, or the peer is alive and the network between them broke. In the second case, both nodes are sitting there deciding whether to start the same guests off the same shared storage. Two nodes running the same VM against one disk destroys the filesystem in seconds.
Requiring a majority makes that impossible, because both halves of a split cannot both hold one. With only two votes in the cluster there is no majority to be had by one node, so the survivor stops. Correct, and not what you wanted.
pvecm status
# Expected votes: 2
# Highest expected: 2
# Total votes: 1 <-- one node gone
# Quorate: No <-- nothing will start
A QDevice is an external tiebreaker running corosync-qnetd. It holds a vote, it does not run
guests, and it does not need to be anything like a Proxmox host. Three votes means one node plus the QDevice
is two of three, a real majority, so the survivor keeps running.
# on the external voter
apt install corosync-qnetd
# on both cluster nodes
apt install corosync-qdevice
# from one node
pvecm qdevice setup <qdevice-ip>
pvecm status # Expected votes: 3
Adding a node quietly invalidates work you already did, because several settings are per-node rather than cluster-wide:
pct list and qm list sees the local node only. It needs to become cluster-aware
or be deployed on both.Once real quorum exists, Proxmox HA can restart guests elsewhere when a node fails. That supersedes a homegrown watchdog for node failure, and it is worth having.
It does not cover the other case, which is more common: a guest that is stopped while its node is perfectly healthy. HA sees a healthy node and does nothing. Something crashed, something was stopped by hand and never restarted, an update left it down. Keep a watchdog for that, and see a guest watchdog with an escape hatch.
There is a documented escape hatch, and it is a genuine footgun:
pvecm expected 1 # temporarily lower the expected vote count
That tells the survivor to consider itself quorate alone. It gets your guests running now, and it disables the exact protection that prevents both nodes writing to the same disk. Use it to recover a real outage, undo it the moment the peer is back, and never leave it in place as a configuration. If you find yourself reaching for it routinely, you needed a QDevice.