リアルタイムミラーリングツール導入(lsyncd+rsyncd)

最終更新日: 2008.01.16

<<トップページ <<新着情報 <<質問BBS <<逆引き集 <<アンケート <<リンク集 <<サイト内検索 <<ダウンロード <<管理人へメール <<CentOSで自宅サーバー構築

■概要

lsyncdを使用してマシン間でリアルタイムにディレクトリのミラーリングを行う。
lsyncdはLinuxカーネルのinotify機能を利用して、ファイルの更新時にミラー先のrsyncサーバーへrsyncを実行することにより、リアルタイムにディレクトリのミラーリングを行う。

ここでは、例として/rootディレクトリをミラー先の/tmp/rootディレクトリへミラーリングする。


■rsyncサーバー設定(ミラー先)

[root@mirror ~]# mkdir /tmp/root ← ミラー先ディレクトリ作成

[root@mirror ~]# chown nobody:nobody /tmp/root/ ← ミラー先ディレクトリ所有者をnobodyに変更

[root@mirror ~]# vi /etc/rsyncd.conf ← rsyncサーバー設定ファイル作成
[root] ← 任意のモジュール名(ミラー元から接続時の名前)
    path = /tmp/root ← ミラー先ディレクトリ
    hosts allow = 192.168.1.0/24 ← 接続許可ホスト
    read only = false ← 更新許可

※rsyncd.confの詳細はこちらを参照

■rsyncサーバー起動(ミラー先)

[root@mirror ~]# yum -y install xinetd ← xinetdインストール

[root@mirror ~]# vi /etc/xinetd.d/rsync ← xinetd用rsyncサーバー設定ファイル編集
        disable = yes
        ↓
        disable = no ← noに変更

[root@mirror ~]# /etc/rc.d/init.d/xinetd start ← xinetd再起動(rsyncサーバー起動)
xinetd を停止中:                                           [  OK  ]
xinetd を起動中:                                           [  OK  ]

[root@mirror ~]# chkconfig rsync on ← rsyncサーバー自動起動設定

■lsyncdインストール(ミラー元)

[root@master ~]# wget http://www.pri.univie.ac.at/lsyncd/lsyncd-1.0.tar.gz ← lsyncdダウンロード

※最新版のURLはダウンロードページで確認

[root@master ~]# tar zxvf lsyncd-1.0.tar.gz ← lsyncd展開

[root@master ~]# cd lsyncd-1.0 ← lsyncd展開先ディレクトリへ移動

[root@master lsyncd-1.0]# ./configure && make && make install ← lsyncdインストール

[root@master lsyncd-1.0]# cd ← lsyncd展開先ディレクトリを抜ける

[root@master ~]# rm -rf lsyncd-1.0 ← lsyncd展開先ディレクトリを削除

[root@master ~]# rm -rf lsyncd-1.0.tar.gz ← ダウンロードしたファイルを削除

■lsyncd設定(ミラー元)

[root@master ~]# vi /etc/lsyncd.conf ← lsyncd設定ファイル作成
/root/ 192.168.1.3 root
※「ミラー元ディレクトリ ミラー先(rsyncサーバー)IPアドレス ミラー先モジュール名」の順に指定

[root@master ~]# vi /etc/logrotate.d/lsyncd ← lsyncdログローテーション設定ファイル作成
/var/log/lsyncd {
    missingok
    notifempty
    sharedscripts
    postrotate
        /etc/rc.d/init.d/lsyncd restart 2>&1 > /dev/null || true
    endscript
}

■lsyncd起動

[root@master ~]# vi /etc/rc.d/init.d/lsyncd ← lsyncd起動スクリプト作成
#!/bin/bash
#
# lsyncd
#
# chkconfig: - 99 20
# description: lsyncd auto start script

start() {
    IFS=
    for i in `cat /etc/lsyncd.conf`
    do
        src=`echo $i|awk '{print $1}'`
        dest=`echo $i|awk '{print $3}'`
        remort=`echo $i|awk '{print $2}'`
        /usr/local/bin/lsyncd $src $remort::$dest/
    done
}

stop() {
    /bin/kill -9 `/sbin/pidof lsyncd`
    until [ -z $(/sbin/pidof lsyncd) ]; do :; done
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        pid=`pidof lsyncd`
        if [ $? -eq 0 ]; then
            echo "lsyncd (pid $pid) is running..."
        else
            echo "lsyncd is not running"
        fi
        ;;
    *)
        echo "Usage: lsyncd {start|stop|restart|status}"
        exit 1
esac

exit $?

[root@master ~]# chmod +x /etc/rc.d/init.d/lsyncd ← lsyncd起動スクリプトへ実行権限付加

[root@master ~]# /etc/rc.d/init.d/lsyncd start ← lsyncd起動
syncing /root/ -> 192.168.1.3::root/

[root@master ~]# chkconfig --add lsyncd ← lsyncd起動スクリプトをchkconfigへ登録

[root@master ~]# chkconfig lsyncd on ← lsyncd自動起動設定

■lsyncd確認

ミラー元の/rootディレクトリの内容がミラー先の/tmp/rootディレクトリにコピーされていることを確認。
ミラー元の/rootディレクトリでファイルの作成・更新・削除等を行い、その都度、ミラー先に変更が反映されていることを確認。

※ミラーはディレクトリ単位で行われるため、万が一ミラー先が停止してしまって、その間にミラー元に変更があった場合でも、ミラー先起動後の最初のミラー元変更時に全てミラーリングされる



▲このページのトップへ戻る

LPIロゴ Copyright© 2004-2008 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします