High-Availability

心跳與 UCarp

  • January 11, 2010

誰能解釋 IP 故障轉移場景中 Heartbeat 和 UCarp 之間的主要區別是什麼?

他們似乎都提供了這個功能,也許 UCarp 設置起來更簡單?

謝謝。

我假設您對簡單的主動-被動設置感興趣。

ucarp 和 heartbeat 在這種設置中做的事情幾乎相同。本質上 - 當機器被選為主/熱備用時,它們執行提供的腳本。

心跳可能看起來要復雜得多

$$ since it can help you autoamte drdb mounts, restarting multiple services etc $$但最後 - 您可以編寫所有這些腳本並讓 ucarp 呼叫它]。 就個人而言 - 我用單一資源執行心跳 - 這是執行以下操作的腳本:

  • $$ un $$綁定合適的ip地址
  • 執行幾個 arp 廣播
  • 開始$$ stops $$所需服務

我非常簡單的設置

$$ heartbeat 2.1.3-6 under debian lenny $$: 我有兩台伺服器:

  • SER0$$ preferred active node $$在 eth0 永久分配 10.0.0.2/24
  • ser0b$$ hot-standby node waiting to replace master $$在 eth0 永久分配 10.0.0.3/24

‘floating ip’ - 分配給活動節點的 10.0.1.1/24 分配給 eth1

在這種情況下,獲得高可用性的服務是 apache。我分別同步從 ser0 到 ser0b 的 apache 配置和內容。

以下文件在兩台機器上都是相同的,但有一個明顯的例外:

/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

引用自:https://serverfault.com/questions/101513