2

かなり広い地域にいくつかの異なる場所があり、それぞれに会社のデータを格納する Linux サーバーがあります。このデータは、さまざまな場所でさまざまな方法で毎日変化します。このデータを最新の状態に保ち、これらすべての場所間で同期する方法が必要です。

例えば:

ある場所で、誰かが一連の画像をローカル サーバーに配置します。別の場所では、他の誰かがドキュメントのグループをローカル サーバーに配置します。3 番目の場所では、少数の画像とドキュメントの両方をサーバーに追加します。他の 2 つの場所では、ローカル サーバーにまったく変更が加えられていません。翌朝までに、これらすべての画像とドキュメントを保持するために、5 つの場所すべてにサーバーが必要です。

私の最初の本能は、私たちの場所の帯域幅がまったく使用されていないときに、rsync と cron ジョブを使用して夜間 (午前 1 時から午前 6 時くらい) に同期を行うことです。1 つのサーバーを「中央」サーバーにして、最初に他のサーバーからすべてのファイルを取得するのが最もうまくいくように思えます。次に、それらの変更を各リモート サーバーにプッシュしますか? または、この機能を実行する別のより良い方法はありますか?

4

8 に答える 8

3

私のやり方(Debian/Ubuntuボックスで):

  • dpkg --get-selectionsインストール済みのパッケージを取得するために使用します
  • dpkg --set-selections作成されたリストからそれらのパッケージをインストールするために使用します
  • ソース管理ソリューションを使用して構成ファイルを管理します。私は集中的に git を使用していますが、subversion も同様に簡単に使用できます。
于 2008-09-25T00:28:57.027 に答える
2

AFAIK、rsyncはあなたの最良の選択です、それは他のさまざまな機能の中で部分的なファイル更新をサポートします。セットアップが完了すると、非常に信頼性が高くなります。タイムスタンプ付きのログファイルを使用してcronを設定し、実行ごとに更新される内容を追跡することもできます。

于 2008-09-24T21:12:38.777 に答える
2

rsyncが最適なソリューションではない場合の代替手段は、Unisonです。UnisonはWindowsで動作し、両側に変更があった場合に処理するためのいくつかの機能があります(あなたが提案したように、必ずしも1台のサーバーをプライマリとして選択する必要はありません)。

タスクの複雑さに応じて、どちらかが機能する場合があります。

于 2008-09-24T21:16:40.623 に答える
2

(理論的に)実行できることの1つは、Pythonなどを使用してスクリプトを作成し、カーネル機能をinotifyすることです(pyinotifyたとえば、パッケージを介して)。

特定のツリーでイベントを受信するように登録するスクリプトを実行できます。スクリプトはディレクトリを監視し、サーバーごとに状況が変化するたびに他のすべてのサーバーを更新できます。

たとえば、誰かspreadsheet.docがサーバーにアップロードした場合、スクリプトはそれを即座に認識します。ドキュメントがたとえば5分以内に変更または削除されない場合、スクリプトはドキュメントを他のサーバーにコピーする可能性があります(rsyncなどを介して)

このようなシステムは、理論的には、あるマシンから別のマシンへの一種の制限された「ファイルシステムレプリケーション」を実装できます。ちょっといいアイデアですが、おそらく自分でコーディングする必要があります。

于 2008-09-25T00:10:34.093 に答える
1

これがどれほど実用的かはわかりませんが、ソース管理システムがここで機能する可能性があります。日中のある時点(おそらく1時間ごと?)で、cronジョブがコミットを実行し、夜間に各マシンがチェックアウトを実行します。チェックアウトを実行する必要があるときに長いコミットが実行されないという問題が発生する可能性があり、基本的に同じことがrsyncで実行される可能性があります。

私が考えているのは、中央サーバーを使用すると同期操作が簡単になると思います。競合は中央で一度処理してから、他のマシンにプッシュすることができます。

于 2008-09-24T21:16:42.637 に答える
0

rsyncが最良の選択です。ただし、異なるサイトの同じデータに対する更新間の競合をどのように解決するかを慎重に検討する必要があります。site-1が「customers.doc」を更新し、site-2が同じファイルに対して異なる更新を行っている場合、どのように解決しますか?

于 2008-09-25T00:03:46.557 に答える
0

Matt McMinnに同意する必要があります。特に、会社のデータであるため、ソース管理を使用し、変更率に応じて、より頻繁に実行します。

中央クリアリングハウスは良い考えだと思います。

于 2008-09-25T00:15:14.627 に答える
0

以下に依存します * 同期が必要なサーバー/コンピューターの数は? ** rsync を使用するサーバーが多すぎる場合、問題が発生します ** スレッドを使用して複数のサーバーに同時に同期するか、次々に同期します。したがって、後者の場合、特定の時点でソースマシンの高負荷またはサーバー (クラスター内) の一貫性のないデータが見られます。

  • 同期が必要なフォルダのサイズと変更頻度

    • データが巨大な場合、rsync には時間がかかります。
  • ファイル数

    • ファイルの数が多い場合、特にファイルが小さい場合は、rsync に再び多くの時間がかかります。

rsync 、 NFS 、 Version control を使用するかどうかはすべてシナリオに依存します

  • サーバーが少なく、データ量が少ない場合は、rysnc を 1 時間ごとに実行するのが理にかなっています。データが時々変更される場合は、コンテンツを RPM にパッケージ化することもできます

提供された情報により、IMO バージョン管理が最適です。

2 人が同じ名前の異なるファイルをアップロードすると、Rsync/scp で問題が発生する可能性があります。複数の場所にまたがる NFS は、完全に設計する必要があります

単一/複数のリポジトリがなく、すべてがそれらのリポジトリにコミットするだけです。必要なのは、リポジトリの同期を維持することだけです。データが巨大で更新が頻繁に行われる場合、リポジトリ サーバーには十分な量の RAM と適切な I/O サブシステムが必要です。

于 2013-02-22T07:59:04.370 に答える