はじめに
背景と目的
本ドキュメントは、AWSのロードバランシング機能で使う「ターゲットグループ」について丁寧に説明します。ターゲットグループの基本概念、登録できるリソース、役割と機能、作成手順、ECSとの連携、複数のELBを使う際の注意点までを扱います。初心者にも実務者にも役立つ入門書を目指します。
ターゲットグループとは(簡単な定義)
ターゲットグループは、複数のバックエンド資源(例:サーバーやコンテナ)をまとめて管理する仕組みです。ロードバランサーはこのグループへトラフィックを振り分け、ヘルスチェックで動作状態を確かめます。イメージとしては「配達先をまとめた住所録」です。
この章の読み方と前提
以降の章は順を追って理解できる構成です。基礎から実践まで広く扱いますので、まずは本章で目的と全体像をつかんでください。AWSの基本用語にふれたことがあれば読みやすいですが、深い前提知識は不要です。
ターゲットグループの基本概念
概要
ターゲットグループとは、ALB(Application Load Balancer)などのロードバランサーがリクエストを送る先をまとめた単位です。複数のサーバーやサービスをひとまとめにして、ロードバランサーが効率よく振り分けられるようにします。
ターゲットとターゲットグループの違い
- ターゲット:実際にリクエストを受け取る個々のリソース(例:EC2インスタンス、コンテナ、IPアドレス)。
- ターゲットグループ:そのターゲットを集めたグループ。グループ単位でヘルスチェックやルールを設定します。
ロードバランサーとの関係
ロードバランサーはターゲットグループを宛先としてルールに従いトラフィックを転送します。ルールごとに別のターゲットグループを指定できるため、異なる機能ごとにバックエンドを分けられます。たとえば、静的コンテンツ用とAPI用で別々に分けると管理しやすくなります。
ヘルスチェックの役割
ターゲットグループにはヘルスチェック設定があります。ロードバランサーは定期的に各ターゲットの状態を確認し、応答しないターゲットを自動で振り分け対象から外します。これにより、サービスの可用性が向上します。
実例で考える
小さなウェブアプリなら、ウェブサーバー群を1つのターゲットグループ、APIコンテナ群を別のグループにします。こうすることでトラフィックの種類ごとに最適な設定(ポート、プロトコル、ヘルスチェック)を適用できます。
ターゲットグループに登録できるリソース
ターゲットグループには、さまざまなタイプのリソースを登録できます。用途に応じて柔軟に使えるため、構成の幅が広がります。
EC2インスタンス
直接インスタンスIDとポートを指定して登録します。ウェブサーバーや既存のアプリケーションサーバーをそのまま負荷分散したいときに使います。例:ポート80のNginxを登録。
ECSタスク
ECSのタスクも登録できます。awsvpcモードのときはタスクのENI(IPアドレス)で、bridgeやhostモードのときはインスタンス+ポートで登録します。動的ポート割り当てに対応します。
Lambda関数
Application Load Balancer(ALB)はLambdaをターゲットにできます。軽量なAPIやイベント処理をALB経由で呼び出したい場合に便利です。
IPアドレスベースのターゲット
オンプレミスや別VPCのリソースなど、IPアドレスで直接登録可能です。ルーティング可能なIPであることが条件です。
登録時の注意点
ターゲットグループ作成時に「ターゲットタイプ(instance、ip、lambda)」を選びます。1つのターゲットグループには同種のターゲットのみ登録できます。各ターゲットはヘルスチェックで監視され、正常なものだけにトラフィックが送られます。
ターゲットグループの役割と機能
リクエストの分散
ターゲットグループはロードバランサーから受けたリクエストを登録されたサーバー(ターゲット)に振り分けます。例えば、同じウェブサイトに複数台のサーバーがある場合、負荷を分けて単一のサーバーに集中しないようにします。負荷分散はラウンドロビンや最小接続などの方式で行われます。
ヘルスチェックと自動除外
ターゲットグループは定期的にターゲットの状態を確認するヘルスチェックを実行します。不具合があるターゲットを検出したら自動でルーティング対象から外します。復旧すれば再度トラフィックを流します。これにより利用者への影響を小さくできます。
スケーリングと自動登録
オートスケーリングやコンテナの起動で新しいターゲットが増えた際、ターゲットグループに自動で登録されれば即座にトラフィックを受けられます。運用作業を減らし、負荷変動にも柔軟に対応できます。
セッション管理(スティッキー)
必要に応じて同じユーザーのリクエストを同じターゲットに送り続けるスティッキー機能を使えます。セッション情報を保持するアプリケーションで有効です。
ポート・プロトコルの柔軟性
ターゲットごとに受けるポートやプロトコルを設定できます。例えばフロントはHTTPS、バックエンドはHTTPで動かすといった構成が簡単に作れます。
運用を楽にする機能
ターゲットの登録解除時の遅延(ドレイン)やヘルスチェックの細かい設定で安全にデプロイできます。ログやメトリクスと組み合わせると監視や障害対応がしやすくなります。
ターゲットグループの作成方法
前提
ターゲットグループはAWS管理コンソールのEC2セクションから作成します。ここでは、実際に作る手順を分かりやすく説明します。例として、Webサーバー(ポート80)を登録するケースを想定します。
作成手順(手順順)
- EC2コンソールを開き、左メニューの「ロードバランシング」→「ターゲットグループ」を選択します。
- 「ターゲットグループを作成」をクリックします。
- ターゲットタイプを選びます(インスタンス、IPアドレス、Lambda)。例:EC2インスタンスを使う場合は「インスタンス」を選びます。
- 名前、プロトコル(HTTP/HTTPS)、ポート(例:80)を入力し、対象のVPCを選択します。
- ヘルスチェックの設定を確認・変更します。パスは“/”や“/health”など、アプリに合わせて指定します。間隔やタイムアウトは初期値で問題ないことが多いです。
- 「ターゲットの登録」で、登録したいインスタンスやIPを選びポートを指定して追加します。例:インスタンスi-0123456789abcdefを選択しポート80で登録します。
- 内容を確認して「作成」をクリックします。
作成後の確認と注意点
- 作成直後はヘルスチェックで“初期化中”の状態になります。正常になるまで数分かかることがあります。
- セキュリティグループでロードバランサーからの通信(例:ポート80)が許可されているか確認してください。許可がなければ疎通しません。
- IPターゲットやLambdaを選ぶ場合、登録方式やポート指定が異なるので注意してください。
実務上のヒント
- 名前は用途が分かるように環境(prod/stg)やサービス名を含めると管理しやすいです。
- ヘルスチェックのパスはシンプルにし、アプリ側で確実に200を返すエンドポイントを用意してください。
以上がターゲットグループの基本的な作成方法です。必要に応じて個別の設定(HTTPS証明書やセッション設定など)を追加してください。
ECSとターゲットグループの連携
概要
ECSサービス作成時にApplication Load Balancer(ALB)を選び、既存のターゲットグループを指定すると、タスクが自動でそのターゲットグループに登録されます。これにより、スケーリングやタスク入れ替え時も手作業なしでトラフィックが適切にルーティングされます。
自動登録の仕組み
ECSはサービスを通じてALBと連携し、起動したタスクのIPやインスタンスをターゲットグループに登録します。例えばコンテナがポート80で待ち受ける設定なら、ALBはそのタスクをターゲットに追加し、ヘルスチェックで状態を監視します。
利点
- スケーリング時も自動的に登録・解除され、運用負荷が下がります。
- ALBのヘルスチェックで不良タスクを検出しトラフィックを止めます。
設定のポイント(簡潔)
- ターゲットグループを作成(ターゲットタイプはipかinstanceを選ぶ)
- ALBのリスナーとルールを設定
- ECSサービス作成時にALBとターゲットグループを指定し、コンテナポートを一致させる
- ヘルスチェックパスをコンテナ側で応答するように設定
注意点
- セキュリティグループやサブネットがALBとタスク間で通信可能であることを確認してください。
- ターゲットタイプの不一致(ipとinstance)は登録に失敗します。
- Deregistration delayやセッション維持の設定により、接続切断の挙動が変わります。
具体例
静的なWebコンテナ(ポート80)をECSで動かす場合、ALBリスナー80→ターゲットグループ(ポート80)を指定すれば、サービス作成時にタスクが自動で登録され、ロードバランシングが有効になります。
ターゲットグループの複数ELB利用に関する注意
問題の概要
ターゲットグループは基本的に一つのロードバランサー(ELB)に紐づいて使う想定で設計されています。そのため、別のELBで同じターゲットグループを選ぼうとすると「使用中」と表示され、選択できないことがあります。
なぜ起きるのか(簡単な説明)
同一のターゲットグループを複数のELBで共有すると、ヘルスチェック設定やリスナーの振る舞いが競合する可能性があります。たとえば、あるELBではポートAで監視し、別のELBではポートBを期待するような違いがあると整合性が取れません。クラウド側はこうした衝突を避けるため、使用を制限する仕組みを取ります。
実務での対策と手順
- 新しいELBごとにターゲットグループを作成します。既存設定(ヘルスチェックのパスや間隔、ポートなど)をコピーすると運用が楽です。
- どうしても同一ターゲットグループを使いたい場合は、まず現在のELBからターゲットグループの関連付けを外します。コンソールのリスナー設定やターゲットの登録画面で解除できます。
- ECSなどのサービスで複数のターゲットグループを扱う場合は、各サービスやリスナーに正しいターゲットグループを割り当ててください。
運用上のポイント
- ブルー/グリーンや段階的な切替をする場合は、別のターゲットグループを用意して切替え時に入れ替えると安全です。
- 設定を変更する前にヘルスチェックの条件やターゲットの種類(インスタンスかIPか)を確認してください。設定ミスマッチが原因でトラブルが起きやすいです。
上記の対策を取れば、意図しない「使用中」表示や切替時の問題を回避できます。












