Configure a Failover Cluster with Pacemaker
Jun 08, 2023 • 0 Minute Read
High availability is a major buzzword in the IT industry and there are several reasons for this. As more and more business provide their services through the Internet, the need for these services to always be accessible has grown. Gone are the days when you would have to go to a physical storefront to purchase goods and services. Now, at any time of the day or night, you can purchase food, clothes, entertainment, or just about anything else you can think of and have it shipped to your front door or consumed on a media device. This is where high availability comes in. Ensuring that your services remain highly-available is key to succeeding in the modern marketplace. In this tutorial, we will walk through installing a Pacemaker cluster on two CentOS 7 servers and configuring it to ensure that our services remain highly-available.
Now we have successfully configured a failover cluster using Pacemaker! In the event of a node failure, the resources will automatically move to a working node in the cluster.
Install a Pacemaker Cluster
Pacemaker is a high availability Cluster Resource Manager (CRM) that can be used to manage resources, and ensure that they remain available in the event of a node failure. First, we need to install the Pacemaker package and the pcs command line tool. On both nodes, run:sudo yum install -y pacemaker pcsRun
firewall-cmd
commands on both nodes, and allow traffic for Pacemaker (TCP ports 2224, 3121, 21064, and UDP port 5405):
sudo firewall-cmd --permanent --add-service=high-availability sudo firewall-cmd --reloadStart and enable the pcsd service. Again, run these on both nodes:
sudo systemctl start pcsd.servicesudo systemctl enable pcsd.serviceSet the password for the
hacluster
user, again on both nodes, that is created during the package installation. This user will be used to authenticate to the other cluster nodes and to perform actions on the cluster:
sudo passwd haclusterOn
node1
, authenticate as the hacluster
user:
sudo pcs cluster auth NODE1 NODE2Generate and synchronize the corosync configuration on
node1
:
sudo pcs cluster setup --name cluster_name NODE1 NODE2
Start up the cluster on node1
:
sudo pcs cluster start --all
Configure Cluster Resources
Now that the cluster is up and running, we can create our cluster resources. First, we will create an IP address resource followed by an Apache HTTP server resource. Once the resources are created, we can set resources constraints to ensure that the IP address always starts before the Apache HTTP server and that the two resources always run together on the same node. Add an IP address resource to the cluster onnode1
:
sudo pcs resource create cluster_ip ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s
Install the Apache HTTP server on both nodes, and open the HTTP ports in the firewall:
sudo yum install -y httpd sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reloadOn both nodes, enable a status URL for health monitoring:
sudo cat > /var/www/html/index.html <<EOF SetHandler server-status Require local EOFAdd the Apache HTTP server resource to the cluster on
node1
:
sudo pcs resource create apache ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="https://localhost/server-status" op monitor interval=1min
Set a colocation constraint on node1
, to ensure that the cluster resources run on the same node:
sudo pcs constraint colocation add apache with cluster_ip INFINITY
Again, on node1
, set an order constraint to ensure that the cluster resources start in the correct order:
sudo pcs constraint order cluster_ip then apache
Verify the resource constraints on node1
:
sudo pcs constraint
Validate the status of the cluster resources on node1
:
sudo pcs status
Now we have successfully configured a failover cluster using Pacemaker! In the event of a node failure, the resources will automatically move to a working node in the cluster.