複数台のサーバをリアルタイムに同期する方法

はじめまして。林と申します。

lsyncd と rsyncd を使って、複数台のサーバをリアルタイムに同期する方法をご紹介します。

同期元ディレクトリ内のファイルやディレクトリに更新があると、同期先のディレクトリと同期します。

イメージとしてはこんな感じです。

image-of-sync

cronでもできますが、即時性が求められる場合はこちらがいいと思います。
ほぼリアルタイムで同期できます。

lsyncd はファイルシステムの更新をリアルタイムに監視し、更新があると rsync コマンドで同期します。

同期先のサーバで rsyncd を動かし、同期元のサーバで lsyncd を動かすことになります。

設定手順は以下のようになります。

同期先サーバの設定(rsyncdの設定)

rsyncd.confを作成します。

[videos] と [backup] が同期先の情報です。
path が同期先のディレクトリになります。
上記のように複数設定することもできます。

※ lsyncd で同期先を指定するときにここで指定した名前([ ]の中)を使います

xinetdが起動しているか確認します。

起動していました。

rsyncを使えるようにします。

disable を yes から no に変更します。

xinetd をリロードします。

chkconfig に追加しておきます。

これで同期先の設定は終わりです。
同期先が複数台ある場合は同じ設定を全部にやります。

同期元サーバの設定(lsyncdの設定)

lsyncdをインストールします。
lsyncd は、バージョン 1系 と 2系 で設定ファイルの記述方法が異なります。
バージョン1系は xml で記述し、バージョン2系は lua で記述します。
2系統は lua への依存があるので、簡単なほうの1系統をインストールしました。

同期の設定を書きます。
インストールディレクトリにlsyncd.conf.xmlがあるので、/etc/ にコピーします。

内容を修正します。

 

source に同期元ディレクトリを書きます。

target に同期先サーバのIPアドレスと、rsyncd.conf に書いた同期先情報の名前を書きます。

リアルタイムに更新を監視するには lsyncd をデーモンで動作させないといけないので、以下の設定をします。

自動起動スクリプトを作成します。

chkconfigに追加しておきます。

lsyncd を起動すると同期が始まります。

lsyncd + rsyncd で同期しておくと、うっかりファイルやディレクトリを消してしまったときも安心ですね。

この前私がやらかしてしまって、今までみんながうっかり消してきたものの告白大会になったのですが、一番傑作だったのは /usr/bin を削除してしまった社長の告白でした。

それではまた( ´ ▽ ` )ノ

より良いチームワークを生み出す

チームの創造力を高めるコラボレーションツール

製品をみる