私が所属する組織で、オンプレミス経験のあるインフラ担当者に向けて実施した AWS Application Load Balancer(ALB)の配置と挙動の説明を共有します。
本記事は、初学者向けの理解補助を目的としており、厳密な正確性よりも、オンプレミスの構成に置き換えたときにイメージしやすい説明を優先します。
わかること
この記事では、次の点を理解できます。
- ALB の論理的な配置場所
- ALB の ENI とサブネットの関係
- ALB の IP アドレス消費
- ALB のアクセスログの送信経路
構成図
以下は ALB の配置関係を簡略化した構成図です。実際の内部実装ではなく、理解を優先した論理イメージです。
ALB の論理的な配置場所
ALB の論理的な配置場所は、VPC です。サブネットではありません。
厳密に言うと、ALB の実体は、各アカウントの VPC 内ではなく、AWS が管理する基盤上で動作しています。一方で、利用者視点では、VPC 内に存在するコンポーネントとして扱うと理解しやすくなります。
ALB の ENI とサブネットの関係
ALB を作成すると、関連付けた各サブネットに ENI (Elastic Network Interface) が作成されます。ENI は、ALB が各サブネットで通信を行うために作成するネットワークインターフェースです。
作成される ENI の数は、トラフィック量に応じて自動で増減 (スケール) します。スケールの際、ENI は、各サブネットの IP アドレスを消費・解放します。その為、各サブネットの空き IP が不足していると、ALB がスケールできなくなることがあります。
AWS では、少なくとも 8 個程度の IP アドレスを各サブネットで ENI 用に確保することを推奨しています。
尚、ALB のスケール条件は、純粋なトラフィック量だけで決まるわけではなく、内部的な複数の要因によって判断されます。
ALB のアクセスログの送信経路
ALB のアクセスログは、VPC 内のネットワーク経路を通って S3 に送信されるわけではありません。
実際の送信元は、AWS が管理する基盤上にあるログ配信サービスです。アクセスログは、このサービスから各アカウントの S3 バケットへ直接配信されます。
その為、ログ出力を有効にするには、S3 バケット側で配信元であるログ配信サービスによる書き込みを許可する設定が必要になります。
情報:
以前は、S3 バケットポリシーにログ配信サービスの AWS アカウント ID を指定する必要がありましたが、現在はサービス主体を許可する方式に変更されています。
まとめ
- 論理的な配置場所は VPC であり、サブネットではありません。
- 各サブネットに通信のための ENI が作成され、負荷に応じて増減します。
- アクセスログは VPC 内から送信されるのではなく、AWS 側の配信サービスから S3 に出力されます。
これらを押さえておくと、ALB の構成と挙動の全体像を正しく理解できます。
