CentOS 6.3でlsyncdを使ったコンテンツの同期
さくらのVPSにてcrontabでssh+rsyncを使って1分おきにコンテンツを同期してたんですよ。そしたらアタックと勘違いされて同期元から同期先へのsshがブロックされてしまったのでlsyncdを使うことにしてみた。
同期元にはlsyncdが、同期先にはxinetdとrsyncが必要。
同期元192.168.1.101、同期先192.168.1.102ということで手順を整理。
同期先の設定
同期先から設定。
xinetdとrsyncのインストール
すでに入ってるかもしれないけれど、入ってなかったら入れる。
sudo yum install rsync xinetd
/etc/xinetd.d/rsyncの編集
rsyncはデフォルトでdisable yesになっているのでnoにして有効になるように。
/etc/rsyncd.confの編集
グローバル設定とディレクトリの設定。
uid = root gid = root log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid [example_sync] path = /path/to/sync hosts allow = 192.168.1.101 read only = no
同期先として変更を受ける側になるのでread onlyはno。
ほかexcludeなどの同期対象を柔軟に設定するためのオプションもある。
iptablesの設定
rsyncの使うポート873を開ける。
同期元に対してのみ開けておくとなおいいでしょう。
xinetdの再起動
設定が問題なくできていればこれで有効になる。
同期元の設定
lsyncdのインストール
CentOS 6.3ではyumでさくっと入るようになっている。
sudo yum install lsyncd
/etc/lsyncd/lsyncd.confの編集
yumで入れても設定ファイルの類は作成されないので自分で作成。
settings = { logfile = "/var/log/lsyncd.log", statusFile = "/tmp/lsyncd.stat", statusInterval = 1, } sync{ default.rsync, source="/path/to/sync/", target="192.168.1.102::example_sync }
オプションの意味などは公式にドキュメントがあるのでそちらを参照。
/etc/init.d/lsyncdの作成
設定ファイル同様に起動ファイルも作られないので以下からもらってきました。
lsyncdで特定のファイルだけ同期する | Glide Note – グライドノート
lsyncdの起動
問題なければこれで起動する。
/etc/init.d/lsyncd start
うまく行けば同期元にファイルを作ると同期先に同期される。
なぜか数十秒くらいのタイムラグがあるのだが、これはどうしようもないのだろうか。
うまくいかなかったらlogfileで指定したところにエラーログが記録されているのでそれを見て対処。
自動起動の設定
chkconfig --add lsyncd chkconfig lsyncd on
再起動しても同じ状態になるようにするまでが設定です。
Chef
あとで?
実際はCookbookを作って運用しているが、README等をきちんと書くのがめんどくさくて公開にまで至らないと言う。