EC2でlsync
EC2のInstance同士のとあるディレクトリ配下を同期したいということで
rsyncでも良かったがリアルタイムで同期したかったから「lsync」
手順は下記の通り
ミラー先サーバでxinetdをインストール
yum install xinetd
ミラー先サーバの「/etc/xinetd.d/rsync」を編集
vi /etc/xinetd.d/rsync
ミラー先サーバでxinetdの起動
/etc/rc.d/init.d/xinetd start
ミラー先サーバでOS起動時にxinetdが起動するように設定
chkconfig xinetd on
ミラー先サーバでミラー先を作成
mkdir /var/www/html/wordpress
chown apache:apache /var/www/html/wordpress
ミラー先サーバで「/etc/rsync.conf」作成
[sync]
path =/var/www/html/wordpress
hosts allow = 10.130.58.72
read only = false
uid = apache
gid = apache
ミラー元サーバでlsyncのインストール lsyncに必要パッケージのインストール
yum -y install libxml2-devel zlib-devel
lsyncのページより最新版をダウンロード
wget http://lsyncd.googlecode.com/files/lsyncd-1.42.tar.gz
展開後、makeしてインストール
tar zxvf lsyncd-1.42.tar.gz
cd lsyncd-1.42
./configure && make && make install
設定ファイル「lsyncd.conf.xml」を/etc/にCopy
cp lsyncd.conf.xml /etc
設定ファイル「/etc/lsyncd.conf.xml」修正
起動スクリプト「/etc/init.d/lsyncd」作成
#!/bin/bash
#
# lsyncd
#
# chkconfig: 345 56 50
# description: xinetd is a powerful replacement for inetd.
# xinetd has access control mechanisms, extensive
# logging capabilities, the ability to make services
# available based on time, and can place
# limits on the number of servers that can be started,
# among other things.
#
# processname: /opt/lsyncd/binlsyncd
#Source function library
. /etc/rc.d/init.d/functions
PATH=$PATH:/sbin:/bin:/usr/bin:/usr/sbin:/usr/local/bin
# Soruce networking configuration
[ -r /etc/sysconfig/lsync ] && . /etc/sysconfig/lsyncd
option=”$SHORT_LOG $IGNORE_START_ERRORS $DEBUG”
RETVAL=0
prog=”lsyncd”
start(){
echo -n $”Starting $prog: ”
daemon $prog $option
RETVAL=$?
echo
touch /var/lock/subsys/lsyncd
return $RETVAL
}
stop(){
echo -n $”Stopping $prog: ”
killproc $prog
RETVAL=$?
echo
rm -f /var/lock/subsys/lsyncd
return $RETVAL
}
reload(){
echo -n $”Reloading configuration: ”
killproc $prog -HUP
RETVAL=$?
echo
return $RETVAL
}
restart(){
stop
start
}
condrestart(){
[ -e /var/lock/subsys/lsyncd ] && restart
return 0
}
# See how we were called.
case “$1″ in
start)
start
;;
stop)
stop
;;
status)
status $prog
;;
restart)
restart
;;
reload)
reload
;;
condrestart)
condrestart
;;
*)
echo $”Usage: $0 {start|stop|status|restart|condrestart|reload}”
RETVAL=1
esac
exit $RETVAL
自動起動設定
chmod 755 /etc/rc.d/init.d/lsyncd
chkconfig –add lsyncd
chkconfig lsyncd on
lsyncの起動
/etc/rc.d/init.d/lsyncd
これで終了
Logは上記設定だと「/var/log/lsyncd」に出ます。
はまったのは1点だけ!!! Firewallの設定
てっきりrsyncってポート22番を使っていると思っていたが、実はポート873番を使っている。
ちゃんとFirewallで開けておかないとlsyncで同期取れません。
Firewallでちゃんとあけておきましょう。