Glusterを使用してレプリケーションをセットアップする方法を理解するために掘り下げた後、私はこの質問に出くわしました: ApacheはGlusterFSブリックを直接読み取ることができますが、GlusterFSマウントに書き込むことができますか?
それが同じことを説明しているように見える方法も見つけて、私はそれを理解していると思いましたが、今は理解していないと思います。
したがって、この種類のレプリケーションを取得するには、両方のマシンをサーバーとクライアントとして同時に機能させる必要がありますか?今、私は関係がどのように機能するのか理解していません。たとえば、BはAのクライアントではありませんか?
複数のレベルのクライアント/サーバー関係が関係していますか? AはAのクライアントであり、BはBのクライアントであり、それぞれが同じマシンからのボリュームをフォルダーにマウントし、それらの2つのボリュームは関係の第3層で何らかの形で(AからBに)同期していますか?
上記の質問がファイルシステムまたはマウントされたボリュームへの書き込みについて尋ねるのはなぜですか? BをAのクライアントにして、Aがフォルダーをエクスポートし、Bがそれをリモートボリュームとしてフォルダーにマウントするとき、自分が何を書いているのかを自問することはありませんでした。Aの元のフォルダーと、のマウントされたボリュームに書き込みました。 B.これは、それが機能することになっている方法ではありませんか?
AとBの2台のマシンがあるとします。各マシンで、/opt/files
をGlusterブリックとしてエクスポートし、クライアント側のレプリケーションを設定します。次に、結果のディレクトリを/mnt/gluster-files
として両方のマシンにマウントします。これは重要!
そのマウントポイントを使用して、2台のマシン間で可用性の高いファイルシステムを作成しました。
ファイルを作成するとき-たとえば、マシンAで/mnt/gluster-files/example
とすると、次の2つのことが起こります。
/opt/files
に書き込みます/opt/files
に書き込みます。冗長性が必要なため、これは良いことです。つまり、データのコピーを複数持つ必要があります。
次に、同じファイルを読み取りたいとしましょう。再びマシンAで:
/mnt/gluster-files/example
の読み取りを発行します(§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
に書き込むように指示することです。これは、アプリケーションでファイルの読み取りと書き込みに異なるパスを指定できる場合にのみ可能ですが、多くの場合は指定できません。