WEBサーバのバックアップとしてDRBDを設定してみたはいいものの、ちょっと想定していたものと違ったのでlsyncd + rsync を利用してサーバー間で同期を取ることにしました。
この方法を使うと簡単にリアルタイムでの同期が可能になるとのことなので、設定にチャレンジしましたが、今回もたどり着くまでの道のりはながく、いろんなサイトを回遊してようやくうまく行ったようです。
というわけで忘れないうちに備忘録としてのこしておこうと思います。(参照は自己責任で・・・)
同期元 192.168.1.130
同期先 192.168.1.131
rsyncのポートを開放(同期元・同期先)
#vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 873 -j ACCEPT
ファイアーウォール再起動。
# /etc/rc.d/init.d/iptables restart
同期元サーバの設定
lsyncdのインストール。
# yum -y install libxml2-devel
# wget http://lsyncd.googlecode.com/files/lsyncd-1.26.tar.gz
# tar zxvf lsyncd-1.26.tar.gz
# cd lsyncd-1.26
# ./configure && make && make install
削除
# cd
# rm -rf lsyncd-1.26
# rm -rf lsyncd-1.26.tar.gz
lsyncdの設定ファイルの編集
# vi /etc/lsyncd.conf.xml
<lsyncd version="1">
<settings>
<logfile filename="/var/log/lsyncd.log"/>
<binary filename="/usr/bin/rsync"/>
<pidfile filename="/var/run/lsyncd.pid"/>
<callopts>
<option text="-lt%r"/>
<exclude-file/>
<source/>
<destination/>
</callopts>
</settings>
<directory>
<source path="/usr/local/www/apache22"/>
<target path="192.168.1.131::wwwadmin"/>
</directory>
</lsyncd>
lsyncd起動スクリプトの編集
# vi /etc/rc.d/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/local/bin/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 $?
起動スクリプトに実行権をつける
# chmod +x /etc/rc.d/init.d/lsyncd
lsyncd起動スクリプト実行
# /etc/rc.d/init.d/lsyncd start
lsyncd を起動中: [ OK ]
同期先サーバの設定
rsyncの設定ファイルの編集
# vi /usr/local/etc/rsyncd.conf
uid = root
gid = root
log file = /var/log/rsyncd.log
pid file = /var/log/rsyncd.pid
use chroot = no
[wwwadmin]
path = /usr/local/www
hosts allow = 192.168.1.130
read only = false
rsyncd起動スクリプトの編集
# vi /etc/rc.d/init.d/rsyncd
#!/bin/sh
# Rsynicd This shell script takes care of starting and stopping the rsync daemon
# description: Rsync is an awesome replication tool.
#
# chkconfig: 345 87 87
# description: Rsync is an awesome replication tool.
# Source function library.
. /etc/rc.d/init.d/functions
[ -f /usr/bin/rsync ] || exit 0
start() {
action "Starting rsyncd: " /usr/bin/rsync --daemon --config=/usr/local/etc/rsyncd.conf
}
stop() {
action "Stopping rsyncd: " killall rsync
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 1
start
;;
*)
echo "Usage: rsyncd {start|stop|restart}"
exit 1
esac
exit 0
rsyncd起動スクリプトに実行権をつける
# chmod +x /etc/rc.d/init.d/rsyncd
rsyncd起動スクリプト実行
#/etc/rc.d/init.d/rsyncd start
Starting rsyncd: [ OK ]
どうやら同期は取れているみたい。DRBDやめてこれで行くかなぁ。