Configuring A High Availability
Cluster (Heartbeat) On CentOS
This Post shows how you can set up a two node, high-availability
HTTP cluster with heartbeat on CentOS. Both nodes use the Apache web server to
serve the same content.
Pre-Configuration
Requirements :
Ø Assign hostname as nodeA
to primary node with IP address 192.168.1.1
to eth0.
Ø Assign hostname as nodeB
to slave node with IP address 192.168.1.2.
Please Verify the Hostnames on both nodes.
192.168.1.3
is the virtual IP address that will be used for our Apache webserver (i.e.,
Apache will listen on that address).
Configuration
Steps:
1. Download and install the heartbeat package. We are using CentOS so we will install heartbeat with yum:
#yum install heartbeat
or download these
packages:
heartbeat-2.08
heartbeat-pils-2.08
heartbeat-stonith-2.08
2.
Now we have to configure heartbeat on our two node cluster. Here we will deal
with three files.
They are:
authkeys
ha.cf
haresources
3.
Now moving to our configuration. But there is one more thing to do, that is to
copy these files to the /etc/ha.d directory. In our case we copy these files as
given below:
cp /usr/share/doc/heartbeat-2.1.2/authkeys /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.2/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.2/haresources /etc/ha.d/
4. Now let's start
configuring heartbeat. First we will deal with the authkeys file, we will use
authentication method 2 (sha1). For this we will make changes in the authkeys
file as below.
vi /etc/ha.d/authkeys
Then add the following lines:
auth 2
2 sha1 test-ha
Change the permission of the authkeys file:
chmod 600 /etc/ha.d/authkeys
5.
Moving to our second file (ha.cf) which is the most important. So edit the
ha.cf file with vi:
vi /etc/ha.d/ha.cf
Add the following lines in the ha.cf file:
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
initdead 120
bcast eth0
udpport 694
auto_failback on
node nodeA
node nodeB
Note: nodeA and nodeB
is the output generated by
uname -n
6.
The final piece of work in our configuration is to edit the haresources file.
This file contains the information about resources which we want to highly
enable. In our case we want the webserver (httpd) highly available:
vi /etc/ha.d/haresources
Add the following line:
nodeA 192.168.1.1 httpd
7.
Copy the /etc/ha.d/ directory from nodeA to nodeB:
scp -r /etc/ha.d/ root@nodeB:/etc/
8.
As we want httpd highly enabled let's start configuring httpd:
vi /etc/httpd/conf/httpd.conf
Add this line in httpd.conf:
Listen 192.168.1.3:80
9.
Copy the /etc/httpd/conf/httpd.conf file to nodeB:
scp /etc/httpd/conf/httpd.conf root@nodeB:/etc/httpd/conf/
10.
Create the file index.html on both nodes (nodeA & nodeB):
On nodeA:
echo "node1 apache test server" >
/var/www/html/index.html
On nodeB:
echo "node2 apache test server" > /var/www/html/index.html
11.
Now start heartbeat on the primary node1 and slave node2:
/etc/init.d/heartbeat start
12.
Open web-browser and type in the URL:
http://192.168.0.3
It will show node1
apache test server.
13.
Now stop the hearbeat daemon on node1:
/etc/init.d/heartbeat stop
In your browser type in the URL http://192.168.0.3 and
press enter.
It will show nodeB apache test server.
14.
We don't need to create a virtual network interface and assign an IP address
(192.168.0.3) to it. Heartbeat will do this for you, and start the service
(httpd) itself. So don't worry about this.
Note : Don't use the IP
addresses 192.168.1.1 and 192.168.1.2 for services. These addresses are used by
heartbeat for communication between nodeA and nodeB.
When any of them will
be used for services/resources, it will disturb hearbeat will not work.
Thank you for such a wonderful Information !!
ReplyDeleteHere is a list of Top LINUX INTERVIEW QUESTIONS
Linux FTP vsftpd Interview Questions
SSH Interview Questions
Apache Interview Questions
Nagios Interview questions
IPTABLES Interview Questions
Ldap Server Interview Questions
LVM Interview questions
Sendmail Server Interview Questions
YUM Interview Questions
NFS Interview Questions
Read More at :- Linux Troubleshooting
hello, can you please advise if this can be applied on two mysql nodes?
ReplyDelete