マルチマスターモードで複数サーバー間のリアルタイムファイル同期

マルチマスターモードで複数サーバー間のリアルタイムファイル同期

複数のLinuxサーバー間でファイルがディスクに書き込まれるとすぐに同期できるツールはありますか?このコマンドは、cronで設定すると設定できる最小時間は1分ですが、リアルタイムである必要があるため機能 rsyncしません。rsync

答え1

私はそれを直接使用しませんでしたが、最近それについて読みました。私の考えでは、あなたが必要とすることを正確に実行するデーモンがありますlsyncd

これについてもっと学ぶここ

答え2

マルチマスターモードで複数サーバー間のリアルタイムファイル同期

lsyncdリアルタイムで複数のサーバー間でファイルを同期するための優れたツールがあります。ここでは2つのサーバーを試しました。

ホスト:Server1とServer2

使用されるオペレーティングシステム:CentOS 7

両方のサーバーに次のパッケージをインストールします。

# yum install -y epel-release
# yum -y install lua lua-devel pkgconfig gcc asciidoc lsyncd

両方のサーバーでSSHキーを生成してauthorized_keysファイルに追加します。[server1の公開鍵をserver2のファイルに追加し、authorized_keysserver2の公開鍵をserver1のauthorized_keysファイルに追加]

サーバー1の構成

行の先頭のデフォルト設定を開き、/etc/lsyncd.confコメントアウトした後、次の設定をファイルに追加します。--

settings {
  logfile = "/var/log/lsyncd/lsyncd.log",
  delay = 1
}
sync {
  default.rsync,
  source="/home/test/public_html/",
  target="server2:/home/test/public_html/",
  rsync = {
    compress = true,
    acls = true,
    verbose = true,
    owner = true,
    group = true,
    perms = true,
    rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
  }
}

targetパラメータで宛先IPを変更します。

delay要件に応じてパラメータを変更できます。 1秒に設定されています。

次に、ログディレクトリを作成します。

# mkdir -p /var/log/lsyncd

lsyncdサービスが自動的に開始されるようにします。

# systemctl enable lsyncd.service

サービスを開始します。

# systemctl start lsyncd.service

サーバー2の構成

Server1と同じ構成に従って、IPを変更してくださいtarget

これで同期が設定されました。

活動履歴を確認できますtailf /var/log/lsyncd/lsyncd.log

ご提案いただいたMel Burslandに感謝します。

答え3

物事を同期オプションかもしれません。非常に高速で、転送が暗号化され、複数のプラットフォーム用のクライアントがあります。変更されたファイルをすぐに同期するために「inotify」を使用します。

答え4

この問題を解決するには、クラスタ化ファイルシステムタイプのソリューションを使用する必要があります。 2つのシステム間の簡単な同期はリアルタイム応答を提供しません。

関連情報