1つのサーバーにファイルをアップロードし、他のサーバーにプッシュするなど、2つのサーバーをミラーリングすることが可能かどうか疑問に思っていました。ファイルミラーリングにもっと興味があります。パッケージ管理をミラーリングする必要がないため、セットアップ(しかし、それもクールです!)
1つのサーバーにファイルをアップロードし、他のサーバーにプッシュするなど、2つのサーバーをミラーリングすることが可能かどうか疑問に思っていました。ファイルミラーリングにもっと興味があります。パッケージ管理をミラーリングする必要がないため、セットアップ(しかし、それもクールです!)
回答:
それは当面の仕事に大きく依存します。
なぜファイルミラーリングが必要なのですか。通常は定期的に更新してもよいWebサイトやコンテンツリポジトリなどを更新しますか?または、データのリアルタイム同期が必要ですか?
ファイルの定期的な非同期ミラーリングでは、通常、すべてのデータをアップロードするステージング領域があれば十分です。そして、それをサーバーに配布する場所から。あなたの場合-2つのサーバーで-データを(FTP、NFS、DAV、SFTPなどを介して)転送する場所にsrv1にステージングファイル共有を作成し、cronjobでファイルを「ライブ」ディレクトリにrsyncすることができます。 srv1およびsrv2。その場合にrsyncを使用する最も簡単な方法は、データ転送に使用し、クラスター内のすべてのサーバーで承認されるsshキーペアを生成することです。
例:
srv1:/data/staging/ <= is where you upload your data
srv1:/data/production/ <= is where your servers get their production data from
srv2:/data/production/
srv1$ cat /etc/cron.d/syncdata.cron
=====
*/5 * * * * syncuser rsync -a --delete /data/staging/ /data/production/
*/5 * * * * syncuser rsync -az --delete -e ssh /data/staging/ srv2:/data/production/
=====
これはあなたに基本的な考えを与えるはずです。もちろん、一部のスクリプトでrsync呼び出しをラップし、同期に5分以上かかる場合に2回実行されないように適切なロックを実装する必要があります。また、ステージング領域が必須ではないことは言うまでもありません。srv1:productionをsrv2:productionに直接同期することもできます。srv2がsrv1のデータより最大5分古いデータを表示する可能性があるだけではありません。2つのバランスを取る方法によっては、どちらが問題になるかもしれません。
ファイルを非同期で配布する別の方法は、rpmまたはあなたの場合はdebファイルとしてそれらをパッケージ化することです。これらを中央リポジトリに配置し、cfengine、monkey、またはdiyメッセージバスベースのソリューションなどを介してインストール/更新します。これには、デプロイされたデータのバージョン管理の優れた副作用がありますが、自分で作成してデプロイする少量のデータ(独自のソフトウェアのバージョンなど)にのみ適しています。これを使用してTBのデータを配布する必要はありません。また、1分おきなどの高頻度で変化するコンテンツをミラーリングすることは適していません。
cronを毎回呼び出す代わりに、ほぼリアルタイムでデータを複製する必要があるが必ずしも同期である必要がない場合は、前述のincronのようなinotifyベースのメソッドを使用して同期スクリプトを呼び出すことができます。もう1つの可能性は、Gamin(カーネルに存在する場合はinotifyも使用します)を使用して、独自の小さな同期デーモンを作成することです。最後に重要なことですが、すべてのファイルがSFTPなどを介して1つのサーバーにアップロードされる場合、SFTPサーバーでファイルのアップロードなどの特定のイベントの後に呼び出されるフックを定義できるかどうかを確認できます。これにより、新しいデータがアップロードされるたびにサーバーに同期スクリプトをトリガーするように指示できます。
データのリアルタイム同期ミラーリングが必要な場合は、クラスターファイルシステムが適切な場合があります。DRDBはすでに名前が付けられています。ブロックレベルでのレプリケーションに非常に適しており、高可用性のMySQLセットアップでよく使用されます。GFS2、OCFS2、Luster、GlusterFSもご覧ください。ただし、LustreとGlusterFSは、2つのサーバーのセットアップにはあまり適していません。
特定のユースケースに応じて-DRBD http://www.drbd.org/のようなものを使用できます
ここでバックアップソリューションを構築しようとしている場合(私は個人的にほとんど同じ設定で行っています)は慎重に行ってください。(おそらく)最大の付随的削除の1つである、バックアップする必要のあるさまざまな問題があります。どのライブレプリケーションシステムも削除を複製するだけで、安全性は確保されません。この毎日のレプリケーションは機能しますが、かなり弱い答えです。RSnapshotを試してください。
Unisonはうまくいくかもしれませんが、個人的な経験はありません。
適切なフラグを使用してRsyncを両方向で実行することはできますが、削除されたファイルを処理する方法については、特別な操作なしでかなりトリッキーな問題があり、ファイルを復元するだけです。そうでなければ貧しい。ファイルが移動された場合にも奇妙なことを行います。
あなたが何をしていても、ファイルを両端で同時に編集できる状況が発生する場合は、問題があります。unisonは、私が知っている唯一の解決策であり、これを問題なく処理することができます。
clonezillaは、rsyncを使用するものも見ることができます