2010/09/26

lsyncdの複数サーバへのミラーと監視ファイル増加による負荷状況

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
lsyncdで複数サーバへミラーリングする
hoge-web1サーバ(ミラー元サーバ)

hoge-web2 hoge-web3 hoge-web4 hoge-web5(ミラー先サーバ群)


大体以下のような設定です。
ミラー先のサーバの設定
vim /etc/xinetd.d/rsync
service rsync
{
disable = no ←noにする
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}


vim /etc/rsyncd.conf
uid = hogeadmin ←ファイルの所有者
gid = hogeadmin ←ファイルのグループを設定
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
[sync1]
path = /home/htdocs/hogehoge.com/master/
hosts allow = 172.20.3.128/26 ←許可するIPを設定
read only = false




ミラー元サーバの設定
vim /etc/lsyncd.conf.xml
<directory>
<source path="/home/htdocs/hogehoge.com/master/"/>
<target path="hoge-web2::sync1/"/>
<target path="hoge-web3::sync1/"/>
<target path="hoge-web4::sync1/"/>
<target path="hoge-web5::sync1/"/>
</directory>



/etc/init.d/lsyncd
#!/bin/bash
#
# lsyncd: Starts the lsync Daemon
#
# chkconfig: 345 99 90
# description: lsyncd auto start script
# processname: lsyncd

. /etc/rc.d/init.d/functions

config="/etc/lsyncd.conf.xml"
lsyncd="/usr/sbin/lsyncd"
lockfile="/var/lock/subsys/lsyncd"
prog="lsyncd"
RETVAL=0

start() { 
if [ -f $lockfile ]; then
echo -n $"$prog is already running: "
echo
else
echo -n $"Starting $prog: "
daemon $lsyncd --conf=$config
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch $lockfile
return $RETVAL
fi
}
stop() {
echo -n $"Stopping $prog: "
killproc $lsyncd 
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f $lockfile
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status $lsyncd
;;
*)
echo "Usage: lsyncd {start|stop|restart|status}"
exit 1

esac

exit $?



監視可能ファイル数を設定する
inotifyのmax_user_watchesのデフォルト値は 8192 なので 増やしたい時は
vim /etc/sysctl.conf
fs.inotify.max_user_watches = 786432 # 追加

/sbin/sysctl -p



監視ファイルを増やした時の負荷状況
web1サーバのスペック
Intel(R) Xeon(R) CPU X3330 @ 2.66GHz
memory 4G
centos 5.5 @ x86_64


web1サーバの平均負荷は
load average0.5 くらいです。

この環境で
fs.inotify.max_user_watches = 786432
というバカみたいに多いファイル数を監視しても今のところ問題ないようです。

ファイルをミラーリングするときにはその処理にざっくり言うと、4コアのうちの1コアをCPU10% くらい使う感じです。ざっくりですが…

cpu負荷がもっとあがったら問題がでるのかもしれませんが、
このサイトは画像データだけでも大量に存在するサイトであり、
かつ、日付のフォルダなんかが沢山おいてある腐ったサイトであるので、
協力会社にバージョン管理してファイル数を削減しましょうと言っても、「そんなもの覚えられん」と拒否されてしまったようなサイトです。
したがって、ファイル数は減らせません。

というわけで、
fs.inotify.max_user_watchesはまだまだ増えそうなので
cpu負荷がもっとあがったら問題がでるかどうか人柱します。
本番サイトで人柱するはめになるとは…。

関連する記事

0 コメント:

関連記事