現在、私はDocker Swarmクラスタを構築中です。 3人のマネージャーと3人の労働者で構成されています。このセットアップで展開するアプリケーションは、スケーラビリティのために複数のコンテナにコードが必要なラーベルバックエンドで構成されています。私は既に、GlusterFSボリュームとRex-rayをCephバックエンドで共有し、ボリュームの共有ストレージとして試しました。 GlusterFSは信頼できず、私の場合、Cephはちょっと残忍すぎて難しいです。:)Docker Swarm共有ボリューム
現在の設定は次のようになります。私はドッカーの外にペルコナクラスターを持っており、これらのサーバーでGlusterFSを実行し、Docker Workersにそれらを単にマウントします。
Docker Managers
+-------------------------------------------------------------+
| |
| +---------+ +---------+ +---------+ +---------+ |
| | | | | | | | | |
| | HAproxy +---+ HAproxy +---+ HAproxy +----+ SSL | |
| | | | | | | | Manager | |
| +----+----+ +----+----+ +----+----+ +---------+ |
| | | | |
+-------------------------------------------------------------+
| | |
| | | Docker Workers
+-------------------------------------------------------------+
| | | | |
| +----+-------------+-------------+--------------------+ |
| | | |
| | Applicaties | |
| | | |
| +---+--------------+---------------+--------------+---+ |
| | | | | |
| | | | | |
| +---+----+ +---+----+ +----+---+ +----+---+ |
| | Mysql | | Mysql | | Mysql | | Mysql | |
| | LB +-----+ LB +-----+ LB +-----+ LB | |
| +---+----+ +----+---+ +----+---+ +----+---+ |
| | | | | |
| +---------------+-------+------+--------------+ |
| | | | |
+-------------------------------------------------------------+
| | |
| | |
| | |
+-------+--------+ +--------+-------+ +--------+-------+
| | | | | |
| MySQL01 | | MySQL02 | | MySQL03 |
| Gluster01 +-----+ Gluster02 +----+ Gluster03 |
| | | | | |
+----------------+ +----------------+ +----------------+
それから私はこのようなPHPの容器にそれらをマウントします
--mount type=bind,source=/mnt/client-data,target=/var/www/html/
これは動作しますが、これは非常に遅いです。ページの読み込み時間は約10秒です。ファイルがマウントされていない場合(それらはコンテナに存在します)、ページの読み込み時間は約2〜3秒です。
私はFlockerを訪れましたが、これは非常に興味深いようですが、Flockerボリュームは1つのコンテナにしか搭載できないと思います。これは本当ですか?
私が今試しているもう一つの解決策は、新しいコンテナが作成されるたびにコードがgitから引き出されることです。これは実際には良い解決策ですが、コードを取得してコンポーザーを実行するのに約5分かかります。更新をプッシュすると、すべてのコンテナを再起動する必要があります。
複数のホスト上の異なるコンテナ間で自分のコードを共有する最適なソリューションは何でしょうか? (またはデータセンター)現在、私は多くの異なるストレージバックエンド(Ceph、NFS、gluster)にアクセスでき、新しいものを作成することは問題ありません。
EDIT:このケースでは、glusterは信頼性が低いのはなぜですか? Gluster上でドッカーボリュームを使用する場合、ボリュームドライバプラグインを使用すると、Glusterは信頼できません。ボリュームはサービスを作成するときにほとんどの時間にうまくマウントされますが、スケジュールで再スケジュールが発生した場合、ボリュームはほとんどマウントされません。私は何がうまくいかないかを判断するためにこれを後で調べますが、私は現時点で多くの自由時間を持っていません。 Glusterは実際には固いです。この場合ではない。
GlusterFSがどのように信頼できないのか読者が理解することは興味深いでしょう。 – user239558
私はこの日の後半では信頼できない理由を説明します。まずは自分の仕事を終わらせなければなりません:)しかし、それはGlusterでドッカーボリュームを作成することと関係があります。 –