Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
55
Help us understand the problem. What is going on with this article?
@kaihei777

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

More than 3 years have passed since last update.

実現したいこと

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

環境

  • サーバ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

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

55
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kaihei777
「ここでの投稿は個人のものであって所属する企業や団体の見解を示すものではありません。」

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
55
Help us understand the problem. What is going on with this article?