web-dev-qa-db-ja.com

誰かがこのGlusterFSセットアップを説明できますか?

Glusterを使用してレプリケーションをセットアップする方法を理解するために掘り下げた後、私はこの質問に出くわしました: ApacheはGlusterFSブリックを直接読み取ることができますが、GlusterFSマウントに書き込むことができますか?

それが同じことを説明しているように見える方法も見つけて、私はそれを理解していると思いましたが、今は理解していないと思います。

したがって、この種類のレプリケーションを取得するには、両方のマシンをサーバーとクライアントとして同時に機能させる必要がありますか?今、私は関係がどのように機能するのか理解していません。たとえば、BはAのクライアントではありませんか?

複数のレベルのクライアント/サーバー関係が関係していますか? AはAのクライアントであり、BはBのクライアントであり、それぞれが同じマシンからのボリュームをフォルダーにマウントし、それらの2つのボリュームは関係の第3層で何らかの形で(AからBに)同期していますか?

上記の質問がファイルシステムまたはマウントされたボリュームへの書き込みについて尋ねるのはなぜですか? BをAのクライアントにして、Aがフォルダーをエクスポートし、Bがそれをリモートボリュームとしてフォルダーにマウントするとき、自分が何を書いているのかを自問することはありませんでした。Aの元のフォルダーと、のマウントされたボリュームに書き込みました。 B.これは、それが機能することになっている方法ではありませんか?

7
cbaltatescu

AとBの2台のマシンがあるとします。各マシンで、/opt/filesをGlusterブリックとしてエクスポートし、クライアント側のレプリケーションを設定します。次に、結果のディレクトリを/mnt/gluster-filesとして両方のマシンにマウントします。これは重要!

そのマウントポイントを使用して、2台のマシン間で可用性の高いファイルシステムを作成しました。

ファイルを作成するとき-たとえば、マシンAで/mnt/gluster-files/exampleとすると、次の2つのことが起こります。

  1. コピーを/opt/filesに書き込みます
  2. ネットワークを介してコピーを送信し、マシンBの/opt/filesに書き込みます。

冗長性が必要なため、これは良いことです。つまり、データのコピーを複数持つ必要があります。

次に、同じファイルを読み取りたいとしましょう。再びマシンAで:

  1. /mnt/gluster-files/exampleの読み取りを発行します
  2. GlusterFSは、「このファイルの最新バージョンを持っている人を見つけるために、すべてのレプリカノードをチェックする必要があります」と述べています。
  3. GlusterFSはすべてのノードをチェックします
  4. レプリケーションがうまく機能しているため、すべてのコピーが同じであることがわかります
  5. ローカルディスクからファイルが返されます。 §

(§read-subvolumeクライアントオプションがあり、この場合のように、Glusterクライアントおよびサーバーである任意のマシンのローカルボリュームに設定するのが賢明です。それ以外の場合、ステップ5は '送信されますランダムノードからのファイル '。)


舞台裏では、GlusterFSは両方のマシンの/opt/filesの同期を維持します。すべてのノードをチェックすると、特に多数の小さなファイルがないかどうかをチェックすると、パフォーマンスが大幅に低下します。

したがって、これら2つのマシンのいずれかでプロセスを実行していて、ファイルが同期していることがわかっている場合、ローカル共有からファイルを読み取れないのはなぜですか?

推奨されていませんが、canこれを実行します。 /opt/filesからファイルを読み取ります。同期が解除されたかどうかを手動で追跡します。同期が解除された場合は、ls -laR/mnt/gluster-filesのような操作を行うと、同期がトリガーされます。

では、マシンAで/opt/filesに書き込むとどうなりますか?

ファイルはGlusterFSに気付かれずにそこにあります。 Glusterはそのようには機能しません。 GlusterがマシンAで気付くようなことをしない限り、マシンBには到達しません。

したがって、Apacheに/opt/filesの読み取りと書き込みを指示することはできません。良い妥協案のように見えるのは、/opt/filesから読み取るが、/mnt/gluster-filesに書き込むように指示することです。これは、アプリケーションでファイルの読み取りと書き込みに異なるパスを指定できる場合にのみ可能ですが、多くの場合は指定できません。

12
crb