複数の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_keys
server2の公開鍵を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つのシステム間の簡単な同期はリアルタイム応答を提供しません。