lsyncd、rsyncによる別サーバーへのリアルタイム同期(ミラーリング)の手順(鍵認証)

リアルタイム同期の手順をよく忘れるのでメモ。
同期元でファイルが追加削除された場合は同期先にも追加削除される。

今回は
同期元の
/var/www/html/example.com を
同期先
/var/www/html/vhosts/example.com
に同期することとする

まずは同期先でユーザーを新規作成

# useradd rsync
# usermod -G wheel rsync
# sudo visudo

↓これをrootの同じ設定の下に追加
rsync ALL=(ALL) ALL

同期先
# yum -y install xinetd
# vi /etc/rsyncd.conf
[example.com]
    path = /var/www/html/vhosts/example.com # ミラー先ディレクトリ
    hosts allow = xxx.xxx.xxx.xxx # 同期元ip
    read only = false
# systemctl start xinetd
# systemctl enable xinetd

同期元

# yum install lsyncd
↑epelリポジトリが必要かも
# systemctl enable lsyncd
# vi /etc/lsyncd.conf
settings {
        statusFile = "/tmp/lsyncd.stat",
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusInterval = 1,
}

sync{
        default.rsync,
        source="/var/www/html/vhosts/example.com/",
        target="rsync@同期先ip:/var/www/html/vhosts/example.com/",
        exclude={"/local/"},
        -- delete=false, 同期先のファイルを削除しない場合、バックアップ的に使う場合はfalseにすると同期先ファイルを削除しても同期先は削除されない
        rsync  = {
                archive = true,
                links   = true,
                update  = true,
                verbose = false
        }
}

同期元で鍵生成

# ssh-keygen -t rsa -N ""
# cat /root/.ssh/id_rsa.pub

表示されたkeyを同期先のauthorized_keysに貼り付ける。

同期先

# cd /home/rsync
# mkdir .ssh
# cd .ssh
# touch authorized_keys
# vi authorized_keys ←ここで貼り付け
# chmod 600 authorized_keys
# cd ../
# chmod 700 .ssh

※作成したユーザーdirの.sshディレクトリ全体の所有者をrsyncにする

# chown -R rsync .ssh
所有者をrsyncにしておかないとsshした時パスワードを聞かれる。

sshdコンフィグの編集
# vi /etc/ssh/sshd_config

PubkeyAuthentication yes #鍵認証を有効にする

sshサーバーを再起動

# systemctl restart sshd

同期先

# vi /etc/hosts.allow

sshd:xxx.xxx.xxx.xxx #同期元追加
ftpd:xxx.xxx.xxx.xxx #同期元追加

同期元
ssh -l rsync 同期先ip

lsyncdを再起動する。

# systemctl restart lsyncd

以上で同期されるはず。