Heartbeat 与 UCarp 的比较

Heartbeat 与 UCarp 的比较

有人能解释一下 Heartbeat 和 UCarp 在 IP 故障转移场景中的主要区别是什么吗?

它们似乎都提供了此功能,也许 UCarp 设置起来更简单?

谢谢。

答案1

我认为您对简单的主动-被动设置感兴趣。

在这种设置下,ucarp 和 heartbeat 做的事情几乎相同。本质上 - 当机器被选为主/热备用时,它们运行提供的脚本。

心跳可能看起来要复杂得多 [ 因为它可以帮助您自动执行 drdb 挂载、重新启动多个服务等 ] 但最后 - 您可以编写所有这些脚本并让 ucarp 调用它]。

就我个人而言 - 我使用单一资源运行心跳 - 即执行以下操作的脚本:

  • [取消]绑定相应的 IP 地址
  • 运行几次 arp 广播
  • 启动[停止]所需服务

我的设置非常简单 [debian lenny 下的 heartbeat 2.1.3-6]:我有两台服务器:

  • ser0 [首选活动节点] 在 eth0 上永久分配 10.0.0.2/24
  • ser0b [等待替换主节点的热备用节点] 在 eth0 上永久分配 10.0.0.3/24

“浮动 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 [ 也可以在 /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

相关内容