web-dev-qa-db-ja.com

ハートビートvsUCarp

IPフェイルオーバーシナリオでのHeartbeatとUCarpの主な違いを誰かが説明できますか?

どちらもこの機能を提供しているようですが、おそらくUCarpのセットアップは簡単ですか?

ありがとう。

4
SyRenity

単純なアクティブ-パッシブセットアップに興味があると思います。

このような設定でのucarpとheartbeatは、ほとんど同じことを行います。本質的には、マシンがマスター/ホットスタンバイとして選択されたときに、提供されたスクリプトを実行します。

ハートビートははるかに複雑に見えるかもしれません[drdbマウントの自動調整、複数のサービスの再起動などに役立つため]が、最後に、これらすべてをスクリプト化してucarpに呼び出させることができます]。

個人的に-私は単一のリソースでハートビートを実行します-それは次のことを行うスクリプトです:

  • 適切なIPアドレスを[un]バインドします
  • いくつかのarpブロードキャストを実行します
  • 必要なサービスを開始[停止]

私の非常に単純なセットアップ[debianlennyの下でのハートビート2.1.3-6]:私は2つのサーバーを持っています:

  • eth0に10.0.0.2/24が永続的に割り当てられたser0 [優先アクティブノード]
  • ser0b [マスターの置き換えを待機しているホットスタンバイノード]がeth0で永続的に割り当てられた10.0.0.3/24

'floating ip'-アクティブノードに割り当てられているのは、eth1に割り当てられている10.0.1.1/24です。

この場合、高可用性を実現するサービスはApacheです。 ser0からser0bに提供されるApacheの構成とコンテンツを個別に同期します。

以下のファイルは、1つのマークされた例外を除いて、両方のマシンで同一です。

/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
4
pQd