ALB (Application Load Balancer) とは?用途やメリットを分かりやすく解説
インフラの負荷分散に欠かせないAWSの「ALB(ELB)」について、ルーティングルールからスケール時の構成例まで丁寧に解説。
ALB (Application Load Balancer)とは?
ALB(Application Load Balancer)は、AWSが提供するロードバランサー(負荷分散装置)サービスであるElastic Load Balancing (ELB) の一種です。インターネットなどからのアクセスを受け取り、背後にある複数のサーバー(EC2など)へ通信を自動的に振り分ける役割を持ちます。
主な役割とメリット
ALBの最大のメリットは「システムの可用性と耐障害性の向上」です。もし1台のサーバーが故障しても、ALBがそれを検知(ヘルスチェック)して正常なサーバーにのみ通信を振り分けるため、サービスが完全に停止するのを防ぐことができます。また、アクセス急増時にはサーバー台数を増やして負荷を分散させることが可能です。
どのような場面で使われるか
少しでも規模の大きいWebサイトや、一時的にアクセスが集中するキャンペーンサイト、絶対にアクセスを止められない業務システム等の入り口として利用されます。
関連するAWSサービスとの組み合わせ例
- ALB + EC2 + Auto Scaling: トラフィックが増加した際、Auto Scalingが自動的にEC2の台数を増やし、それをALBが負荷分散する「スケーラブルなWeb構成」が王道です。
- ALB + WAF (Web Application Firewall): ALBにWAFをアタッチ(関連付け)することで、SQLインジェクションやクロスサイトスクリプティングなどのサイバー攻撃を入り口でブロックします。
- ALB + ACM (AWS Certificate Manager): 無料のSSL/TLS証明書をALBに設定し、HTTPS化(暗号化通信)を簡単に実現します。
実務上の注意点
ALBはHTTP/HTTPSトラフィック専用(レイヤー7)のロードバランサーです。TCPなどのより低いレイヤーでの通信には適用できません(その場合はNLBを使用します)。
よくあるエラーやトラブルシュート
- 502 Bad Gateway や 504 Gateway Timeout: 背後のEC2アプリケーションの応答が遅い、またはプロセスが落ちているときに発生します。ヘルスチェックの設定(間隔やタイムアウト時間)を見直す必要があります。
- アクセス元IPアドレスが分からない: アプリケーション側のログに、アクセス元のユーザーIPではなくALBのIPが記録されてしまうことがあります。ユーザーの本当のIPを取得するには、HTTPヘッダーの
X-Forwarded-Forを参照するようサーバー設定を変更します。
まとめ
ALBは、モダンなWebアプリケーションインフラにおいて必須のコンポーネントです。単なる負荷分散だけでなく、SSL終端(HTTPS化)やセキュリティ対策の関所としての重要な役割も担っています。
関連する用語 (cloud)
全16件を見るVPC (Virtual Private Cloud) とは?用途やメリットを分かりやすく解説
AWS上で独自のプライベートネットワークを構築する「VPC」について、サブネットやルーティングの基本から実務構成まで解説。
Prisma: Unique constraint failed on the fields
Prisma ORMでデータを insert/update する際、既に存在するメールアドレス等と重複してしまった場合に出るユニーク制約エラー(P2002)の安全なキャッチ方法。
S3 (Simple Storage Service) とは?用途やメリットを分かりやすく解説
AWSの代表的なストレージサービス「S3」について、バックアップから静的Webサイトホスティングまでの実務利用例を徹底解説。
Route 53 とは?用途やメリットを分かりやすく解説
AWSの高機能DNSサービス「Route 53」について、ドメイン取得からヘルスチェック・トラフィックルーティングまで解説。
TypeError: can only concatenate str to str
Pythonで文字列(str)と数値(int)を結合しようとした時に発生するエラーの原因と、str()関数やf文字列(f-string)を使った正しい表現方法。
IndentationError: expected an indented block
Python特有のエラー「IndentationError」が出る理由。スペース(空白)とタブ文字の混在や、if文・関数定義のインデントを直す方法を解説します。