自動スケーリングを使用して AWS サービスをセットアップしようとしています。アプリケーション ロードバランサーを使用してクラスターを作成し、ポート 8080 で開く必要がある Docker イメージを使用してタスクを作成しました。そのタスクに基づいてサービスを作成し、インスタンスの最小数と希望数を 1、最大数を 10 に設定し、スケールアップとスケールダウンのルールを作成しました。ただし、新しいインスタンスは作成されず、一定の間隔でイベント リストに表示されるのは次の内容だけです。
サービス microrecieverservice は、すべての要件を満たすコンテナ インスタンスがないため、タスクを配置できませんでした。最も近いコンテナ インスタンス 97d97ce9-967d-49ad-83ad-f4f904aae1f6 は、タスクに必要なポートを既に使用しています。詳細については、トラブルシューティングのセクションを参照してください。
関連するものは何も見つけられませんでしたトラブルシューティングセクション手動で別のインスタンスをクラスターに追加できましたが、指定されたイベントには変化がありませんでした。このインスタンスに ssh で接続できましたが、2 つの Docker イメージがありました。1 つは amazon-ecs-agent:latest で、もう 1 つはタスク定義でした。この時点で、サーバーに REST リクエストを送信して、それが通過するかどうかを確認しようとしましたが、接続が拒否されました。ほぼ同時に、Docker イメージが再起動しました。
コンテナはポート 8080 を使用する他のものを実行しておらず、netstat -lntp
ポート 8080 を使用するプロセスは Docker イメージのプロセスです。
答え1
おそらく、タスクはポート 8080 を静的ポートとして使用します。
クラスターにはインスタンスが 1 つしかないため、配置戦略を順守しながらサービスを更新することはできません。配置戦略では、まず新しいタスクを開始し、ヘルス チェックが成功するまで待ってから、古いタスクを停止する必要がある可能性が高くなります。
ポート 8080 でタスクが実行されているインスタンスが 1 つしかないため、タスクを開始できるインスタンスがありません。
使用ECS 動的ポート マッピング、またはクラスター内でさらにインスタンスを起動します。