Сердцебиение против UCarp
Кто-нибудь может объяснить, в чем основная разница между сценариями отказов Heartbeat и UCarp для IP?
Кажется, они оба предоставляют эту функциональность, возможно, UCarp проще в настройке?
Благодарю.
1 ответ
Я предполагаю, что вы заинтересованы в простой активно-пассивной настройке.
ucarp & heartbeat в такой настройке делают одно и то же. в сущности - они запускают предоставленные сценарии, когда компьютер выбран в качестве главного / горячего резерва.
heartbeat может выглядеть намного сложнее [поскольку он может помочь вам автоматически монтировать drdb, перезапускать несколько служб и т. д.], но в конце - вы можете написать все это и позволить ucarp вызывать его].
лично - я запускаю heartbeat с одним ресурсом - это скрипт, который выполняет следующее:
- [un] связывает соответствующий IP-адрес
- запускает пару arp-трансляций
- запускает [останавливает] необходимые услуги
моя очень упрощенная настройка [ heartbeat 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