ホームページ >運用・保守 >Linuxの運用と保守 >Linux で 2 つのサーバーをリアルタイムに同期する方法の紹介
次の要件を仮定します:
2 つのサーバーを仮定します:
192.168.0.1 ソースサーバーにはディレクトリ /opt/test/
192.168.0.2 があります ターゲットサーバーにはディレクトリ /opt/bak/test/
目的実装の要点は、2台のサーバーの特定のファイルディレクトリをリアルタイム同期を維持することです
実装方法: rsync+inotify-toolsの組み合わせで実現します
まず、2台のマシンに信頼関係を追加します具体的な方法は前回の記事で紹介しています 合格しました
詳細を表示: linux はパスワードログインなしで信頼関係を追加します
必要なソフトウェアのインストール:
ソースサーバーとターゲットの両方にインストールする必要があります。サーバー
ソースサーバー: これは rsync クライアントであり、設定は必要ありません
ターゲットサーバー: これは rsync サーバーであり、/etc/rsyncd.conf の内容を設定する必要があります
このツールは、Linux オペレーティング システムのカーネル サポートを必要とするリアルタイム ファイル監視ツールです。カーネル サポートが必要です。少なくともバージョンは 2.6.13 です。
オペレーティング システムがサポートしているかどうかを確認し、次のように実行します。
uname -r Checkバージョン
戻り値:
2.6.32-358.6.1.el6.x86_64
これは、バージョン 2.6.32 が 2.6.13 よりも大きく、サポートされていることを意味します。
実行:
ll /proc/sys/fs/inotify total 0 -rw-r--r-- 1 root root 0 Oct 18 12:18 max_queued_events -rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_instances -rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_watches
3 つの出力がある場合、inotify がデフォルトでサポートされており、inotify-tools ツールをインストールできることを意味します
サポートされていない場合は、新しいバージョンの Linux オペレーティング システムが必要です
バージョンが要件を満たしていればインストールできます。
inotify-tools をインストールすると、関連するインストール ディレクトリに次の 2 つのファイルが生成されます:
ll /usr/local/bin/ total 88 -rwxr-xr-x 1 root root 44327 Oct 10 15:32 inotifywait -rwxr-xr-x 1 root root 41417 Oct 10 15:32 inotifywatch
これは、インストールが成功したことを意味します。
注: inotify はソース サーバーにインストールする必要がありますが、ターゲット サーバーにインストールする必要はありません。
ソースサーバー上に新しいスクリプトを作成します:
inotify_bak.sh
#!/bin/bash src=/opt/test/ /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src | while read file do /usr/bin/rsync -arzuq $src 192.168.0.1::www/ echo " ${file} was rsynced" >>/opt/soft/log/rsync.log 2>&1 done
実行許可を与えます: chmod +x inotify_bak.sh
それから実行します: nohup inotify_bak.sh & Putバックグラウンドで
の起動について ターゲット サーバー: 最初に rsync バックグラウンド サービスを開始します: /usr/bin/rsync --daemon
ソース サーバー: inotify_bak.sh と
を作成します。ソース サーバーのディレクトリに新しいディレクトリとファイルが追加されると、inotify_bak.sh スクリプトがそれらを検出し、ターゲット サーバーの関連ディレクトリに同期します
ログ ファイルを表示できます: /opt/soft/log/rsync.logコマンドは次のとおりです。リアルタイムの同期状況を観察します。
tail -f /opt/soft/log/rsync.log
/usr/local/bin/inotifywait: 共有ライブラリのロード中にエラーが発生しました: libinotifytools.so.0: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません
これは、ライブラリ ファイルを開くことができないためです。見つけたので、ソフト接続するだけ
ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
以上がLinux で 2 つのサーバーをリアルタイムに同期する方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。