2014.06.12
【CentOS】lsyncdとrsync を使ってリアルタイムなサーバー間ファイル同期を実現する方法
photo credit: Jitter Buffer via photopin cc
同期したい、うん、とにかく同期したい。色々同期したい。はい、そんなOsamuです。
以前ある案件でとあるサーバーのデータを別のサーバーにリアルタイムに同期するという要望がありました。
バックアップの定番といえばCronなんかでバッチジョブとして実行するなんて手もありますが、この方法を適用すれば更新があれば(ほぼ)リアルタイムでバックアップサーバーにも更新されるのです。大変便利です。
今回私もその手順を纏めてみましたのでご紹介します。尚、私は同期元、同期先どちらもCentOSで動いているサーバーです。
又、適用したのが数ヶ月前なので記録している手順に多少相違があるかもしれませんので、もしこの手順じゃ同期できなかった!という場合にはご連絡ください。
lsyncdとrsync を使ってリアルタイムなサーバー間ファイル同期を実現する手順
前提
ここでは、例として同期元(192.168.1.100)の/rootディレクトリを、同期先(192.168.1.200)の/tmpディレクトリへミラーリングします ■同期元(192.168.1.100):/rootディレクトリ ■同期先(192.168.1.200):/tmp/rootディレクトリ同期先作業
同期先ではrsyncサーバーの設定を行います。 ・コピー先用のディレクトリを作成mkdir -p /tmp/root・権限変更
chown nobody:nobody /tmp/root/・rsyncサーバー設定ファイル作成
vi /etc/rsyncd.conf・rsyncサーバー設定ファイルの定義内容は以下の通り
uid = root gid = root log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid [root] path=/tmp/root hosts allow = 192.168.1.200 read only = no・xinetdインストール
yum -y install xinetd・xinetd再起動
/etc/rc.d/init.d/xinetd restart・rsyncサーバー起動&自動起動設定
chkconfig rsync on
同期元作業
続いて同期元ではlsyncdの設定を行います。 ・lsyncdインストールに必要なパッケージをインストールyum -y install libxml2-devel lua-devel lua-static・Luaの環境変数設定
export LUA_CFLAGS='-I/usr/include -lm -ldl' export LUA_LIBS='/usr/lib/liblua.a'・rsync lsyncdのインストール
yum install rsync lsyncd --enablerepo=rpmforge・lsyncd設定ファイル作成
vi /etc/lsyncd.conf・以下設定内容
settings = { logfile = "/var/log/lsyncd.log", statusFile = "/tmp/lsyncd.stat", statusInterval = 1, } sync{ default.rsync, source="/root/", target="192.168.1.100:/tmp/root/", rsync = { archive = true, links = true, update = true, verbose = false } }・RSA鍵ペア(公開鍵/秘密鍵)作成
ssh-keygen -t rsa -N ""この後、空Enter ・RSA鍵(公開鍵)をミラー先へコピー
scp .ssh/id_rsa.pub 192.168.1.100:/root/.ssh/authorized_keys2・lsyncd起動スクリプト作成
vi /etc/rc.d/init.d/lsyncd・lsyncd起動スクリプトへ実行権限付加
chmod +x /etc/rc.d/init.d/lsyncd chmod +x /etc/sysconfig/lsyncd・lsyncd起動
/etc/rc.d/init.d/lsyncd start・lsyncd起動スクリプトをchkconfigへ登録
chkconfig --add lsyncd・lsyncd自動起動設定
chkconfig lsyncd on以上の作業でデータが同期されるはずです。是非試してみてください!