menu
  1. HOME
  2. News & Blog
  3. CentOS
  4. 【CentOS】lsyncdとrsync を使ってリアルタイムなサーバー間ファイル同期を実現する方法

News & Blogニュース&ブログ

2014.06.12

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

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を使ってリアルタイムなサーバー間ファイル同期を実現する

お気軽にご相談ください

株式会社アルベではIT、Webを使って皆様の課題解決のお手伝いをしています。
下記のようなお悩みを持つ方は、是非お気軽にご相談ください。

お問い合わせ