Application Load Balancer とターゲットグループを使用して Amazon ECS の動的ポートマッピングを設定し、1 つのインスタンスで複数のタスクコピーを実行する方法を知りたいです。
Classic Load Balancer を使用して同じインスタンスでタスクの複数のコピーを実行することはできません。Classic Load Balancer を使用するときは、代わりにコンテナインスタンスのポート番号を静的にマッピングする必要があります。ただし、Application Load Balancer は動的ポートマッピングを使用するため、同じコンテナインスタンスの 1 つのサービスから複数のタスクを実行できます。
注: Network Load Balancer は動的ポートマッピングにも使用できます。詳細については、「Amazon ECS 用の Network Load Balancer を使用する」を参照してください。
動的ポートマッピングを設定するには、次の手順を実行します。
Amazon Elastic Container Service (Amazon ECS) 用の Application Load Balancer とターゲットグループを作成します。 重要: ターゲットグループを作成するときにヘルスチェックトラフィックを正しくルーティングするには、「高度なヘルスチェック設定」を展開します。****[ポート] で、**[トラフィックポート]**を選択します。
Amazon ECS コンソールを開き、作成中または更新中のタスク定義のホストポートを 0 に設定します。アプリケーションのコンテナポートマッピングを設定します。 重要: host および awsvpc のネットワークモードは、動的ホストポートマッピングをサポートしていません。
ロードバランサーからコンテナインスタンスへのインバウンドトラフィックを受け入れるルールを追加します。セキュリティグループとネットワークアクセスコントロールリスト (ネットワーク ACL) では、ロードバランサーからインスタンスへのトラフィックをエフェメラルポート範囲で受け入れる必要があります。 **注:**エフェメラルポート範囲の詳細については、「PortMapping」を参照してください。
Amazon ECS コンソールを開き、サービスを設定して、作成した Application Load Balancer を使用するようにします。 重要: サービスを作成するときに、これらの設定を変更したり、既存のサービス内にロードバランサーを追加したりできます。サービスタスク定義を更新する場合、サービスの作成時に指定したコンテナ名とコンテナポートはタスク定義に残しておく必要があります。詳細については、「サービスロードバランシング」を参照してください。また、AWS コマンドラインインターフェイス (AWS CLI) の update-service コマンドを使用して設定を変更したりロードバランサーを追加したりすることもできます。
aws ecs update-service --service <service-name> --cluster <cluster-name> --load-balancers targetGroupArn=<target-group-arn>,containerName=<container-name>,containerPort=<container-port>
Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開き、以下の手順を完了します。 ナビゲーションペインから [ターゲットグループ] を選択します。 ターゲットグループのハイパーリンク名を選択します。 [ターゲット] タブを確認します。作成したサービスのタスクにどのポートが使用されているかを確認できます。
動的ポートマッピングが正しく設定されていれば、ターゲットグループに登録されているターゲットと、タスクに割り当てられたポートが表示されます。また、次のエフェメラルポート範囲の登録済みターゲットにもタスクが表示されます: 49153~65535 および 32768~61000 です。
Elastic Load Balancing とは?
Application Load Balancer とは?