High-Availability
心跳與 UCarp
誰能解釋 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