lsyncd によるホスト間同期の設定

lsyncd によるホストA からホストB への片方向リアルタイム同期の設定をご紹介いたします。これによって ホストB をホストA のリードレプリカ、コールドバックアップにすることができます

graph LR A[ホストA] --> |lsync|B[ホストB]

lsyncd は通信に rsync を利用する(しない方法もあります)ので、まずホスト間で rsync の通信ができるように設定し、次に lsyncd で同期するフォルダの設定をおこないます

rsync の設定

両ホスト共、rsync がインストールされていなければ、まずインストールします

sudo apt-get install rsync

ホストA の公開鍵を ホストB で共有

公開鍵ペアの作成

ホームディレクトリに .ssh フォルダがない、もしくは .ssh フォルダ配下に鍵ペア(id_rsa, id_rsa.pub) がない場合、まず公開鍵ペアを作成します

ssh-keygen -t rsa

ホストA の公開鍵を ホストB に登録

ホストA から ホストB に rsync できるように、ホストA の公開鍵を ホストB に登録します
ホストA で下記の ssh-copy-id コマンドを実行します

ssh-copy-id -i ~/.ssh/id_rsa.pub ホストBのアドレス

ssh-copy-id がない場合は openssh-clients をインストールします

sudo apt-get install openssh-client

rsync のテスト

ホストA のフォルダA を、ホストB のフォルダB に同期する場合、下記のコマンドをホストAで実行します

sudo rsync -avog --delete フォルダA ホストB:フォルダB

--delete オプションは、ホストAで削除されたファイルをホストB でも削除します

lsyncd の設定

インストール

sudo apt-get install lsyncd

設定

/etc/lsyncd.conf ファイルに sync 追加します。sync は複数書くことができます

settings {
--   logfile    = "/val/log/lsyncd.log",
   statusFile = "/tmp/lsyncd.status",
--   nodaemon   = true,
}

sync {
    default.rsync,
    source    = "フォルダAのフルパス",
    target    = "ホストB:フォルダBのフルパス",
    rsync     = {
        archive  = true,
        compress = true,
        group    = true,
        owner    = true
    }
}

sync {

lsyncd の起動

lsyncd /etc/lsyncd.conf

references

本稿は以下を参考にさせていただきました


2019.09.03 posted.
---------- last updated