【CentOS】lsyncdとrsync を使ってリアルタイムなサーバー間ファイル同期を実現する方法

CentOS

medium_69085414 (1)
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


以上の作業でデータが同期されるはずです。是非試してみてください!

参考にしたページ

<参考1>リアルタイムミラーリングツール導入(lsyncd+rsyncd)
<参考2>lsyncdとrsyncを使ってリアルタイムなサーバー間ファイル同期を実現する

関連記事

コメント

この記事へのコメントはありません。

カテゴリー

お問い合わせはコチラ!