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以下に変更が生じたら、自動的に同期先に反映されるはず。