web-dev-qa-db-ja.com

仮想環境でのDRBDマッドネス(XEN)

現在、DRBDを使用して2つの異なるXEN VPSに2つのディレクトリ(/ var/wwwと/ var/pool/mail)を複製しており、それらは互いに7000マイル離れています。その上、私は透過的なIPSecトンネルVPNを使用して、プライベートレベルで両方のノードを接続していますが、公平ではないようです。現在、(wwwおよびmail)フォルダーをDRBDディレクトリに配置しています。 -それらをすべてのマシンにリンクします。動作して複製していますが、ネットワークレベル(距離とセキュリティ)の負荷が大きすぎるため、ディスクの読み取り/書き込み速度がひどいので、6分以上でWebページを開きます。メールがあります。遅延が発生し、1日の終わりに(デュアルスプリットブレイン)に直面し、両方のノードが再起動されます。DRBDが両方のノードをセカンダリとして取得すると、マウントプロセスが発生せず、Apacheのアクティブなルートドキュメントが開始されなくなります。この正確な時点で、冗長性によって可用性が失われます。

少しスピードアップするためにDRBDパーティションの負荷を解放しようとしているので、両方のディレクトリを元の場所にコピーして、DRBDパーティションのそれぞれにソフトリンクを作成しましたが、これは機能しませんでした。今すぐ必要です。良い提案! (DRBDパーティションにOCFS2 BTWを使用しています)

2
user204252

「最初に7000マイルの低速で高遅延のリンクを複製しないでください」はどうですか。

DRDBレベルでのレプリケーションにはその場所がありますが、基本的にはそれを悪用します。これは、低遅延、高帯域幅のシナリオ専用に設計されています。また、レプリケーションが遅れて追いつくときに一部のデータが失われる可能性があるディザスタリカバリシナリオで「非同期的に」使用することもできます。

これらの2つのシナリオのいずれにも該当しない場合は、drdbのようなものを使用するという考えを忘れてください。データセンターでローカルデータを整理し、レプリケーションとバックアップを使用して、物事を適切にプルダウンします。
たとえば、メールスプールを複製することはほとんど意味がありません。 Web stutff(サイトなど)-他のツールを使用してそのデータを配布できるため、どちらも意味がありません。


特殊用途のテクノロジーを使用する場合は、制限を無視して、ここで説明する災害が発生する可能性がない状況に置きます。

DRDBは、ローカルマシン向けの高可用性機能です。これにより、マシンに障害が発生した場合にファイルシステムに返信できます。 WANシナリオを処理するようには設計されていません。ただし、非同期を使用し、それが「ライトアウト」(つまり、オフサイトの場所にコピーを作成する)でない限り)。それでも、処理する帯域幅が必要です。それ-そしてそれは負担になる可能性があります(1gbit +のように)。

5
TomTom

TomTomとThatGrameGuyが指摘しているように、設計上の前提(DRBDで必要なことを達成できるという)には欠陥があります。 DRBDは、ブロックデバイスの同期に役立ちます(名前の意味:Distributed ReplicatedBlock Device)。 TomTomが説明しているように可能は理論的には現在のシナリオで使用できますが(非同期モード、一部のデータを失っても問題ない場合)、そうではありませんその状況が存在する場所を説明します。

また、これを必要以上に複雑にしているようです。単純な「プライマリ/セカンダリ」環境が必要なようです。

Webスタッフ用
Webサイトは定期的に変更されます。リモートサーバーに復元できるWebサイトのバックアップを作成するのは簡単です(またはすべてをバージョン管理システムに保存するか、構成管理システムを使用してWebサイトを複数のサーバーに「プッシュ」します)。

データベースの場合
最近、Webサイトはデータベースに支えられていることがよくあります(通常、これは「継続的に」変更される唯一の部分です)-しかし、使用する価値のあるすべてのデータベースエンジンには、何らかのレプリケーション機能があります(すでにこれを使用していると言います) 。
適切に構成されたDBレプリケーションは、データベースのレプリケーションに関してDRBDよりもway優れています。これは、リモートDBエンジンがマスターと同じレベルのACIDを保証するためです。サーバーが持っています。

メールの場合
TomTomが彼の回答で言ったように、送信メールスプールを複製する意味はありません。
1つまたは2つのメールがキューにある状態でマスターサーバーを紛失した場合、ユーザーはそれらを再送信できます。受信者のサーバーがダウンしていない限り、メールがシステムから数秒でオフになるため、とにかくそれはコーナーケースです。秒。心配する価値はありません。
人々のメールボックスは別の話です。ここでは、バックアップ(またはレプリケーションをサポートするメールシステム)が必要になります。これは、セカンダリサーバーにフェイルオーバーしたときに(古いメッセージを復元している間)、人々が古い電子メールにアクセスできない時間または日があることを意味する場合がありますが、通常は、currentメール。復元時間が許容できない場合は、バックアップをセカンダリサーバーに継続的に復元できます(または、rsyncなどを使用して、メールボックスの同期を数時間ごとに維持します)。


上記で説明したエッジのケースには、注意が必要なものがいくつかあります。

1つは、サーバーが「非常にビジー」な場合、適切に負荷分散する必要がある場合があります(HAProxyなどを使用して「フロントエンド」サーバー間でWeb要求を分散し、メールとDBを独自のサーバーに移動します)。これが、適切にスケールアウトする方法です。

技術的なコンピュータ技術の説明:DRBDハッカーDRBDの帯域幅要件はO(N ^ 2)に近いです。ここで、N =ノードの数です。ここで概説したソリューションは、おおよそO(N)です。 N = DRサイトの数-DRサイトの数は2)を超える可能性はありません。

2つ目は、Webサーバーがローカルファイルシステムにデータを書き込む場合、そのソリューションを再構築する必要があります(ファイルをデータベース、MongoDBなどのNoSQLデータベース、または中央ストレージサーバー(NFSなどを介して)に保存します。 、場合によっては、非同期DRBDを使用してこれをオフサイトの場所に複製し、ほぼリアルタイムの災害復旧を行います)-基本的に、ローカルファイルの書き込みを他のすべての「フロントエンド」サーバーで利用できるようにするためのソリューション。

1
voretaq7