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でちゃんとあけておきましょう。