Proxmox: quorum configuration with a cluster of 2 servers

In this tutorial, I will explain how to configure quorum with a Proxmox cluster composed of two servers.

Before starting this tutorial, we will talk about Quorum.

What is Quorum

Here is a brief definition of Quorum: it is the minimum number of voters necessary in an assembly to make a decision.

Transposed into computing within a cluster whether Proxmox or Hyper-V, the assembly is represented by the number of servers which make up the cluster, this Quorum makes it possible to maintain the service in HA.

Each member of the cluster has the same weight during a vote and to validate the decision, the voting result must be 51%.

When setting up a cluster with two nodes, in the event of loss of a cluster node, the quorum cannot be reached because the remaining server represents only 50% of the vote and in this case, there is the vote fails and therefore the high availability service cannot be ensured.

To overcome this voting failure when we have a cluster with two nodes, we add a witness which allows us to have an additional vote, which in the case with 2 nodes + a witness each voter represents 33%, in the case of loss of a node in the cluster, the total remaining voters are 66% and therefore Quorum is reached and the service(s) maintained in high availability.

The witness can be of different types:

  • Additional server
  • Witness disk like on Hyper-V

Quorum is an essential element in setting up a Cluster.

If you want to know Microsoft has written a complete article on Quorum : https://learn.microsoft.com/fr-fr/azure-stack/hci/concepts/quorum

Quorum in Proxmox

Proxmox is designed to work with at least 3 servers and to compensate for the loss of a server, so Proxmox no longer integrates the cookie functionality.

Clustering in Proxmox is managed with Corosync and it is possible to configure a device as a witness for Quorum.

Ceph Warning

Le cluster Ceph fonctionnant de façon indépendante du cluster Proxmox, ce ne permet pas de faire fonctionner un cluster Ceph correctement avec deux nœuds.

Prerequisites

To use a Proxmox Cluster with two servers you must:

  • To use a Proxmox Cluster with two servers you must:
  • A Linux machine that does not work on the Proxmox cluster that we will use as a witness when installing the corosync-qnetd package.

In this tutorial, I will use an Ubuntu machine hosted on another virtualization system.

Installing and configuring a Quorum witness for Proxmox

We will start by configuring the server which will serve as a witness.

Install the package : corosync-qnetd

sudo apt install corosync-qnetd -y

We will now configure the SSH connection of the Proxmox servers on the witness server.

On the Proxmox server which will be used for the Quorum configuration display the public key:

cat /root/.ssh/id_rsa.pub

On the server made root:

sudo su root

Open the root user’s authorized_keys file to add the public key:

nano /root/.ssh/authorized_keys

Paste the public key:

The server which will serve as a witness is ready.

Before starting the witness configuration, here is the Quorum configuration on the Proxmox cluster obtained with the command:

pvecm status

As we can see, only the two member servers of the cluster have voting rights.

On each Proxmox server install the package : corosync-qdevice.

apt install corosync-qdevice -y

Now that everything is installed on the 2 Proxmox servers, we will move on to the Quorum configuration.

From the Proxmox server which has its public key configured on the cookies server enter the following command:

pvecm qdevice setup witness-server-ip

Confirm SSH connection:

Wait while configuring…

As we can see in the screenshot, the configuration is done on the two Proxmox servers.

Once the configuration is complete, display the Quorum configuration again:

pvecm status

This time, we can see that we have 3 voters, QDevice has been added.

In the configuration file /etc/pve/corosync.conf we also find the server configured as a witness.

The cookie configuration is complete. With this configuration, you can set up a cluster of two Proxmox servers with SAN type storage and have a highly available virtualization infrastructure.

Alternative solution only for testing

There is an alternative solution valid only for testing, which consists of modifying the number of a Cluter server.

  1. Open the file /etc/pve/corosync.conf
  2. On one of the nodes change the quorum_votes parameter from 1 to 2.
  3. Increment config_version value to +1 for synchronization

To test the HA between Proxmox servers, you can power off the node that has a single vote and check the failover.

This solution should definitely not be used in production, because if the node with 2 votes falls, the other node will not take over from the HA because the Quorum will not be reached.




Leave a Comment