UnixPower on Networking
  http://www.unix-power.net/

 
 Top - Linux - CentOS rsync+lsync




rsync+lsyncでリアルタイムミラーリングを実現します。ロードバランサ配下のWebサーバ等において共有ディスクがない場合や、共通のコンテンツを複数のサーバに配信したい場合に有用です。

■ミラーリング先(rsync)

ミラーリング先のサーバにrsyncをインストールし設定を行います。/etc/rsyncd.confが設定ファイルとなりますがデフォルトでは存在しないので新規作成致します。


# yum install rsync
# vi /etc/rsyncd.conf
pid file = /tmp/rsyncd.pid
log file = /var/log/rsync.log
read only = no

[sync]
path=/tmp/sync
comment=Sync Directory
uid=root
gid=root
hosts allow=192.168.1.151


hosts allowに指定するIPは実環境に読み替えてください。接続ホストを制限する場合はこのパラメータで指定します。yumでインストールしたrsnycはxinet経由での起動になりますので設定ファイルを編集後、xinetを再起動します。


# vi /etc/xinetd.d/rsync

disable = no 

# /etc/rc.d/init.d/xinetd restart


ミラーリング先のサーバの設定は以上で完了です。



■ミラーリング元(lsync)


ミラーリング元のサーバにlsyncをインストールします。標準のyumでは提供されませんのでこちらを参考にしてRPMforgeからインストールします。


# yum install lsyncd


lsyncの設定ファイルを作成します。ここで指定するrsnycOpsはrsyncのオプションと同じなのでこちらを参考にしてください。

# vi /etc/lsyncd.conf

settings = {
        logfile = "/var/log/lsyncd.log",
        statusFile = "/var/log/lsyncd.stat",
        statusInterval = 1,
}

sync{
        default.rsync,
        source = "/var/",
        target = "root@192.168.1.150::sync",
        rsyncOps = {"-auz",
                "--numeric-ids",
                "--delete",
                }
}


上記ではテスト的に/var配下のものをミラーリングしています。ここまで設定できればlsyncデーモンを起動します。複数のディレクトリを同期したい場合はsyncを複数起動することになります。


# /etc/rc.d/init.d/lsyncd start


/var/log/lsyncd.logを見て問題なく起動しているか確認し、/var/配下にテスト的に何かファイルを作成してみてミラーされていれば成功です。



■特定のファイルのみミラーリング


lsyncはデフォルトでディレクトリ単位でミラーリングを行いますが、/etc/passwdなど特定のファイルのみミラーリングしたいこともあると思います。そこで除外リストを活用することにより特定のファイルのみミラーリングが可能です。

まず、lsyncd.confを次のように編集します。


# vi /etc/lsyncd.conf

settings = {
        logfile = "/var/log/lsyncd.log",
        statusFile = "/var/log/lsyncd.stat",
        statusInterval = 1,
}

sync{
        default.rsync,
        source = "/var/",
        target = "root@192.168.1.150::sync",
        rsyncOps = {"-auz",
                "--numeric-ids",
                "--delete",
                "--exclude-from=/etc/rsync_exclude.lst",
                }
}


/etc/rsync_exclude.lstを作成し編集します。

# vi /etc/rsync_exclude.lst

+ passwd
+ shadow-
+ group
- *


上記例では/etc/のpasswd / shadow / groupの3ファイルのみをミラーリングする設定となります。作成後は設定を有効にするためにlsyncを再起動します。

# /etc/rc.d/init.d/lsyncd restart



■ミラーリングファイル数


同期するファイル数が多くなると同期できなくなりエラーが吐かれます。ファイル数を増やすにはinotifyのカーネルパラメータを増やします。デフォルトでは8192になっているのを下記では30000にしています。


# vi /etc/sysctl.conf

fs.inotify.max_user_watches = 30000

# sysctl -p


なお、inotify関連のカーネルパラメータは/proc以下のファイルに書かれています。大規模となってくるとこちらのパラメータもあわせて調整すると良いかもしれません。


# カーネルメモリの制限
/proc/sys/fs/inotify/max_queued_events             16384

# 1ユーザのインスタンス数の制限
/proc/sys/fs/inotify/max_user_instances              128



 
 関連記事
 rsync+sshでバックアップシステムの設定
 Copyright(C) 2003-2015 UnixPower on Networking All rights reserved.