harumaki.net

インフラ屋の覚書や、ラーメン食べある記とか。

クラスタリング/heartbeat

   


クラスタリング/heartbeat

2台のホスト間でのクラスタリングを構成する。以下のような機能を提供する。

  1. フェイルオーバ機能
    2つのノードでアクティブ/スタンバイ構成とし、
    フェイルオーバー、フェイルバック機能を提供。

  2. 共有リソースの切替
    サーバー間で仮想IP、サービスの引継ぎを実行。

  3. 稼動監視、サービス監視(heartbeat-ldirectord)
    IPでの監視のほか、シリアルIFでの監視も可能。

  4. GUIコンソール
    通常はコマンドラインから作業が必須だったが、
    バージョン2.0.5より対応(検証中)。

参考サイト

お世話になっております!

構成ファイルとバージョン

 ※依存関係でインストールする追加パッケージは割愛。
  各作業ログを参照のこと。

・libnet
 libnet-1.1.2.1-2.rf.i386.rpm libnet本体

・heartbeat
 heartbeat-2.0.0-1.i386.rpm heartbeat本体
 heartbeat-stonith-2.0.0-1.i386.rpm ユーティリティファイル
 heartbeat-pils-2.0.0-1.i386.rpm ユーティリティファイル
 heartbeat-ldirectord-2.0.0-1.i386.rpm 共有リソースの監視用パッケージ

作業ログ

1)ダウンロードとインストール

libnet

使用バージョンは1.1.2.1-2。
heartbeatのインストールに必要となるので、事前にビルド/インストール。

  1. ダウンロードとビルド
    # cd /usr/src/redhat/SRPM/
    # wget http://mirror.centos.org/centos/4/extras/SRPMS/libnet-1.1.2.1-2.rf.src.rpm
    # rpm -Uvh libnet-1.1.2.1-2.rf.src.rpm
    # cd ../SPECS/
    # rpmbuild -bb libnet-1.1.2.1-rf.spec
  2. インストール
    # rpm -ivh ../RPMS/i386/libnet-1.1.2.1-2.rf.i386.rpm
  • ビルドしたパッケージの一覧
    /usr/src/redhat/RPMS/i386/libnet-1.1.2.1-2.rf.i386.rpm
    /usr/src/redhat/RPMS/i386/libnet-debuginfo-1.1.2.1-2.rf.i386.rpm

heartbeat

使用バージョンは2.0.0。ソースRPMからビルド/コンパイルする。
heartbeatのインストールには以下のパッケージが必要。
事前に確認し、不足分はインストールしておく。

glib-devel
libgcrypt-devel
  1. ダウンロードとビルド
    # cd /usr/src/redhat/SRPM/
    # wget http://linux-ha.org/download/heartbeat-2.0.0-1.src.rpm
    # rpm -Uvh heartbeat-2.0.0-1.src.rpm
    # cd ../SPECS/
    # rpmbuild -bb heartbeat.spec
  • ビルドしたパッケージの一覧
    /usr/src/redhat/RPMS/i386/heartbeat-2.0.0-1.i386.rpm
    /usr/src/redhat/RPMS/i386/heartbeat-ldirectord-2.0.0-1.i386.rpm
    /usr/src/redhat/RPMS/i386/heartbeat-stonith-2.0.0-1.i386.rpm
    /usr/src/redhat/RPMS/i386/heartbeat-pils-2.0.0-1.i386.rpm
    /usr/src/redhat/RPMS/i386/heartbeat-debuginfo-2.0.0-1.i386.rpm
  1. インストール
    heartbeat-ldirectordとheartbeat-debuginfoを除くパッケージを
    まずインストール。

    # rpm -ivh heartbeat-2.0.0-1.i386.rpm \
    > heartbeat-stonith-2.0.0-1.i386.rpm \
    > heartbeat-pils-2.0.0-1.i386.rpm 
    Preparing...                ########################################### [100%]
       1:heartbeat-pils         ########################################### [ 33%]
       2:heartbeat-stonith      ########################################### [ 67%]
       3:heartbeat              ########################################### [100%]

heartbeat-ldirectord

  1. ダウンロードとビルド
    パッケージはheartbeatのビルド時に同時に作成されるので割愛。
  2. 追加パッケージ
    heartbeat-ldirectordはデフォルトでは依存関係によりperlモジュールが必要。
    必要としない場合はheartbeatのリビルド時にspecファイルから不要モジュールの記述を削除しておく。
    ※1.下記のうちRHELのメディアに含まれるのはperl-Net-DNS-0.48-1.i386.rpmのみ。
      そのほかはUltraMonkeyなどからダウンロードする。
    ※2.但しRH系で最新のものはFedora Core1用だったので、これを利用する。
      可能な限りソースRPMを落としてきてコンパイル。

  3. heartbeat-ldirectordのインストール
    各パッケージの依存関係が解消したところでldirectordをインストール。

    # rpm -ivh --test heartbeat-ldirectord-2.0.0-1.i386.rpm 
    Preparing...                ########################################### [100%]
    # rpm -ivh heartbeat-ldirectord-2.0.0-1.i386.rpm 
    Preparing...                ########################################### [100%]
       1:heartbeat-ldirectord   ########################################### [100%]
    # 

2)構成の概要

インストール直後のファイル構成は以下のとおり。

設定ファイルディレクトリ
/etc/ha.d/
但しインストール直後はコンフィグファイルが無いので
/usr/share/doc/heartbeat-2.0.0/からコピーして配置する。
サービススクリプト
heartbeatが用意するフェイルオーバー用起動スクリプトとして
デフォルトで/etc/ha.d/resource.d/以下に設置される。
これらは仮想IPの切替や共有ディスクのマウント、Raidなどの切替用に使用する。

heartbeatで共有リソースを指定するスクリプトは
/etc/ha.d/resource.d/のほか、/etc/init.d/も検索対象となる。
上記のディレクトリに置かれているスクリプトはそのままの名称で指定OK。

3)設定

heartbeat

heartbeatを構成する設定は以下のとおり。

  • クラスタ設定
    クラスタ構成ノード、主系サーバの指定、ログ出力先、keepaliveやタイムアウトの指定など
  • 共有リソース設定
    クラスタ間で共有するリソース(仮想IP、共有ディスク、アプリケーション)の指定
    IPは今回以下の組み合わせで設定。

    • 仮想IP[主系・副系がそれぞれアクティブの際に使用するIP]
      192.168.0.1
    • 主系サーバIP
      192.168.0.2
    • 副系サーバIP
      192.168.0.3
  • メール通知設定
    状態変化時に通知するメールの宛先、内容の指定
  • 認証キー設定
    クラスタ間で行う通信の認証方式
  1. クラスタの設定
    設定ファイル	:/etc/ha.d/ha.cf
    サンプルファイル	:/usr/share/doc/heartbeat-2.0.0/ha.cf

    クラスタ設定は/etc/ha.d/ha.cfで設定。

    # cd /etc/ha.d/
    # cp /usr/share/doc/heartbeat-2.0.0/ha.cf /etc/ha.d/
    # vi ha.cf
    • [設定パラメータ]
      主系サーバの編集後の設定値を抜粋。

      # grep -v ^# /etc/ha.d/ha.cf | sed -e "s/TexttoRemove//g"
      debugfile 		/var/log/ha-debug
      logfile		/var/log/ha-log
      logfacility	local0
      keepalive		2
      deadtime		30
      warntime		10
      initdead		120
      udpport		694				←ポート694番:ha-cluster
      ucast		eth0 192.168.0.3
      auto_failback	on
      watchdog		/dev/watchdog
      node		host2
      ping		192.168.0.3
      respawn		hacluster /usr/lib/heartbeat/ipfail
      apiauth		ipfail gid=haclient uid=hacluster
  2. 共有リソースの設定
    設定ファイル	:/etc/ha.d/haresources
    サンプルファイル	:/usr/share/doc/heartbeat-2.0.0/haresources

    共有リソースの定義は/etc/ha.d/haresourcesで行う。
    こちらもサンプルファイルを利用して編集。
    主系/副系で同じ設定にする。

    # cp /usr/share/doc/heartbeat-2.0.0/haresources /etc/ha.d/
    # vi haresources
    • 設定例)
      上記の3つのサービスを順番に起動する場合の例。今回は下記の設定で起動テストを行う。
    1. 仮想IPを設定
    2. 共有ディスク/dev/drdb0を/mnt/shareにマウント
      ※DRBDでマウントされる共有ディスクを使用する場合、
      heartbeat起動前にプライマリにしておくこと。
      セカンダリになっていると起動に失敗する。
    3. httpデーモンを起動
      [設定内容]

      host1 192.168.0.1/24 drbddisk Filesystem::/dev/drbd0::/mnt/share::ext3 httpd
  3. メール通知の設定
    設定ファイル	:/etc/ha.d/haresources

    今回検証したバージョン2.0からheartbeatの動作に応じて
    メール通知を行うスクリプトが追加されたので、設定を追加。
    スクリプト実行のトリガーとなる動作は以下のとおり。

  • heartbeatデーモン起動
  • フェイルオーバー時
  • フェイルバック時
    スクリプト名	:/etc/ha.d/resource.d/MailTo
    設定項目		:/etc/ha.d/haresourcesへ記述する。
    • [記述例]
      書式は

      <主系ホスト名> <スクリプト名>::<通知先アドレス>::<サブジェクト>
      host1 MailTo::testuser@host.example.com::heartbeat
  1. 認証方式と認証鍵の設定
    設定ファイル	:/etc/ha.d/authkey
    サンプルファイル	:/usr/share/doc/heartbeat-2.0.0/authkey

    サーバ間の通信の認証方法と認証に使う鍵(文字列)を指定する。
    /etc/ha.d/authkeyに設定を追記。

    # cp /usr/share/doc/heartbeat-2.0.0/authkeys /etc/ha.d/
    # vi authkeys
    • [認証方法]
      サーバ間の認証には以下の3つの方法を指定可能。

      ・sha1		SHA1による暗号化を実施。 
      ・md5		MD5方式による暗号化。
      ・crc		暗号化なし、パケットの整合性のみチェックを実施。
      		※シリアルケーブルでの通信の場合はこの方式。

      今回は起動とフェイルオーバのテストなのでcrcでテストする。

    • [記述内容]
      auth 1		←優先番号
      1 crc		←認証方式

      設定が終わったらセキュリティのためパーミッションを設定。

      # chmod 600 authkeys

      ※この時点でheartbeatの運用開始が可能。

heartbeat-ldirectord

今回は割愛。

4)動作検証

単独の動作検証

  1. heartbeatサービスの起動(主系)
    設定が完了したら主系ノードで動作を確認。
    事前にharesourcesで指定した共有リソースが停止/無効になっていることを確認する。

    # /etc/init.d/heartbeat start

    同時に/var/log/ha-logを確認しておく。

    • [リソース開始時のログ出力]
      仮想IP、DRBDデバイスのマウント、httpdの起動の順に確認できる。

      harc[4738]:     2006/09/26_12:13:19 info: Running /etc/ha.d/rc.d/status status
      heartbeat[4731]: 2006/09/26_12:13:21 info: standby: acquire [foreign] resources from host2
      heartbeat[4749]: 2006/09/26_12:13:21 info: acquire local HA resources (standby).
      ResourceManager[4759]:  2006/09/26_12:13:22 info: Acquiring resource group: host1 192.168.0.1/
      24 drbddisk Filesystem::/dev/drbd0::/mnt/share::ext3 httpd
      ResourceManager[4759]:  2006/09/26_12:13:22 info: Running /etc/ha.d/resource.d/IPaddr 192.168.0.1/24 start
      IPaddr[4817]:   2006/09/26_12:13:22 info: /sbin/ifconfig eth0:0 192.168.0.1 netmask 255.255.25
      5.0    broadcast 192.168.0.255
      IPaddr[4817]:   2006/09/26_12:13:22 info: Sending Gratuitous Arp for 192.168.0.1 on eth0:0 [et
      h0]
      IPaddr[4817]:   2006/09/26_12:13:22 /usr/lib64/heartbeat/send_arp -i 500 -r 10 -p /var/lib/heartb
      eat/rsctmp/send_arp/send_arp-192.168.0.1 eth0 192.168.0.1 auto 192.168.0.1 ffffffffffff
      ResourceManager[4759]:  2006/09/26_12:13:23 info: Running /etc/ha.d/resource.d/drbddisk  start
      ResourceManager[4759]:  2006/09/26_12:13:23 info: Running /etc/ha.d/resource.d/Filesystem /dev/dr
      bd0 /mnt/share ext3 start
      ResourceManager[4759]:  2006/09/26_12:13:23 info: Running /etc/init.d/httpd  start
      ResourceManager[5026]:  2006/09/26_12:13:24 info: Acquiring resource group: host1 MailTo::testuser@host.exa
      mple.com::heartbeat
      ResourceManager[5026]:  2006/09/26_12:13:24 info: Running /etc/ha.d/resource.d/MailTo testuser@host.example
      .com heartbeat start
      heartbeat[4749]: 2006/09/26_12:13:24 info: local HA resource acquisition completed (standby).
      heartbeat[4731]: 2006/09/26_12:13:24 info: Standby resource acquisition done [foreign].
      heartbeat[4731]: 2006/09/26_12:13:24 info: Initial resource acquisition complete (auto_failback)
      heartbeat[4731]: 2006/09/26_12:13:24 info: remote resource transition completed.
    • [通知メール]
      設定したアドレスに以下のメールを配信。

      主系:heartbeat Takeover in progress on host1
      副系:無し
    • [リソースの確認]
      ・共有ディスクのマウント確認

      # mount | grep drbd
      /dev/drbd0 on /mnt/share type ext3 (rw)

      ・ディスク容量とマウントポイントの確認

      # df -k
      Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
      /dev/sda3              7637400   2217080   5032352  31% /
      /dev/sda1               101086     11424     84443  12% /boot
      none                    159892         0    159892   0% /dev/shm
      /dev/drbd0              505636     10544    468987   3% /mnt/share
      # 

      ・ネットワークの確認
      共有リソースに割り当てた仮想IPが有効になっていることを確認

      # ifconfig (仮想IFのみ抜粋)
      eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:1B:B0:F2  
                inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
                UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                Interrupt:185 Base address:0x1480 

      ・登録したサービスの確認
      今回登録したhttpdが正常起動していることを確認。

      # ps aux | grep http
      root      8767  0.0  1.4 14768 4560 ?        Ss   10:14   0:00 /usr/sbin/httpd 
      apache    8768  0.0  0.7 14904 2356 ?        S    10:14   0:00 /usr/sbin/httpd
      apache    8769  0.0  0.7 14904 2356 ?        S    10:14   0:00 /usr/sbin/httpd
      apache    8770  0.0  0.7 14904 2356 ?        S    10:14   0:00 /usr/sbin/httpd
      apache    8771  0.0  0.7 14904 2356 ?        S    10:14   0:00 /usr/sbin/httpd
      apache    8772  0.0  0.7 14904 2356 ?        S    10:14   0:00 /usr/sbin/httpd
      apache    8773  0.0  0.7 14904 2356 ?        S    10:14   0:00 /usr/sbin/httpd
      apache    8774  0.0  0.7 14904 2356 ?        S    10:14   0:00 /usr/sbin/httpd
      apache    8775  0.0  0.7 14904 2356 ?        S    10:14   0:00 /usr/sbin/httpd
  2. heartbeatサービスの起動(副系)
    主系のheartbeartを起動後にこちらも起動する。

    # /etc/init.d/heartbeat start
    • [主系ログ]
      副系ノードのリンクアップを確認後、ステータスがアクティブに設定される。

      heartbeat[10754]: 2006/09/26_14:16:59 info: Link host2:eth0 up.
      heartbeat[10754]: 2006/09/26_14:16:59 info: Local status now set to: 'active'
      heartbeat[10754]: 2006/09/26_14:16:59 info: Starting child client "/usr/lib64/heartbeat/ipfail" (
      500,500)
      heartbeat[10754]: 2006/09/26_14:16:59 info: Status update for node host2: status up
      heartbeat[10762]: 2006/09/26_14:16:59 info: Starting "/usr/lib64/heartbeat/ipfail" as uid 500  gi
      d 500 (pid 10762)
      harc[10763]:    2006/09/26_14:16:59 info: Running /etc/ha.d/rc.d/status status
      heartbeat[10754]: 2006/09/26_14:16:59 info: Status update for node host2: status active
      harc[10773]:    2006/09/26_14:17:00 info: Running /etc/ha.d/rc.d/status status

フェイルオーバーの動作検証

主系・副系のheartbeatサービスが起動した状態での
フェイルオーバー・フェイルバックを確認。

  1. 主系heartbeatサービス停止→副系共有サービス起動(シャットダウン→フェイルオーバー)
    主系のデーモンを通常に停止した際の副系の動作を確認。

    • [通知メール]
      主系:heartbeat Migrating resource away from host1
      副系:heartbeat Takeover in progress on host2
    • [主系ログ]
      サービスの停止を確認。

      heartbeat[11924]: 2006/09/26_14:34:03 info: Heartbeat shutdown in progress. (11924)
      heartbeat[12230]: 2006/09/26_14:34:03 info: Giving up all HA resources.
      ResourceManager[12240]: 2006/09/26_14:34:03 info: Releasing resource group: host1 192.168.0.1/
      24 drbddisk Filesystem::/dev/drbd0::/mnt/share::ext3 httpd
      ResourceManager[12240]: 2006/09/26_14:34:04 info: Running /etc/init.d/httpd  stop
      ResourceManager[12240]: 2006/09/26_14:34:04 info: Running /etc/ha.d/resource.d/Filesystem /dev/dr
      bd0 /mnt/share ext3 stop
      ResourceManager[12240]: 2006/09/26_14:34:04 info: Running /etc/ha.d/resource.d/drbddisk  stop
      ResourceManager[12240]: 2006/09/26_14:34:04 info: Running /etc/ha.d/resource.d/IPaddr 192.168.0.1/24 stop
      IPaddr[12366]:  2006/09/26_14:34:04 info: /sbin/route -n del -host 192.168.0.1
      IPaddr[12366]:  2006/09/26_14:34:05 info: /sbin/ifconfig eth0:0 down
      IPaddr[12366]:  2006/09/26_14:34:05 info: IP Address 192.168.0.1 released
      heartbeat[12230]: 2006/09/26_14:34:05 info: All HA resources relinquished.
      
      	--- 中略 ---
      
      heartbeat[11924]: 2006/09/26_14:34:08 info: Heartbeat shutdown complete.
    • [副系ログ]
      リソースのフェイルオーバーを確認。
      keepalive=2に設定されているので、主系のheartbeat停止を検知したのち
      2秒後にサービスを開始。
      ログの1行目で、host1からshutdownコマンドを受けていることが確認できる。

      heartbeat[16187]: 2006/09/26_14:34:05 info: Received shutdown notice from 'host1'.
      heartbeat[16187]: 2006/09/26_14:34:05 info: Resources being acquired from host1.
      heartbeat[17309]: 2006/09/26_14:34:05 info: acquire local HA resources (standby).
      heartbeat[17309]: 2006/09/26_14:34:05 info: local HA resource acquisition completed (standby).
      heartbeat[16187]: 2006/09/26_14:34:05 info: Standby resource acquisition done [foreign].
      heartbeat[17310]: 2006/09/26_14:34:05 info: No local resources [/usr/lib64/heartbeat/ResourceMana
      ger listkeys host2] to acquire.
      harc[17329]:    2006/09/26_14:34:05 info: Running /etc/ha.d/rc.d/status status
      mach_down[17339]:       2006/09/26_14:34:05 info: Taking over resource group 192.168.0.1/24
      ResourceManager[17359]: 2006/09/26_14:34:05 info: Acquiring resource group: host1 192.168.0.1/
      24 drbddisk Filesystem::/dev/drbd0::/mnt/share::ext3 httpd
      ResourceManager[17359]: 2006/09/26_14:34:05 info: Running /etc/ha.d/resource.d/IPaddr 192.168.0.1/24 start
      IPaddr[17417]:  2006/09/26_14:34:06 info: /sbin/ifconfig eth0:0 192.168.0.1 netmask 255.255.25
      5.0    broadcast 192.168.144.255
      IPaddr[17417]:  2006/09/26_14:34:06 info: Sending Gratuitous Arp for 192.168.0.1 on eth0:0 [et
      h0]
      IPaddr[17417]:  2006/09/26_14:34:06 /usr/lib64/heartbeat/send_arp -i 500 -r 10 -p /var/lib/heartb
      eat/rsctmp/send_arp/send_arp-192.168.0.1 eth0 192.168.0.1 auto 192.168.0.1 ffffffffffff
      ResourceManager[17359]: 2006/09/26_14:34:06 info: Running /etc/ha.d/resource.d/drbddisk  start
      ResourceManager[17359]: 2006/09/26_14:34:06 info: Running /etc/ha.d/resource.d/Filesystem /dev/dr
      bd0 /mnt/share ext3 start
      ResourceManager[17359]: 2006/09/26_14:34:07 info: Running /etc/init.d/httpd  start
      mach_down[17339]:       2006/09/26_14:34:07 info: /usr/lib64/heartbeat/mach_down: nice_failback: 
      foreign resources acquired
      heartbeat[16187]: 2006/09/26_14:34:07 info: mach_down takeover complete.
      mach_down[17339]:       2006/09/26_14:34:07 info: mach_down takeover complete for node host1.

      フェイルオーバーの完了を確認後、リソースの正常性を確認する。

  2. 主系heartbeatサービス停止→副系共有サービス起動(電源OFF→フェイルオーバー)
    主系ノードがダウンした際の副系の動作を確認。
    ping監視の停止を確認後、フェイルオーバーが行われる。

    • [通知メール]
      主系:なし
      副系:heartbeat Takeover in progress on host2
      [副系]
      heartbeat[16187]: 2006/09/26_14:51:03 WARN: node 192.168.0.2: is dead
      heartbeat[16187]: 2006/09/26_14:51:03 info: Link 192.168.0.2:192.168.0.2 dead.
      harc[17844]:    2006/09/26_14:51:03 info: Running /etc/ha.d/rc.d/status status
      heartbeat[16187]: 2006/09/26_14:51:04 WARN: node host1: is dead
      heartbeat[16187]: 2006/09/26_14:51:04 WARN: No STONITH device configured.
      heartbeat[16187]: 2006/09/26_14:51:04 WARN: Shared disks are not protected.
      heartbeat[16187]: 2006/09/26_14:51:04 info: Resources being acquired from host1.
      heartbeat[16187]: 2006/09/26_14:51:04 info: Link host1:eth0 dead.
      harc[17860]:    2006/09/26_14:51:04 info: Running /etc/ha.d/rc.d/status status
      heartbeat[17861]: 2006/09/26_14:51:04 info: No local resources [/usr/lib64/heartbeat/ResourceMana
      ger listkeys host2] to acquire.
      mach_down[17871]:       2006/09/26_14:51:04 info: Taking over resource group 192.168.0.1/24
      ResourceManager[17900]: 2006/09/26_14:51:04 info: Acquiring resource group: host1 192.168.0.1/
      24 drbddisk Filesystem::/dev/drbd0::/mnt/share::ext3 httpd
      ResourceManager[17900]: 2006/09/26_14:51:05 info: Running /etc/ha.d/resource.d/IPaddr 192.168.0.1/24 start
      IPaddr[17958]:  2006/09/26_14:51:05 info: /sbin/ifconfig eth0:0 192.168.0.1 netmask 255.255.25
      5.0    broadcast 192.168.0.255
      IPaddr[17958]:  2006/09/26_14:51:05 info: Sending Gratuitous Arp for 192.168.0.1 on eth0:0 [et
      h0]
      IPaddr[17958]:  2006/09/26_14:51:05 /usr/lib64/heartbeat/send_arp -i 500 -r 10 -p /var/lib/heartb
      eat/rsctmp/send_arp/send_arp-192.168.0.1 eth0 192.168.0.1 auto 192.168.0.1 ffffffffffff
      ResourceManager[17900]: 2006/09/26_14:51:05 info: Running /etc/ha.d/resource.d/drbddisk  start
      ResourceManager[17900]: 2006/09/26_14:51:05 info: Running /etc/ha.d/resource.d/Filesystem /dev/dr
      bd0 /mnt/share ext3 start
      ResourceManager[17900]: 2006/09/26_14:51:06 info: Running /etc/init.d/httpd  start
      mach_down[17871]:       2006/09/26_14:51:06 info: /usr/lib64/heartbeat/mach_down: nice_failback: 
      foreign resources acquired
      heartbeat[16187]: 2006/09/26_14:51:06 info: mach_down takeover complete.
      mach_down[17871]:       2006/09/26_14:51:06 info: mach_down takeover complete for node host1.
  3. 主系heartbeatサービス起動→副系共有サービス停止(フェイルバック)
    • [通知メール]
      主系:heartbeat Takeover in progress on host1
      副系:heartbeat Migrating resource away from host2
    • [主系]
      副系との通信を確立し、共有サービスの停止を確認後、主系で共有サービスを起動。

      heartbeat[12466]: 2006/09/26_14:44:27 info: Configuration validated. Starting heartbeat 2.0.0
      heartbeat[12467]: 2006/09/26_14:44:27 info: heartbeat: version 2.0.0
      heartbeat[12467]: 2006/09/26_14:44:27 info: Heartbeat generation: 19
      
      	--- 中略 ---
      
      heartbeat[12467]: 2006/09/26_14:44:28 info: Link 192.168.0.3:192.168.0.3 up.
      heartbeat[12467]: 2006/09/26_14:44:28 info: Status update for node 192.168.0.3: status ping
      heartbeat[12467]: 2006/09/26_14:44:29 info: Link host2:eth0 up.
      heartbeat[12467]: 2006/09/26_14:44:29 info: Status update for node host2: status active
      heartbeat[12467]: 2006/09/26_14:44:29 info: Local status now set to: 'active'
      heartbeat[12467]: 2006/09/26_14:44:29 info: Starting child client "/usr/lib64/heartbeat/ipfail" (
      500,500)
      heartbeat[12467]: 2006/09/26_14:44:29 info: remote resource transition completed.
      
      	--- 中略 ---
      
      heartbeat[12486]: 2006/09/26_14:44:31 info: acquire local HA resources (standby).
      ResourceManager[12496]: 2006/09/26_14:44:32 info: Acquiring resource group: host1 192.168.0.1/
      24 drbddisk Filesystem::/dev/drbd0::/mnt/share::ext3 httpd
      ResourceManager[12496]: 2006/09/26_14:44:32 info: Running /etc/ha.d/resource.d/IPaddr 192.168.0.1/24 start
      IPaddr[12554]:  2006/09/26_14:44:32 info: /sbin/ifconfig eth0:0 192.168.0.1 netmask 255.255.25 5.0 broadca
      st 192.168.0.255
      IPaddr[12554]:  2006/09/26_14:44:32 info: Sending Gratuitous Arp for 192.168.0.1 on eth0:0 [et
      h0]
      IPaddr[12554]:  2006/09/26_14:44:32 /usr/lib64/heartbeat/send_arp -i 500 -r 10 -p /var/lib/heartb
      eat/rsctmp/send_arp/send_arp-192.168.0.1 eth0 192.168.0.1 auto 192.168.0.1 ffffffffffff
      ResourceManager[12496]: 2006/09/26_14:44:32 info: Running /etc/ha.d/resource.d/drbddisk  start
      ResourceManager[12496]: 2006/09/26_14:44:33 info: Running /etc/ha.d/resource.d/Filesystem /dev/dr
      bd0 /mnt/share ext3 start
      ResourceManager[12496]: 2006/09/26_14:44:33 info: Running /etc/init.d/httpd  start
      heartbeat[12486]: 2006/09/26_14:44:34 info: local HA resource acquisition completed (standby).
      heartbeat[12467]: 2006/09/26_14:44:34 info: Standby resource acquisition done [foreign].
      heartbeat[12467]: 2006/09/26_14:44:34 info: Initial resource acquisition complete (auto_failback)
      heartbeat[12467]: 2006/09/26_14:44:34 info: remote resource transition completed.
    • [副系]
      主系のheartbeatとの通信を確認後、共有リソースを停止。

      heartbeat[16187]: 2006/09/26_14:44:28 info: Heartbeat restart on node host1
      heartbeat[16187]: 2006/09/26_14:44:28 info: Link host1:eth0 up.
      heartbeat[16187]: 2006/09/26_14:44:28 info: Status update for node host1: status init
      heartbeat[16187]: 2006/09/26_14:44:28 info: Status update for node host1: status up
      harc[17642]:    2006/09/26_14:44:28 info: Running /etc/ha.d/rc.d/status status
      harc[17652]:    2006/09/26_14:44:28 info: Running /etc/ha.d/rc.d/status status
      heartbeat[16187]: 2006/09/26_14:44:29 info: Status update for node host1: status active
      heartbeat[16187]: 2006/09/26_14:44:29 info: remote resource transition completed.
      heartbeat[16187]: 2006/09/26_14:44:29 info: host2 wants to go standby [foreign]
      heartbeat[16187]: 2006/09/26_14:44:29 info: standby: host1 can take our foreign resources
      heartbeat[17663]: 2006/09/26_14:44:29 info: give up foreign HA resources (standby).
      harc[17662]:    2006/09/26_14:44:29 info: Running /etc/ha.d/rc.d/status status
      ResourceManager[17682]: 2006/09/26_14:44:29 info: Releasing resource group: host1 192.168.0.1/
      24 drbddisk Filesystem::/dev/drbd0::/mnt/share::ext3 httpd
      ResourceManager[17682]: 2006/09/26_14:44:29 info: Running /etc/init.d/httpd  stop
      ResourceManager[17682]: 2006/09/26_14:44:31 info: Running /etc/ha.d/resource.d/Filesystem /dev/dr
      bd0 /mnt/share ext3 stop
      ResourceManager[17682]: 2006/09/26_14:44:31 info: Running /etc/ha.d/resource.d/drbddisk  stop
      ResourceManager[17682]: 2006/09/26_14:44:31 info: Running /etc/ha.d/resource.d/IPaddr 192.168.0.1/24 stop
      IPaddr[17809]:  2006/09/26_14:44:31 info: /sbin/route -n del -host 192.168.0.1
      IPaddr[17809]:  2006/09/26_14:44:31 info: /sbin/ifconfig eth0:0 down
      IPaddr[17809]:  2006/09/26_14:44:31 info: IP Address 192.168.0.1 released
      heartbeat[17663]: 2006/09/26_14:44:31 info: foreign HA resource release completed (standby).
      heartbeat[16187]: 2006/09/26_14:44:31 info: Local standby process completed [foreign].
      heartbeat[16187]: 2006/09/26_14:44:34 WARN: 1 lost packet(s) for [host1] [13:15]
      heartbeat[16187]: 2006/09/26_14:44:34 info: remote resource transition completed.
      heartbeat[16187]: 2006/09/26_14:44:34 info: No pkts missing from host1!
      heartbeat[16187]: 2006/09/26_14:44:34 info: Other node completed standby takeover of foreign reso
      urces.

今回はディスク容量も少なく、起動アプリもhttpdのみだったので軽快にフェイルオーバー、フェイルバックが
切り替わったが、DBやJDKなどで負荷のかかるサーバでの動作については今後も要検証。

 

 - cluster, GNU/Linux, infra