高可用性を設定しています shared-nothing 地理的に分散したWebサーバー ドメインに複数のAレコードを使用 。現在、私は速度よりも高可用性(「1本の電源コードを抜いても、すべてのブラウザーが私のWebサイトを見ることができる」)に関心があります。
Webサーバーソフトウェアは、物理ボックスごとに1つの仮想マシン内で実行されます。 (使用しているWebサーバーとハイパーバイザーは本当に重要ですか?使用している場合は、現在ApacheとVirtualBoxを使用しています)
誰かが、Webサーバーの同期を維持するために使用する予定だった、現在の恐ろしく複雑な自家製システムをダンプして、Glusterに置き換えることを勧めました。
これらの選択肢のどれが優れていますか?
ホストOSにハイパーバイザーを実行のみさせ、VMディスクイメージをのみ保存します。各仮想マシン内で、Glusterソフトウェアをインストールし、VMディスクイメージ内のフォルダー(ブリック)を指すGlusterFSマウントポイントをセットアップし、そのマウントポイント(またはその中のフォルダー)をWebとして使用します。ルート。
ホストOSにハイパーバイザーのみのみを実行させ、両方VMイメージと個別にフォルダー(ブリック)を保存します)VMにアクセスを許可します。各仮想マシン内にGlusterソフトウェアをインストールし、VMディスクイメージの外側のブリックを指すGlusterFSマウントポイントを設定し、そのマウントポイント(またはその中のフォルダー)をWebルートとして使用します。
ホストOSにハイパーバイザーとGlusterを実行させます。ホストOSで、実際の物理ディスク上の別のフォルダー(ブリック)を指すGlusterFSマウントポイントを設定します。 VMがWebルートとしてGlusterFSマウントポイントにアクセスできるようにします。 (仮想マシン内にGlusterソフトウェアをインストールする必要はありません)。
ホストOSにハイパーバイザーとGlusterを実行させます。ホストOSで、実際の物理ディスク上の別のフォルダー(ブリック)を指すGlusterFSマウントポイントを設定します。両方のWebサーバーは同一である必要があるため、ハイパーバイザーに仮想ディスクイメージをGlusterFSマウントポイント内に保存するように指示します。
他に何かありますか?
Glusterについて私よりも多くのことを知っている人は、すぐに「#4を実行すると、(いくつかの恐ろしいことが起こります)、(他のいくつかの数)が(他のいくつかの恐ろしいこと)を引き起こします...だから、その唯一の選択肢は実際に動作するのは(残りの数だけ)」です。 (つまり、これは主観的な質問ではないと思います)。
( 誰かがこのGlusterFSセットアップを説明できますか? で言及されている「最適化」は、これらの選択肢のいずれにも適用できます)。
昨年から状況が変わっていない限り、地理的に異なるハードウェアでglusterfsAFRを使用しないことをお勧めします。レイテンシーを適切に処理せず、read-subvolumeを指定しないと、リモートブリックからの読み取りをランダムに(明らかにランダムに、実際にはランダムではありません)試行します。テストとして、glusterレプリケーションで最も潜在的な2つのノードを設定し、そのファイルシステムでtouch testfile && time stat testfile
を試して、すべてのFS opにかかる時間の最小値を確認します。アプリケーションがシェアードナッシングであると指定した場合でも、ロックチェックとコヒーレンシチェックが実行されます。つまり、他のすべてのレプリカからメタデータをポーリングします。
上記のテストを実行した後、まだglusterを使用したい場合は、次のように質問します。
#4を使用して、VMイメージを複数のVMに同時にマウントしようとすると、FSで一貫性の問題が発生します。通常のLinuxファイルシステムは揮発性バッキングを処理しませんまったくストレージ。
#2のようなファイルシステムパススルーは、私が試したすべての仮想化システムでパフォーマンスが低下します。 9p virtio(kvm)などのvboxに相当するものではなく、NFSをトランスポートとして使用する方がはるかに優れています。 Windows-vboxのホストfsパススルーはかなりひどいです(読む:遅い、壊れやすい)、Linuxでホストされている同等のものも同様だと思います。 fsパススルーが機能するようになったとしても、glusterfsレプリケーションで必要とされるxattrをサポートしない可能性があります。歴史的に、拡張属性用にNFSを構成するのは少し面倒でしたが、NFSv4の方が幸運かもしれません。このアプローチには落とし穴があります。私はそれを避けたいと思います。
#3にはいくつかの約束があります。ホストにglusterをセットアップしてから、gluster NFSクライアントリスナーを実行し、VMに接続します。これは、A。したくないことがわかったときに最も簡単に変換されます。 VMおよび/またはBを使用します。glusterfsを使用したくない。
#1も同様に機能しますが、ベアメタルに勝る利点はありません。単一アプリケーションシステム用であると言うので、セキュリティの向上は事実上無効になります。さらに言えば、#3もそうではありません。これとの唯一の違いは、glusterfs用のLinuxネイティブドライバーを使用できることです。ブリックに別の仮想ディスクをセットアップして、ブリックを再作成せずにVM.
私はすべてを失うと思います。これをVirtualBoxで仮想化しないでください。また、クラスター/複製ファイルシステムを使用しないでください。複雑さの層は通常、それだけの層、複雑さ、バグ、速度低下、不安定性であることがわかります。
複雑にしないでおく。ベアメタルでApacheを実行し、NFSまたはrsyncを使用してデータを場所間で移動します。