少数のサーバー間でミラー化されたファイルシステム


13

いくつかのLinuxサーバー間で1つのディレクトリ(または1つのファイルシステム)をミラーリングまたは複製するソリューションを探しています。理想的なソリューションは、すべてのサーバーに読み取り/書き込みアクセスを許可するものです。また、サーバーの1つがダウンした場合でも、データを失うことなく残りは機能するはずです。

私はいくつかの解決策を見てきました:

  • DRBD:ブロックレベルのレプリケーション、少しやり過ぎのようです。
  • lsyncd:非常にシンプルに見えますが、パフォーマンスには疑問があります。
  • GlusterFS:それは良い一致のように思えますが、複製モードが正確にどのように機能するかはまだわかりません。必要な特性はありますか?

他の提案は大歓迎です。


シェアードナッシングのセットアップを見ていますか、それともすべてのサーバーを同じバックエンドSANに接続しますか?
HampusLi

論理的には何も共有していません(物理的にはEBSを備えたEC2です)。
バルテック

回答:


6

私が尋ねる最初の質問は、これを2つのサーバーに複製するか、2つ以上のサーバーに複製するかです。2台のサーバーにはDRDBを使用し、3台以上のサーバーにはglusterを使用します。

I / Oレイテンシが重大な懸念事項でない場合は、glusterを使用します。セットアップは非常に簡単で、必要なことを明確に行うことができます。必要なのは、3つのボックスすべてでファイルを提供するglusterサーバーを作成し、各ボックスをファイルをマウントするglusterクライアントとして機能させることだけです。

DRDBは、3つ以上のサーバーを使用してmaster <-> masterモードで動作させるために複雑になります。リングベースのセットアップを構成する必要があり、お勧めしません。ただし、2つのサーバーの場合、DRDBは素晴らしいです。マスター<->マスターモードはセットアップが複雑ではなく、ファイルシステムのことを学ぶ必要はありません。

lsycdはマスター/スレーブのセットアップには最適ですが、それを望んでいないようです。

Cephはまだかなり新しく、前回チェックしたとき、まだfsckがサポートされていませんでした。私はインフラストラクチャをもっと安定したものにしたいです。

Lustreは大規模な展開に最適な製品ですが、mdsサーバーのハートビートとフェールオーバーをセットアップする必要があります。彼が話しているサーバーの数が限られていることを考えると、このケースでは過剰になっていると思います。


最初はクラスターごとに2台のサーバーから始めますが、スケールアウト用に2台以上のサーバーを使用するオプションが必要です。説明しているGlusterセットアップは、クラッシュしたサーバーの1つを処理しますか?サーバーを追加するのは簡単でしょうか?
バルテック


2

OpenAFSを検討する必要があります-これは、クラスター全体に分散して存在するデータの複数のコピーを可能にするほとんど分散ファイルシステムであり、誰もがFSに対して同時に読み取り/書き込みを行うことができます。

他にも多くの便利な機能があります(良好な認証、有線での暗号化、クライアントの組み込みローカルキャッシュ、ネイティブWindowsクライアント、Unixの多くのバージョン間での移植など)

ただし、セットアップには少し手間がかかります。


NFSと同じ質問:「複数のコピーを許可する」。わかりましたが、実際にこれらのコピーを同期させますか?
バルテック

うん。面倒ですが、プライマリマスターの喪失から回復することは可能です。ただし、複数のライターを作成し、結果のブロックを複数のホストに保存するのは簡単です。
クリス

OpenAFSを理解する鍵は、それがキャッシュ管理システムであることです-名前空間は1つ(つまり、「ファイル」は1つしか存在しません)ですが、ファイルのキャッシュされたコピーはどこにでもあり、キャッシュされたすべてのコピーが一貫していることを確認するプロトコルがあります。マスターを失った場合、キャッシュされたコピーの1つをマスターに変えることができますが、そのような状況にあるのは理想的ではありません。
クリス

1

必要に応じて、NFSも正常に機能する場合があります。


私の知る限り、NFSは複製されたサーバーをマウントする方法を提供しませんが、複製自体は提供しません。しかし、私は長い間NFSを使用していなかったので、おそらく変更されました。そのようなセットアップについて説明しているNFSドキュメントにリンクできますか?
バルテック

私の頭の外の方法は、dirsをいくつかのnfsサーバーに複製し、そのうちの1つにプライマリvipがあり、サーバーがダウンした場合にサーバー間でvipを移行することです。または多分ラウンドロビンDNS。NFS自体は必要なすべてを実行するわけではありませんが、ハートビートまたはレッドハットクラスターサービスと組み合わせて、必要なものになる場合があります。元の質問にすべての要件が含まれているかどうかはわかりません。非常に迅速で簡単なソリューションを実現するために、たとえば1時間ごとなど、多数のサーバー間でrsyncを実行することもできます。
lsd

rsyncに関する部分はスキップします。レプリケーションは行われますが、主に読み取り専用のセットアップ用であり、要件に適合しません。上記のコメントを編集するつもりでしたが、それはできませんでした。
lsd

1

これをDRBDで動作させるのは本当に難しいでしょう-問題はn8whnpが多方向レプリケーションに関する問題を考えるようではないようです(ミラーセットですべてのノードをストライプ化するだけです)が、並行性制御です- dは、DRBD上のミラーリング上でクラスターファイルシステムを実行する必要があります。

同時実行制御のための実用的なソリューションがないため、lsyncdはさらに悪化します。

成熟した安定したオープンソリューションとして、AFSタイプのソリューション(AFS、OpenAFS)をお勧めします。Oracleがシャットダウンしたので、私は光沢を避けておきます。glusterfsにあまり馴染みはありませんが、複製されたストレージではなく分散ストレージに依存しているため、スプリットブレイン操作での動作を長く一読することをお勧めします(AFS OTOHは非接続モードで動作するように設計されています)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.