その他
    ホーム技術発信DoRubyHeartBeatの設定

    HeartBeatの設定

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    こんにちわ!tacchiです。

    Ruby on Railsを利用した、サイト構築で利用したので、HeartBeatの設定について書きます。

    HeartBeatで何をしようとしているかというと、2台のサーバで共通のRailsプロジェクトを利用して、各々のサーバでmongrelプロセスを立てようとしてました。

    nfsでやればいいじゃねーかと仰るかもしれませんが、設定している方が落ちちゃったら両方のプロセスがダメになっちゃうんですよね。


    ちょっとややこしいですが、DRBDパーティション単位での同期を取って、HeartBeatでDRBDをクラスタリングしようと考えました。というか、自分が考えたわけではないですが・・・

    前回説明した、DRBDはPrimaryとSecondaryがあり、それをHeartBeatで切り替えちゃおうとしています。
    では説明に入ります。

    以下クラスタリングしたいサーバに設定して下さい。例では、hogeweb01とhogeweb02の2台です。

    検証環境

      CentOS5
      heartbeat-2.1.2

    設定例

    1.まず、HeartBeatのインストール(両サーバ)
     $ yum install heartbeat 
    本サイトからソースダウンロードして入れる手もあります。   

    2./etc/ha.d/ha.cfの変更(両サーバ) ※HeartBeatの設定ファイルです
    変更したのは赤字にしているやつです。ldebugfile /var/log/ha-debug
    logfile /var/log/ha-log
    logfacility     local0
    keepalive 1
    deadtime 10
    warntime 5
    initdead 120
    udpport 694
    bcast  eth0            # Linux
    auto_failback on
    node hogeweb01          # host名
    node hogeweb02          # host名

    ###########################
    #
    #       Unusual options.
    #
    ###########################
    use_logd yes

    3./etc/ha.d/authkeysの変更(両サーバ) ※これは、通信認証用のファイルです。
    auth 1
    1 sha1 HI!

    4.authkeysファイルの属性を600にする必要があります(両サーバ)
    $ chmod 600 authkeys
    5.DRBDとの連携(両サーバ)
    hogeweb01 10.0.0.160/24 drbddisk::r0 

    # hogeweb01はプライマリになるマシン
    # 10.0.0.160/24はDRBDのリソース
    # drbddisk::r0はDRBDのディスク
    6.HeartBeatの再起動(両サーバ)
    $ /etc/init.d/heartbeat restart 
    7.テスト
     hogeweb01のHeartBeatを停止して、hogeweb02のDRBDがPrimaryになっていれば成功です。DRBDの確認方法はこちら
    $ /etc/init.d/heartbeat stop 

    まとめ

    DRBDがプライマリ側のみしかマウントできないため、このPrimaryとSecondaryの切り替えは、非常に役立ってます。さらに、nfsを自動的に設定してくれたり、切り替わったタイミングでメールを飛ばしてくれたりできますが、今日はここまで。。。