VMware環境から来た私の全体的なプロセスは、
- 複数のDockerマシン(swarm)で同じNFSデータストアをマウントする
- コンテナ(例:Maria dB)がDocker Swarmにデプロイされる
- スウォーム内のノードに障害が発生した場合でも、サービスは他のノードで引き続き実行されます。
そこで私はボリュームNFS 共有上の複数の Docker マシンで、スウォームを作成しようとしました。しかし、最終的に、複数の Docker マシンが同じ NFS データ ストアをマウントすると、Docker サービスは 1 つのノードでしか起動できないことがわかりました。
私の質問は、同じサービスを複数のノードで実行し、データを NFS 共有に保存するスウォームを作成する方法だと思います。
もちろん、Docker swarm がどのように動作するかを私がまだ完全に理解していない可能性は高く、私はこれを間違った角度から見ています。
答え1
正解です。/var/lib/docker にはデータと設定が保存されており、共有したくないのです。そのエンジンを単一のサーバー上で。
スウォームでは、マネージャーまたはワーカーとしてノードをスウォームに追加し、マネージャーはスウォームの構成と状態を保存する raft コンセンサス DB を複製します。
次に、要件と可用性に基づいてさまざまなノードで起動される、同じコンテナ イメージの 1 つ以上のレプリカを持つサービスを作成します。
データベースの場合、永続データ (各 DB インスタンスの DB とログ) を扱います。これは、Docker ボリューム (永続データを保存する場所) と、具体的にはどのボリューム ドライバーを選択するかに関係します。デフォルトでは、そのサービス レプリカ (コンテナー) のボリュームが、現在実行されているノードに保存されます。そのデータベース コンテナーが失敗して新しいノードで自動的に起動できるようにするには (コンテナー オーケストレーターの機能の 1 つ)、「スウォーム対応」で、NFS マウントが正しいノードに配置され、正しいサービス レプリカの準備が整うようにする方法を知っている別のボリューム ドライバーを使用する必要があります。
チェックアウトできますREX-Rayこれは外部ストレージ上のボリュームを管理するための中間層として機能します(バックエンドの種類に応じて独自のドライバーがあります)。または、完全なリストはDocker Storeでご覧ください。