rsync
同期
lsyncd

rsyncとlsyncdでEC2サーバーを同期する

More than 3 years have passed since last update.

ELBでEC2の冗長構成をとるときに、サーバー1→サーバー2に変更が自動反映されるようになります。


実行ユーザー作成


同期先サーバー

rsyncを実行するためのユーザーを作成して、書き込みを許可するためにwwwグループに追加する

# useradd rsync

# usermod -G www rsync

sudo ができるように/etc/sudoersファイルを変更

# sudo visudo

↓これをrootの同じ設定の下に追加

rsync   ALL=(ALL)   ALL


SSHの設定


同期元サーバ

鍵の作成

ルートで

# ssh-keygen -t rsa

公開鍵の取得(あとで同期先に登録するのでコピっておく)

# cat .ssh/id_rsa.pub


同期先サーバ

さきほど取得した鍵をauthorized_keysに登録(末尾に改行して貼り付け)

# cd /home/rsync

# mkdir .ssh
# cd .ssh
# touch authorized_keys
# vi authorized_keys ←ここで貼り付け

権限の変更

# chmod 600 authorized_keys

# cd ../
# chmod 700 .ssh

SSHの設定変更。

PubkeyAuthentication yes

SSHの再起動

# /etc/rc.d/init.d/sshd restart


同期元サーバー

接続できるか確認する

# ssh rsync@xxx.xxx.xxx.xxx 


lsyncdの設定


同期元サーバー


lsyncdのインストール

$ sudo yum install --enablerepo=epel lsyncd


lsyncdの設定ファイル

target のとこは同期先のサーバーとディレクトリ


/etc/lsyncd.conf

settings{

insist = true,
statusFile = "/tmp/lsyncd.stat",
logfile = "/var/log/lsyncd/lsyncd.log",
statusInterval = 1,
}

sync {
default.rsync,
source = "/var/www/",
target = "rsync@xxx.xxx.xxx.xxx:/var/www/",
rsync = {
archive = true
}
}


lsyncdを再起動

# /etc/rc.d/init.d/lsyncd restart


確認


同期元サーバー

$ tail /var/log/lsyncd/lsyncd.log

これで同期元の/var/www以下に変更が生じたら、自動的に同期先に反映されるはず。