こんにちは。私は単純なサービスを6回複製し、すべての3つのノードに均等に分散させました。しかし、ノードの1つまたは2つをオフラインにすると、残りのノード/ノード間ですべてのサービスが広がります。すべてのノードをオンラインに戻すと、すべてのサービスはオフラインになっていないノードに残ります。私はこれがコンセプトとして設計されていることを知っています。再バランスのためにサービスをオフラインにすることはできません。しかし、これを実動環境で実行するには、常にノード上で少なくとも1つのサービスを実行する必要があります。どのDocker Swarmノードでも少なくとも1つのサービスが実行されていることを確認する
少なくとも1つのサービスがすべてのDocker Swarmノードで実行されていることを確認するために自動バランスをとることはありますか?
私は誤って質問したかもしれません。各ノードで複数のサービスが実行されている場合は、私の心配はありません。私の要件は、実稼働環境では、各ノードで常に少なくとも1つのサービスが実行されていることです。再バランスについては、手作業やスクリプトを作成するよりもむしろswarmを使用するより自動化された方法が望まれていました。つまり、ノードがオンラインに戻ってくると、swarmの作業によって、アクティブノードの1つで実行されているサービスインスタンスが排除され、新しく開始したノード –
@SteveFitzsimonsこの問題の解決策を見つけましたか?私は最近、awsが5台のうち3台のサーバに影響を与えるネットワーク上の問題を抱えた後、この問題を経験しました.Dockerはサービスを利用可能な2台のホストに戻しました。サーバーが再び利用可能になった後に問題が発生したが、ドッカーはそれらをサーバーに戻さなかった。ドッカーのアップデートを手動で実行して再バランスを取っていた。 – Codex73
私が検討しているオプションは、traefikを使って外部サービスを公開してから、新しいサービスに切り替える前に重み付けフラグを使用してサービスを排除することです。理想的ではありませんが、開かれた接続があっても、Swarmがコンテナを殺すと思う唯一のオプションです –