2017-08-28 3 views
2

モノリシックアプリケーションからマイクロサービスに切り替える作業を進めています。 各マイクロサービスは、Amazon ECSを通じてDocker上で実行されます。Dockerベースのマイクロサービスアーキテクチャの領事

サービス発見にConsulを使用することにしました。 VPC内のEC2インスタンス上で3台のサーバーを実行しています。

私の質問は次のとおりです。

どのように/私は、各マイクロサービスの領事・エージェントを開始しますどこ?領事と一緒に(Docker-Composeを介して)それぞれのインスタンスで別のコンテナを実行しますか?それとも、私はどういうわけか、マイクロソフトのサービスごとにすでに存在するDockerコンテナ内にConsulエージェントを運営していますか?添付

enter image description here

私の状況の大まかな表現です。 領事クライアント(黄色)は、独自のDocker ContainerまたはNode.jsコンテナ内にある必要がありますか?

答えて

1

領事は別のサービスで、私はマイクロサービスのコンテナの中にそれを配備しません。大規模なシナリオでは、私はいくつかの領事コンテナを展開するでしょう:いくつかは、サーバーモードでエージェントを実行し(マスターと考える)、クライアントモードでエージェントを実行します(スレーブと考える)。

ので、私は、自分のアプリケーションのコンテナの一部としてクライアントモードで実行されているエージェントを展開しません:それらを分離

  1. は、それらが個別に停止していることを意味します。これらをまとめると、バージョンのアップグレードや失敗のためにアプリケーションのコンテナを停止するたびに、その中で実行されているConsulエージェントを不必要に停止させることになります。反対に、Consulエージェントを停止すると実行中のアプリケーションが停止します。この不要な結合は有益ではない。
  2. これらを分離すると、別々にスケールすることができます。私は私のマイクロサービスを拡大し、それをより多くのインスタンスに展開する必要があるかもしれません。コンテナにコンスルクライアントエージェントも含まれている場合、マイクロサービスの規模を拡大するとコンサルも拡大します。あるいは、私のマイクロサービスを拡大せずに領事の規模を変える必要があるかもしれません。
  3. Dockerコンテナイメージの観点からそれらを分離する方が簡単です。公式の領事像を使い続けることができ、あまり面倒なくアップグレードすることができます。領事と私のマイクロサービスをまとめることは、領事館の改装に私自身がコンテナのイメージを変更する必要があることを意味します。
関連する問題