2014年11月26日水曜日

MHA + HAproxyで、MySQLのHA構成を組む

https://www.flickr.com/photos/iwanamadrid/5808172940/in/photostream/

MHAとHAproxyを使って、MySQLのHA構成を組みます。
どちらも枯れたソフトウェアなので、使い方などを書いている方はかなり多いと思いますが、個人的なまとめとしてスライドに書き起こしてみました。
構成は下のようになります。



ポイントは、MySQLへの接続の中継をすべてHAproxyが担っているところです。
電車の線路における分機器といったイメージです。
これをアプリケーションと同じサーバに同居させています。HAproxyは、かなり軽いソフトウェアなのでアプリケーションの邪魔をしません。
MySQLへの参照を分散しているため、参照への高負荷対策としては、基本的にMySQL Slaveを増やしていきさえすれば良いとなります。
HAproxyはgraceful restartが可能なので、分散先のMySQL Slaveを設定したときに、無停止で投入することができます。

以下、HAproxyの設定のサンプルです。

MySQLへの参照アクセスはtimeout checkで10秒間以上の接続を切るようにしています。
log-errorで設定したファイルに、HAproxyがMySQLをチェックするタイミングで以下のログが書き込まれます。
2014-11-27 14:52:03 25199 [Warning] Client failed to provide its character set. 'utf8' will be used as client character set.
http://bugs.mysql.com/bug.php?id=72543
[3 Nov 18:04] Paul Dubois Noted in 5.6.23, 5.7.6 changelogs. The server no longer logs the following warnings because they are uninformative: Client failed to provide its character set. 'charset' will be used as client character set.
とのことです。
アプリケーションの要求によってそれぞれパラメータを調整するとよいでしょう。

Enjoy!

2014年11月19日水曜日

CapistranoのデプロイをカウントするMuninプラグイン

https://www.flickr.com/photos/pocait/5463692073

https://github.com/takeshiyako2/munin-capistrano_deploy
CapistranoのデプロイをカウントするMuninプラグインです。
下のようなグラフを表示してくれます。



サーバリソースの性能劣化などがあったとき、ある時点のアプリケーションのCapistranoデプロイ後に起きているかどうかを同じMunin上で確認できるようになるので、調査が捗るようになると思います。

以下セットアップ方法です。

1) プラグインをダウンロードして設置
# cd /usr/share/munin/plugins/
# wget --no-check-certificate https://raw.githubusercontent.com/takeshiyako2/munin-capistrano_deploy/master/capistrano_deploy
# chmod +x capistrano_deploy
# ln -s /usr/share/munin/plugins/capistrano_deploy /etc/munin/plugins/capistrano_deploy

2) プラグインの設定ファイルを編集
# emacs /etc/munin/plugin-conf.d/munin-node
[capistrano_deploy]
env.log /home/[you]/[your app]/revisions.log

3) 動作チェック
# munin-run capistrano_deploy
count.value 2

4) munin-nodeをリスタート
# service munin-node restart

Enjoy!


See also.
https://github.com/hrix/munin-plugin-capistrano_deploy_uptime

2014年11月18日火曜日

NginxのログをカウントするMuninプラグイン

https://www.flickr.com/photos/psd/7741067918

https://github.com/takeshiyako2/munin-nginx_access_log
https://github.com/takeshiyako2/munin-nginx_error_log
NginxのログをカウントするMuninプラグインです。
下記のようなグラフを出力するようにしました。


毎日どれくらいのアクセスがあるのか、ざっくりと視覚的に知ることが出来ます。
また、Muninのほかのグラフと同じ時系列で見比べることができるので、何か急激な変化が起きたときなどに役に立つと思います。
※ 途中でグラフがストンと落ちているのは、ログをローテートしているためです。

Enjoy!