Application Load Balancerで設定する4種類のポート番号の意味を理解しよう

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

おはようございます、加藤です。Application Load Balancer(以降、ALB)には4種類のポート番号を設定する箇所があります。初学的な内容ではありますが、混乱してしまったのでまとめてみました。

前提

  • ALBの構築経験がある方を対象としています
  • 本ブログで出てくるポートとは全て宛先ポートを指しています

設定する箇所一覧

ALBとTarget Group(以降、TG)では合わせて、以下の4種類(箇所)でポートの設定が必要です。

  • ALBのリスナー
  • TGのルーティング(default)
  • TGのヘルスチェック
  • TGにインスタンス登録(overwrite)

これらのポートの意味と、どのように設定をすべきなのか説明していきます。

ALBのリスナー

外部からALBが接続を受け付けるポートです。

ALBはプロトコルとしてHTTP, HTTPSの2つに対応しており、ポート番号と合わせて複数指定する事が可能です。ブラウザからHTTP:80で受けたいならHTTP:80と設定しましょう。

TGのルーティング(default)

ALBからターゲットに対してルーティングするデフォルトのポート番号です。EC2インスタンスがLISTENしているポート番号を指定します。

今回はHTTP:3000で受け付けている想定をし設定しました。

この設定は後から変更できないので注意してください、TGの再作成が必要になります。

TGのヘルスチェック

ALBからターゲットに対してヘルスチェックを行うポート番号です。後述するルーティング(overwrite)と同じが基本ですが、必要がある場合は任意のポートを指定することが可能です。

今回はHTTP:3000で受け付けている想定をし設定します、トラフィックポートにチェックを入れるとルーティング(overwrite)と同じポートが自動的に設定されます。基本的にはトラフィックポートにチェックを入れて使用します。

TGにインスタンス登録(overwrite)

ALBからターゲットに対してルーティングするポート番号をデフォルトから上書きしたい場合に設定するポート番号です。TG配下に複数EC2インスタンスが存在し同じ機能だがポート番号が違う場合に有効です。
ECSのような形でクラスタのノードのいずれか(被ることもある)にコンテナが立ち上がってポートがランダムに決まる場合などで使われていました。(社内でコメントを貰いました!)
https://dev.classmethod.jp/cloud/aws/ecs-alb-routing/

上書きできるのはポート番号のみでプロトコルは上書きできないので注意してください。(HTTP, HTTPSは上書きできない)

初期状態ではTGのルーティング(default)で設定したポート番号が入力されています。今回はこのまま3000番で登録します。

あとがき

改めてまとめてみると、設定可能箇所が多かったです。様々な要件に対応することができそうですね。

短い内容ですが、ALBのポート設定で迷った時にこのブログの存在を思い出して頂ければ幸いです。