Назад | Перейти на главную страницу

Heartbeat против UCarp

Может ли кто-нибудь объяснить, в чем основное различие между Heartbeat и UCarp для сценариев переключения при отказе IP?

Кажется, что они оба обеспечивают эту функциональность, возможно, UCarp проще в настройке?

Спасибо.

Я предполагаю, что вас интересует простая активно-пассивная установка.

ucarp и heartbeat в такой настройке делают примерно то же самое. по сути - они запускают предоставленные сценарии, когда машина выбрана в качестве главного / горячего резервирования.

heartbeat может показаться намного более сложным [поскольку он может помочь вам автоматически подключать drdb, перезапускать несколько служб и т. д.], но, в конце концов, вы можете создать скрипт для всего этого и позволить ucarp вызывать его].

лично - я запускаю сердцебиение с одним ресурсом - это сценарий, который делает следующее:

  • [un] связывает соответствующий IP-адрес
  • запускает пару arp-трансляций
  • запускает [остановки] необходимые услуги

моя очень упрощенная настройка [сердцебиение 2.1.3-6 под debian lenny]: у меня два сервера:

  • ser0 [предпочтительный активный узел] с постоянно назначенным 10.0.0.2/24 на eth0
  • ser0b [узел горячего резервирования, ожидающий замены ведущего] с постоянно назначенным 10.0.0.3/24 на eth0

'плавающий ip' - активному узлу назначен 10.0.1.1/24, назначен eth1

в этом случае служба, обеспечивающая высокую доступность, - это apache. Я отдельно синхронизирую конфигурации apache и контент, который обслуживается с ser0 на ser0b.

файлы ниже идентичны на обеих машинах с одним отмеченным исключением:

/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 [он также может быть в /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