Heartbeat vs UCarp

6,900

i assume you're interested in simple active-passive setup.

ucarp & heartbeat in such setup do pretty much the same thing. in essence - they run provided scripts when machine is elected to be master / hot-standby.

heartbeat might look much more complicated [ since it can help you autoamte drdb mounts, restarting multiple services etc ] but at the end - you can script all of this and let ucarp invoke it].

personally - i run heartbeat with single resource - that is script that does following:

  • [un]binds appropriate ip address
  • runs couple of arp-broadcasts
  • starts[stops] required services

my very simplistic setup [ heartbeat 2.1.3-6 under debian lenny ]: i have two servers:

  • ser0 [preferred active node] with permanently assigned 10.0.0.2/24 at eth0
  • ser0b [hot-standby node waiting to replace master] with permanently assigned 10.0.0.3/24 at eth0

'floating ip' - assigned to the active node is 10.0.1.1/24 assigned to eth1

in this case service that gets high availability is apache. i separately sync apache's configs and content that is served from ser0 to ser0b.

files below are identical on both machines with one marked exception:

/etc/ha.d/authkeys:

auth 1
1 md5 somethingrandom

/etc/ha.d/haresources

ser0 ha.sh

/etc/ha.d/ha.cf

keepalive 2
deadtime 10
udpport        694 
; below - address permanently assigned to the peer node . this is for master:
ucast eth1 10.0.0.3
; and on slave i have 
; ucast eth1 10.0.0.2
udp     eth0
logfacility     local0
auto_failback on

node    ser0
node    ser0b

/etc/init.d/ha.cf [ it can as well be in /etc/ha.d/resources.d/ha.cf ]

#!/bin/bash
case "$1" in
  start)
        ip link set dev eth1 up
        # bind 'floating' ip to the interface
        ip a a 10.0.1.1/24 dev eth1
        # you might want to add some route-changes here if needed
        /usr/lib/heartbeat/send_arp -r 10 eth1 10.0.0.1 auto 10.0.0.255 255.255.255.0
        # to make sure apache reloads it's config when machine becomes master
        /etc/init.d/apache2 restart
  ;;

  stop)
        # we are no longer active, un-bind 'floating' ip from the interface
        ip a d 10.0.1.1/24 dev eth1
        # you could stop it as well or just skip this step
        /etc/init.d/apache2 restart
  ;;
esac
exit 0
Share:
6,900

Related videos on Youtube

SyRenity
Author by

SyRenity

Updated on September 17, 2022

Comments

  • SyRenity
    SyRenity almost 2 years

    Can anyone explain what is the major difference between Heartbeat and UCarp for IP fail-over scenarios?

    They both seem to provide this functionality, perhaps UCarp simpler to set-up?

    Thanks.

  • SyRenity
    SyRenity over 14 years
    Hi. Thanks for the clarification. It looks heartbeat more attractive as it can provide more functionality which might be needed down the road. Can you post a sample of your resource, at pastebin (pastebin.com) for example? Thanks in advance!