Creating a high-availability cluster is crucial to ensure continuous uptime for your critical services. In this tutorial, we’ll guide you through setting up a high-availability cluster using Pacemaker and Corosync. Pacemaker is an advanced, scalable High-Availability cluster resource manager while Corosync provides the messaging layer, which allows cluster nodes to communicate.
Pacemaker and CoroSync Configuration
Prerequisites
- Two or more servers with a Linux-based OS installed (we’ll use Ubuntu 20.04 for our examples)
- User with
sudo
privileges - Familiarity with the Linux command line interface
Step 1: Installing Necessary Packages
On each server, start by updating the system and installing necessary software packages.
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install pacemaker corosync
Step 2: Configuring Corosync
The first major step is configuring Corosync. Edit the Corosync configuration file found at /etc/corosync/corosync.conf
.
$ sudo nano /etc/corosync/corosync.conf
Enter the following configuration. Replace the bindnetaddr
field with your server’s network interface address.
totem {
version: 2
secauth: off
cluster_name: cluster_name
transport: udpu
interface {
ringnumber: 0
bindnetaddr: 192.168.1.1
mcastport: 5405
}
}
nodelist {
node {
ring0_addr: 192.168.1.1
nodeid: 1
}
node {
ring0_addr: 192.168.1.2
nodeid: 2
}
}
quorum {
provider: corosync_votequorum
two_node: 1
}
Step 3: Configuring Pacemaker
In this step, we’ll configure Pacemaker on both servers. We’ll also ensure that both Pacemaker and Corosync start on boot.
$ sudo systemctl enable pacemaker
$ sudo systemctl enable corosync
Now, restart both services to apply the changes.
$ sudo systemctl restart corosync
$ sudo systemctl restart pacemaker
To check the status of the cluster, use the crm_mon
command. It should show both nodes online.
$ crm_mon
Step 4: Adding Resources to the Cluster
In this step, we’ll add a service (resource) to the cluster. For demonstration purposes, we’ll add a basic IP address.
$ sudo crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 params ip="192.168.1.100" cidr_netmask="32" op monitor interval="30s"
Check the status of your cluster using crm_mon
. You should now see the IP address resource in your cluster.
Step 5: Setting Up Resource Groups
If you have more than one resource, it’s a good idea to group them together. This ensures that all resources in a group are located on the same node. To create a resource group:
$ sudo crm configure group WebServerGroup ClusterIP
This group can now be managed as a single entity.
This guide provided the basics for setting up a high-availability cluster with Pacemaker and Corosync. There are many more resources and options to explore in the Pacemaker and Corosync documentation.
Relevant Links
Related Articles