リアルタイムの双方向の同期を実現するために、

環境:

Linuxの場合:カーネル3.0以上

同期ツール:

rsyncの&sersync

インフォメーション:https://rsync.samba.org/examples.html

要件:故障しそうなりやすい、ルートにどのような動作を実現する必要があります

rsyncは、特に、分散システムでの同期のために、一般的に使用されるファイルまたはディレクトリ同期ツールであり、コマンドの実装は、脚本から呼び出すことができますが、今の方法は、上記のツールのリアルタイムプロファイルの形で、実現しやすいがあります双方向の同期。

ステップ1:rsyncのをインストールします。

YUMのxinetdのrsyncをインストール-y   

xinetdは - のrsyncを管理するために使用されます

rsync--同期ツール

sersync--監視ディレクトリ

 カーネルパラメータを調整します。

sysctlの-w fs.inotify.max_queued_events =「99999999」#inotify最大キュー長値が小さすぎると、「**イベントキューオーバーフロー**」というエラーがあるだろう、不正確な監視ファイルに結果
のsysctl -w fs.inotify.max_user_watches = 「99999999」は#あなたは型Dは/ opt / tongbu1見つける使用することができ、あなたはファイルのディレクトリを同期させたいどのくらい含まれ|トイレ-l 統計、max_user_watchesが値を保証しなければならないことは統計よりも大きい
のsysctl -w fs.inotify.max_user_instances =「65535」#各ユーザーは、最大のinotifyインスタンスを作成します

二つは、rsyncのインストール
各内ABサーバにrsyncを搭載:
YUM(ルートなど)のrsync -Yをxinetdをインストールし
ます。mkdir -p / cmiot / File_Receive(rootユーザ)

ステップ1:設定rsyncの設定ファイル
のvi / cmiot / File_Receive
#===========================
のプロフィール#Aホスト
はuid =ルート
GID =ルート
ポート= 873
使用CHROOT =はい
最大5接続=
syslogファシリティ= local5
PID = /var/run/rsyncd.pidファイル
ロックファイル=の/ var / RUN / rsync.lockの
ログファイル=は/ var / log / RSYNCD .logの
転送ログ= YES
= 192.168.106.205#サーバアドレス
のホストが許可するサーバー= 192.168.106.206#のBの
ホストが拒否= *#のIP禁止同期
読み取りのみ= falseを
一覧= yesを
無視し、エラーの#はIOエラーを無視
認証ユーザー= rsyncuser
ファイル= /etc/rsync.passwd秘密
################################
[バックアップ]
パス= / cmiot / File_Receive /#「/」で、完全なパスでなければなりませんが、追加する必要があります
コメントを=バックアップ!番号の説明oldboyeduを歓迎する
#を================== =========
#(クライアント接続用のアカウントとパスワードの)ユーザー名とパスワードに対応する仮想口座を確立
#Aマスターパスワード認証ファイルを
vimの/etc/rsync.passwd
rsyncuser:123456
chmodの600の/ etc /rsync.passwd
Bホストのログイン・パスワード・ファイル-使用してBのホストを記録するために使用さ
vimのは/etc/rsync_bak.passwd
123456
のchmod 600 /etc/rsync_bak.passwdを
===========================#
プロファイルホストB
UID =ルート
GID =ルート
ポート= 873
使用CHROOT =はい
最大=接続。5
syslogのファシリティ= local5
PID = /var/run/rsyncd.pidファイル
ロックファイル=の/ var / RUN / rsync.lock
ログファイル=は/ var / log / rsyncd.log
ログを転送=はい
アドレス= 192.168.106.206#サーバB
変更、それが実際の状況でのネットワークセグメントへのアクセス、充填できるようにする:ホストは= 192.168.106.205#サーバAが許可
拒否= *#のIP禁止同期ホスト
読み取りのみ= falseを
= YES一覧を
エラーの#はIOエラーを無視無視
AUTH = rsyncuser_bakユーザー
の秘密= /etc/rsync_bak.passwdファイル
################################
[backup_bak]#モジュール名
パス= / cmiot / File_Receive /#バックアップディレクトリは、あなたがで、完全なパスでなければなりません「/」を追加する必要があります
コメント=がoldboyeduバックアップ!#の説明に歓迎
#=============== ============
#(クライアント接続用のアカウントとパスワードの)ユーザー名とパスワードに対応する仮想口座を確立する
Bマスターパスワード認証ファイル
のvim /etc/rsync_bak.passwd
rsyncuser_bak:123456
のchmod 600 /etc/rsync_bak.passwd
マスターパスワードファイル
Vimは/etc/rsync.passwd
123456
のchmod 600 /etc/rsync.passwdを
#注:パスワード認証とログインパスワードファイルのパスワード・ファイルは一致している必要があります
ステップ2:オープン873ポート
のnetstat -antup | grepを873
ファイアウォールのブート:firewalld.serviceが有効systemctl
ファイアウォールのステータスを表示:ファイアウォール-CMD --state
ファイアウォールを開きます。firewalld.service systemctl開始
オープン873ポート:ファイアウォール-CMDを--zone =公共--add-ポート= 873 / tcpの--permanent
再起動:systemctl再起動firewalld.service
リロードキャリア:ファイアウォール-CMD --reload
#================== =========
ステップ3:rsyncのデーモンチェック
PS -ef | grepをrsyncの|はgrep -v grepの
プロセスを開始し、殺すためにチェックをユーザーに、ファイルを削除する処理は
殺す-9 pidの
RM -rfの/ var / RUNを/ rsyncd.pid
RM -rf /var/run/rsync.lock
RM -rf /var/run/rsyncd_bak.pid
RM -rf /var/run/rsync_bak.lock
#===========================
第三段階:rsyncの--daemon --config =の/ etc /:rsyncのデーモン開始 rsyncd.confを
エコー-ne rsyncの-daemon --config =の/ etc / rsyncd.conf >> /etc/rc.localの#の甲斐からのブート
#===========================
ステップ4:テストの同期化-取る
代替同期サーバーは、ディレクトリを作成します。mkdir -p / cmiot / File_Receive
rsyncの-avz / cmiot / File_Receive / rsyncuser @のBip ::バックアップ
に成功同時変更後のパスワード:エコー"123456">の/ etc / rsync.passwd
コマンドの次に自動的にログインすることができます:
rsyncの-avz / cmiot / File_Receive / * rsyncuserを@ S206 ::バックアップ--password-ファイル= / など/ rsync.passwd
 
ステップ4:設定のsersync
の下には/ usr / local /ディレクトリsersync2.5.4_64bit_binary_stable_final.tarに圧縮ファイルをアップロードするABサーバで、
使用タールあるxv sersync2.5.4_64bit_binary_stable_final.tar.gz解凍こと、そして実行MV GNU-Linuxの-x86のsersync 、
その後、vimの/usr/local/sersync/confxml.xmlが修正実行
viは/usr/local/sersync/confxml.xml
:以下の変更
<ホスト与え、次のhostIP = "localhost"をポート= "8008"> </ホスト>
 
#DUBUGモードの有効化
   #注:trueに設定し、コンソールを実行しているsersyncで、デバッグモードをオンにし、rsyncのコマンドを使ってinotifyのイベント同期を印刷します。

<デバッグ開始= "真" />
#設定イベントを監視するために
  #注:ほとんどのアプリケーションでは、あなたがCREATEFILEに(ファイル・イベント・モニターオプション)を試すことができますが、rsyncの通信を削減し、パフォーマンスを向上させるためにはfalseに設定されています。ディレクトリへのファイルのコピーを使用すると、イベント・モニター・イベントは、ファイルのコピーの最後でのみclose_write作成閉じている場合は、イベントを監視し、close_writeイベントを作成する必要がありますので、同じことが完全なファイル同期を実現することができます。
#falseにCREATEFOLDERセットした場合、ディレクトリは監視するために作成されません、ディレクトリのサブフォルダやサブディレクトリは監視されません。
#デフォルトでは、ファイルを作成する(ディレクトリ)のイベントと、削除ファイル(ディレクトリ)のイベントが監視され、そしてプロジェクトがリモートターゲットサーバーのファイル(ディレクトリ)を削除する必要がない場合は、falseに、いない削除イベントにパラメータセットを削除することができますモニター。
<inotifyを>
<削除スタート= / "真の">
<CREATEFOLDERスタート= "falseに" />
<CreateFileのスタート= "falseに" />
<closeWriteスタート= / "真の">
<moveFromスタート= "trueに" />
<のmoveToは= /> "真の"スタート
"真の" <Attribに=スタート/>
<スタートの変更= "falseに" />
</ inotifyの>
<sersync>
 #ローカルディレクトリパスの同期
<localPathに時計= "/ cmiot / File_Receive /">
  #远程IP和のrsync模块名
    <リモートIP = "对方IP"名= "rsync_bak" />
</ localPathに>
<rsyncの>
    <commonParamsのparams = " - artuz" />
    <AUTH開始= "true"のユーザー= "对方配置用户」PASSWORDFILE = "本机登录对方密码" />
    <userDefinedPort開始= "false"のポート= "874" /> <! -ポート= 874 - >
    <タイムアウト=スタート"偽"の時間を= "100" /> <! -タイムアウト= 100 - >
    <sshを開始= "偽" />
</ rsyncの>
<failLogパス= "を/ tmp / rsync_fail_log.sh" timeToExecute = "60" /> <! -デフォルトごと60分には、一度実行- >
<crontabの開始= "false"をスケジュール= "600"> <! --600mins - >
    <crontabfilter開始= "偽">
 <! - <式=を除外する"* phpの。"> </除外> - >
 <! - <除外表現= "情報/ *"> < /除外> - >
    </ crontabfilter>
</ crontabファイル>
<プラグイン開始= "false"の名前= "コマンド" />
</ sersync>
#================================================= ====
启动sersync:は/ usr / local / sersync / sersync2 -d -r -o /usr/local/sersync/confxml.xml
1)バックグラウンドでsersync実行sersyncメインサーバデーモン、オープンリアルタイムオンに同期
./sersync -d
2)リモートターゲットディレクトリ同期とプライマリサーバのディレクトリにあなたは全体のリアルタイム監視を有効にする前に
./sersync -r
場合をフィルタが設けられている、すなわち、XMLファイルに、フィルタパラメータを一時的に全体的な同期-r利用できない、真です。-rパラメータは無効になります。
3)プロファイルを指定
./sersync -o XXX.xmlを
必要に応じて、sersyncデフォルトのプロファイルconfxml.xmlのための実行可能ファイルのディレクトリを、別のプロファイル、他のプロファイルは、-oパラメータを使用して指定することができます。異なるプロファイルを使用して開いた複数のsersyncデーモンもできます。
スタートから:は/ usr / local / sersync / sersync2 -d -r -o /usr/local/sersync/confxml.xmlの最後の行にvimの/etc/rc.d/rc.localの増加
 #================================================= =============
同期テスト:
そして、別のフォルダまたはファイルからコピーされたサーバーのディレクトリのファイルにランダムにAまたはBであり、rsyncのsersyncプロセスを開く、またはフォルダ内のファイルのサイズを表示した後、マシンのサイズ、ファイルの数を同期します
コマンド:

ハードディスクの空き容量を表示
デュ-h
lsblk

指定されたディレクトリのサイズを確認
デュ-shの/ opt
の各ディレクトリのサイズをチェック
--max-深デュ-h = 1つ

の整数現在のディレクトリ内のファイル(サブフォルダを含むファイル)
のls -lR |はgrep「^ - 」 |トイレ- リットル

ソートファイルサイズによって降順 
LSを-Slh

サブディレクトリを含めます

あなたは* -SH | 黒-n

おすすめ

転載: www.cnblogs.com/sdifens/p/11791510.html