lsyncd設定
lsyncd
=> kernel 2.6のinotify(inodeでのファイル検知機能)を使ったrsync
リアルタイムな同期が可能
いちいちrsyncをするのでmailスプールやDBストレージには不向き
今回はサイトにPloneのFileSystemStorageでパラッパラッとアップされるワードやPDFファイルを他のZopeクラスタに複製する
wget http://www.pri.univie.ac.at/lsyncd/lsyncd-1.0.tar.gz tar xvf lsyncd-1.0.tar.gz
via sshのパッチ
http://d.hatena.ne.jp/dongore/20080201
./configure make sudo make install
ユーザlsyncd作成
パスフレーズなしのssh鍵作成
複製領域 /var/zope/var/fss
にACL
cd /var/zope/var sudo setfacl -m d:u::7,d:g::5,d:o::5,d:u:lsyncd:7,d:u:zope:7 fss sudo setfacl -m u::7,g::5,o::5,u:lsyncd:7:u:zope:7 fss
=> ユーザlsyncd作成やACLの設定はクライアントでも行う
initスクリプト作成 # てきとー
#! /bin/sh # # lsyncd # description: Live Syncing (Mirror) Daemon # chkconfig: 2345 90 10 # processname: lsyncd # Source function library. . /etc/init.d/functions RETVAL=0 PROCNAME=lsyncd DAEMON="/usr/local/bin/lsyncd" DAEMON_OPTS="--rsync-remote-sh ssh" DAEMONUSER=lsyncd # See how we were called. case "$1" in start) echo -n "Starting lsyncd Live Syncing Daemon: " BUFIFS=$IFS IFS= exec 3< /etc/lsyncd.conf while read FL 0<&3 do export src=`echo $FL|awk -F, '{print $1}'` export remotehost=`echo $FL|awk -F, '{print $2}'` export dest=`echo $FL|awk -F, '{print $3}'` su ${DAEMONUSER} -c "${DAEMON} ${DAEMON_OPTS} ${src} ${remotehost}:${dest}" >& /dev/null done exec 3<&- IFS=$BUFIFS #exit 0 pkill -0 $PROCNAME RETVAL=$? if [ $RETVAL -eq 0 ] then echo_success else echo_failure fi echo ;; stop) echo -n "Stopping lsyncd Live Syncing Daemon: " killproc $DAEMON RETVAL=$? if [ $RETVAL -eq 0 ] then echo_success else echo_failure fi echo ;; status) status $PROCNAME RETVAL=$? ;; restart|reload) $0 stop $0 start RETVAL=$? ;; condrestart) if [ -f $PIDFILE ]; then $0 stop $0 start RETVAL=$? fi ;; *) echo "Usage: $0 {start|stop|status|restart|condrestart}" exit 1 esac exit $RETVAL
設定ファイル/etc/lsyncd.confはカンマ区切りで
元ディレクトリ、リモートホスト、先ディレクトリ
こんな感じ
/var/zope/var/fss,10.1.1.4,/var/zope/var/fss
/var/zope/var/fss,10.1.1.5,/var/zope/var/fss
/var/zope/var/fss,10.1.1.6,/var/zope/var/fss