0

これは私のコンテナ化されたマイクロサービスアプリケーションとワークフローです。 Gitリポジトリからecs自動スケーリングのexpress.jsマイクロサービスアプリケーションの変更方法

  1. Travisプルコードは、ドッカー画像を構築し、ECRにプッシュ。
  2. 更新ECS成功したtravisビルドでaws cliを使用する新しい画像タグを使用したタスクとサービス。
  3. 私はdevとステージングクラスタごとに1つのインスタンスがあります。
  4. 私はprodクラスタに対して複数のインスタンスを持つことができますが、devおよびステージングクラスタごとに1つのインスタンスしか持てません。
  5. このソリューションには、約10マイクロサービスのrabbitmqとmysqlがあります。 (ゲートウェイ、API、等。)

シナリオ:私のWebアプリケーションや他の容器が高度に使用されている場合 は、私は自動的に同じEC2インスタンスで複数のコンテナを作成することであることをスケールアップしたいと思います。 (インスタンスには十分なRAMとメモリがあります)。

現在、webappのポートを3000にハードコードしています。私のexpress.jsコードは、次のように変更する必要がありますか?

  1. webappとapiの動的バインディングポート。
  2. それらの負荷バランス。
  3. 自動的に自動的に行われるように自動設定を構成します。

さらに: これはAnsibleを使用して達成できますか?どうやって? 私は、クラスタやインスタンスではなく、コンテナを拡大縮小する必要があります。

答えて

1

webappとapiの動的バインディングポート。 それらの負荷分散。

NodeJS/Expressアプリケーションは、コンテナの静的ポートにバインドするだけです。タスク定義では、コンテナポートを指定するだけで、ホストポートはランダムに割り当てられます。 にはがあります。複数のコンテナが実行されているため、この時点でロードバランサを使用してください。 Application Load Balancerを使用する場合、ターゲット・グループが自動的に新しいポートを登録および登録解除するようにECSを設定できます。詳細はthe docsをご覧ください。

レジュメ:express.jsコードを変更しないでください。

自動的に自動的に行われるように設定します。

ECSでサービスを設定するときに、「サービス自動スケーリング」を設定できるようになりました。これはCloudwatchアラームに応答して機能します。たとえば、ロードバランサ上の要求数をサービス数またはタスクのメモリ使用量に関連して監視します。

さらに:これはAnsibleを使用して達成できますか?どうやって?

最終的にはあなたのセットアップ特定の状態、およびクラスタは/ AWSは、スケーリングの世話をするので、私は代わりにAnsibleの(Cloudformationまたはテラフォームのような)スクリプトインフラツールを使用することをお勧めします。 AWS ECSクラスタでは実行時に介入したくないので、ECSの重要なポイントは、パラメータ/戦略を与えた後で自分自身を管理することです。

私は、クラスタやインスタンスではなく、コンテナを拡大縮小する必要があります。

を入力しないとわからないインスタンスを拡大縮小したい場合。インスタンスを拡大縮小しない場合は、常に最大数のコンテナを実行するだけではないのはなぜですか? にインスタンスを拡大したい場合は、自動スケーリンググループを使用することもできます。また、Cloudwatchアラームと組み合わせて使用​​することもできます。

関連する問題