Highly Available Server Using Heartbeat in a Cluster
In this tutorial i will show how to setup heartbeat on two Ubuntu 12.04 machines.
One machine will take over the Cluster-IP in case the first machine fails.
At first, make sure that the two machines can resolve the hostnames.
You can do that by either using DNS or the “/etc/hosts” file.
Server 1&2 “/etc/hosts”:
127.0.0.1 localhost 192.168.1.116 server2 192.168.1.123 server1 192.168.1.70 cluster
You can check the hostname of your machine with
uname -u
or
hostname
192.168.1.70 is the Cluster-IP, which will be accessed by the clients of the server. It will be given to server1 by default, and taken over by server2 if server1 becomes unreachable.
Install heartbeat on both servers:
apt-get install heartbeat
Edit “/etc/ha.d/authkeys”
auth 1 1 md5 superstrongpassword
Now, make it unreadable for non-root users:
chmod 0600 /etc/ha.d/authkeys
auth 1 tells heartbeat to use the key #1 which is “superstrongpassword” as md5 key
Then, edit “/etc/ha.d/ha.cf” to look similiar like this one:
logfacility local0 #used to tell heartbeat which log facility to utilize for logging keepalive 2 #interval between heartbeat packets currently every 2 secs you could also use 2000ms deadtime 5 # timeout before the other server takes over ping 192.168.1.116 #address to ping to determine if we are alive udpport 694 #port to listen in on for broadcasts made by heartbeat bcast eth0 #device to use for broadcasts node server1 # hostname of one of our two nodes node server2 # hostname of other of our two nodes auto_failback on # very important or auto failover won't happen
This is the config for server1, 192.168.1.116 is the address of server2.
You have to place the IP of server1 in the file on server2 too.
Now tell it which services to cluster in “/etc/ha.d/haresources”:
server1 IPaddr::192.168.1.70/24/eth0 apache2
It tells heartbeat to take over the server apache2,
the cluster-IP is 192.168.1.70/24 and the network interface is eth0.
Furthermore it tells that server1 gets the Cluster-IP by default.
This means, server2 is only active, when server1 is not available and
it will switch back to server1 as soon as its on line after a failure.
Now, duplicate “/etc/ha.d/haresources” and “/etc/ha.d/authkeys” to server2.
Finally, start Heartbeat on both Servers:
/etc/init.d/heartbeat start
If you enter the Cluster-IP using http, you should see the files on server1,
shutdown server1 and you should see if server2 takes over.
Leave a Reply