2017-08-20 4 views
0

ノードを使用して複数のコンテナを禁止する方法:Docker、Swarm、Compose? たとえば、5つのノードがあり、3つのレプリカをいくつかのサービスに配備したいと思います。このレプリカを別のノードに配置したいと考えています。ノード上の複数のコンテナを禁止する

+0

私はまだそこにいるのではないかと思うhttps://github.com/docker/swarm/issues/1734 –

+0

問題は開いています。それは悪いです。私は他のオーケストレーションシステムを使用する必要があります、ノマドまたはKubernetesまたは他かもしれない? –

+0

メモリの制約とcpuの制約を使用し、コンテナの数を心配する必要はありません –

答えて

0

現在、Docker's swarmモードはデフォルトでHAスケジューリング戦略を採用しているため、タスクのスケジュールを設定する複数のノードが存在する限り、複数のノードにサービスを分散する必要はありません。制約、メモリ制限、および停止は、タスクをスケジュールする必要がある使用可能なノードに影響を与える可能性があります。 HAスケジューラはまず、タスクのインスタンスが最も少ない候補ノード(ノードよりレプリカが多い場合を除いて通常は0)を検索し、より少ないタスクでノードを優先して結果リストを分割します。

複数のノードにタスクを分散するようにさらに制御するには、最近のバージョンで追加されたplacement preferencesを調べることをおすすめします。私はこれがスタックと構成ファイルになっているとは思っていませんが、それまでは時間の問題ではありません(新しいスウォームモードの機能は最初にdocker serviceコマンドラインに導入され、後で高レベルの抽象化に追加されました) 。プレースメントの設定では、ノードにラベルを付けて、上位レベルのトポロジを示すことができます。一般的なラック、スイッチ、またはデータセンタが含まれます。また、配置の設定では、目的のラベルの一意の値を持つノード間でタスクを分散できるトポロジ対応のスケジューリングが可能になります。したがって、トポロジを意識したスケジューリングがなくても、1つのラックにすべてのスケジュールを設定でき、トポロジを意識したスケジューリングを行うことで、各ラックにタスクの半分を配置することができます。

関連する問題