この記事はアピリッツの技術ブログ「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を自動的に設定してくれたり、切り替わったタイミングでメールを飛ばしてくれたりできますが、今日はここまで。。。