私はdocker-swarmを使用してクラウドアーキテクチャをセットアップするプロジェクトに取り組んでいます。 swarmを使用すると、サービスのレプリカをデプロイできることを知っています。つまり、そのイメージの複数のコンテナーが実行され、リクエストを処理します。
また、Dockerには、この要求の分散を管理する内部ロードバランサーがあります。
ただし、次のことを理解するには助けが必要です:
REST APIとしてサービスを公開するコンテナがあるか、Webアプリと言います。そして、群れに展開された複数のコンテナ(レプリカ)があり、他のコンテナ(このHTTP/RESTサービスと通信するアプリ)。
次に、IP:PORTの組み合わせを使用するアプリを作成するときに使用しますか?これらのサービスを実行しているワーカーノードIPのいずれかですか?そうすることで、同じサービスを実行している他のワーカー/マネージャーの間でも負荷を適切に分散できますか?
または、マネージャーを呼び出して、適切にルーティングを処理します(マネージャーノードにこの特定のサービスを実行するコンテナーがない場合でも)。
ありがとう。
iP:PORTの組み合わせを使用するアプリを作成するときこれらのサービスを実行しているワーカーノードIPのいずれかですか?
そのノードに問題のサービスのレプリカが存在しない場合でも、swarmに参加している任意のノードを使用できます。したがって、Node:HostPort
の組み合わせを使用します。入力ルーティングメッシュは、要求をアクティブなコンテナーにルーティングします。
1ワード、1万ワード
そうすることで、同じサービスを実行している他のワーカー/マネージャーの間でも負荷を適切に分散できますか?
入力コントローラはデフォルトでラウンドロビンを実行します。
これで、クライアントはdnsラウンドロビンを使用して、Docker Swarmノードのサービスにアクセスする必要があります。従来のDNSキャッシュの問題が発生します。これを回避するために、HAproxyなどの外部ロードバランサーを使用できます。