その他
    ホーム 技術発信 DoRuby anythingを使ってMongoDBやNagiosをPacemakerで起動制御する方法

    anythingを使ってMongoDBやNagiosをPacemakerで起動制御する方法

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

    MongoDBとNagiosをPacemakerで起動制御出来るようにした時のメモです。
    ApacheやMySQL等は専用のスクリプトが用意されていますが、MongoDBとNagiosのは無くて、作るのも労力なので、汎用的に使えそうなanythingで代用しました。

    ●Pacemakerリソース追加

    既にyum updateしてcrmコマンドが無くなっているので、pcsを使います。
    crmの方は、yum updateしたらcrmコマンドが無くなった!(pcsコマンド対照表)も参考にしてください。

    ・MongoDBの場合

    Nagios Pluginのcheck_tcpを使って、死活監視をしています。

    # pcs resource create mongodb ocf:heartbeat:anything params \
    	user="mongodb" \
    	binfile="/usr/bin/mongod" \
    	cmdline_options="-f /etc/mongodb.conf > /dev/null 2>&1" \
    	pidfile="/var/run/mongodb/mongodb.pid" \
    	monitor_hook="/usr/lib64/nagios/plugins/check_tcp -H localhost -p 27017" \
    	op monitor interval="20s"
    # pcs resource group add nfs-group mongodb

    ・Nagiosの場合

    Nagiosはサービスに影響がないので、落ちてもフェールオーバしないように死活監視はしてません。
    Nagios自体は外部監視するのが良いと思います。

    # pcs resource create nagios ocf:heartbeat:anything params \
    	user="nagios" \
    	binfile="/usr/bin/nagios" \
    	cmdline_options="-d /etc/nagios/nagios.cfg" \
    	pidfile="/var/nagios/nagios.pid"
    # pcs resource group add nfs-group nagios

    ●anythingカスタマイズ

    上記で終わりと思いきや、実際には動きません。
    理由はanythingで作ったPIDファイルをMongoDBやNagios側でも作成して上書きしてしまう為です。
    anythingが使いたいPIDではなくなってしまう。。。
    別のファイルを指定したりもしましたが、上手く動かず断念!
    なので、少し細工します。但し、元々の挙動でも動くように。

    # cd /usr/lib/ocf/resource.d/heartbeat
    # cp -a anything anything,201309
    # vi anything
    ### START 2013/09 taka ###
    #		eval $cmd > $pidfile
    		eval $cmd > $pidfile.tmp
    		sleep 1
    		if [ -e $pidfile ]; then
    			rm -f $pidfile.tmp
    		else
    			mv -f $pidfile.tmp $pidfile
    		fi
    ### END ###

    ●まとめ

    これで無事、意図通り動くようになりました。
    見ての通り、起動ユーザやコマンド(起動スクリプトを見れば解ります)と監視コマンドを用意すれば、MongoDBやNagios以外にも利用出来ます。

    ●追記(2013/11/04)

    yum updateしたらanythingが無くなり、Corosyncが停止出来なくなりました。(crmに続き、またか〜)
    幸いバックファイル(anything,201309)が残っていたので、そいつをベースに再度カスタマイズを施し修復!

    新規構築等で最初からない場合は、下記等から入手してください。
    https://github.com/ClusterLabs/resource-agents/blob/master/heartbeat/anything

    そもそもyum updateする時はCorosync止めてからじゃないと危険だね。
    再起動したまま帰ってこないくて、最悪、オンコールリブートになりそうな。

    記事を共有