LoginSignup
48
60

More than 5 years have passed since last update.

rsyncとlsyncdを使ったディレクトリの双方向同期

Last updated at Posted at 2016-10-06

実現したいこと

複数のサーバ間で任意のディレクトリを同期(双方向)したい

環境

  • サーバ1
    • OS:CentOS release 6.5 (Final)
    • ip:10.102.55.101とします。
  • サーバ2
    • OS:CentOS release 6.8 (Final)
    • ip:10.102.55.103とします。
  • 同期したいディレクトリ
    • /opt/share
  • rsync
    • バージョン:Version 3.0.6 protocol version 30
    • rsync を デーモンモードで動作させ、rsyncd(サーバ)として利用する
  • lsyncd
    • バージョン:Version: 2.1.5
  • xinetd
    • バージョン:Version 2.3.14 libwrap loadavg

前提

1.同じタイムサーバで、時刻が同期できていること!
2.rsyncdは、xinetdのサービスとして使用する

rsyncとは?

サーバ間でファイル、ディレトリを同期させることが出来るコマンド
デーモンモードで動作させることで、rsyncd(サーバ)として利用することもできる

lsyncdとは?

inotify (ファイルシステムイベントを監視するLinuxカーネルのAPI ) で 同期元のファイルやディレクトリの新規作成、更新、削除などの変化を検出したら、指定した方式(デフォルトでは、rsync)で 同期先のファイル、ディレクトリの更新を自動で行うものです。

作業の流れ

今回は、双方向同期を実現したいので、同じセッティングを2つのサーバで行います。

1.rsync lsyncd xinetdインストール

# yum install rsync lsyncd xinetd

*必要に応じてLuaの依存パッケージをインストール

# yum -y install libxml2-devel lua-devel lua-static

2.Luaの環境変数設定
今回は、rootの.bash_profileに追加

/root/.bash_profile
export LUA_CFLAGS='-I/usr/include -lm -ldl'
export LUA_LIBS='/usr/lib/liblua.a'

2.コピー先用のディレクトリを作成

# mkdir /opt/share

3.コピー先用のディレクトリの権限変更

# chown nobody:nobody /opt/share

4.rsyncサーバー設定ファイルの作成と編集

  • サーバ1(10.102.55.101側)
/etc/rsyncd.conf
uid = root
gid = root
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid

[share]
path=/opt/share
hosts allow = 10.102.55.103
read only = no
  • サーバ2(10.102.55.103側)
/etc/rsyncd.conf
uid = root
gid = root
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid

[share]
path=/opt/share
hosts allow = 10.102.55.101
read only = no

5.lsyncd設定ファイル編集
*settingsのところに=は不要

/etc/lsyncd.conf
× settings = {
○ settings {
  • サーバ1(10.102.55.101側)
/etc/lsyncd.conf
settings {
        logfile    = "/var/log/lsyncd.log",
        statusFile = "/tmp/lsyncd.stat",
        statusInterval = 1,
}
sync{
        default.rsync,
        delay = 0,
        source="/opt/share/",
        target="10.102.55.103:/opt/share/",
        delete="running",
        rsync  = {
                archive = true,
                links   = true,
                update  = true,
                verbose = true
        }
}
  • サーバ2(10.102.55.103側)
/etc/lsyncd.conf
settings {
        logfile    = "/var/log/lsyncd.log",
        statusFile = "/tmp/lsyncd.stat",
        statusInterval = 1,
}
sync{
        default.rsync,
        delay = 0,
        source="/opt/share/",
        target="10.102.55.101:/opt/share/",
        delete="running",
        rsync  = {
                archive = true,
                links   = true,
                update  = true,
                verbose = true
        }
}

6.RSA鍵ペア(公開鍵/秘密鍵)作成

# ssh-keygen -t rsa -N ""
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

この後、空Enter

7.RSA鍵(公開鍵)を対向サーバへコピー

  • サーバ1 → サーバ2へ
# scp .ssh/id_rsa.pub 10.102.55.103:/root/.ssh/authorized_keys2
  • サーバ2 → サーバ1へ
# scp .ssh/id_rsa.pub 10.102.55.101:/root/.ssh/authorized_keys2
  • 必要に応じて、sshdで、キーファイル使用のみを許可
Match Address 10.102.55.*
  PasswordAuthentication yes
  PermitRootLogin without-password
  X11Forwarding yes
# /etc/rc.d/init.d/sshd restart
sshd を停止中:                                             [  OK  ]
sshd を起動中:                                             [  OK  ]

5.xinetd起動

# /etc/rc.d/init.d/xinetd restart
xinetd を停止中:                                           [  NG  ]
xinetd を起動中:                                           [  OK  ]

7.rsyncサーバー起動と自動起動設定

# chkconfig rsync on

8.lsyncdサーバー起動と自動起動設定

# chkconfig --add lsyncd
# chkconfig lsyncd on
# chkconfig
lsyncd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off

xinetd ベースのサービス:
        rsync:          on

以上の作業でデータが同期されるはずです。

48
60
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48
60