負荷分散と可用性

ALB(Application Load Balancer) えーえるびー

ロードバランサー負荷分散AWSHTTPルーティングマイクロサービスコンテンツベースルーティング
ALBについて教えて

簡単に言うとこんな感じ!

ALBは「賢い交通整理係」だよ!Webサービスへのアクセスを複数のサーバーに振り分けてくれるんだけど、URLやリクエストの中身を見て「この道はあっち!」って仕分けできるのが特徴なんだ。AWSの代表的な機能の一つだよ!


ALB(Application Load Balancer)とは

ALB(Application Load Balancer) とは、AWS(Amazon Web Services)が提供するロードバランサー(負荷分散装置)の一種で、アプリケーション層(HTTP/HTTPS)の情報を読み取って、リクエストを適切なサーバーへ振り分ける サービスです。

従来のロードバランサーは「とにかく均等に振り分ける」シンプルな役割でしたが、ALBはリクエストのURL・HTTPヘッダー・クッキー・メソッドなどの内容を見て振り分け先を変える「コンテンツベースルーティング」 が可能です。たとえば /api/ へのリクエストはAPIサーバーへ、/images/ へのリクエストは画像サーバーへ、といった細かい制御ができます。

ALBはAWSの Elastic Load Balancing(ELB) ファミリーの一つとして2016年に登場し、マイクロサービスやコンテナ(ECS・EKS)との親和性が高く、モダンなWebアーキテクチャの中核を担うサービスとして広く使われています。


ALBの仕組みと主な機能

ALBは受け取ったHTTP/HTTPSリクエストを解析し、設定したルール(リスナールール) に従ってターゲットグループ(振り分け先サーバーの集合)へ転送します。

機能内容
パスベースルーティングURLパス(/api//shop/など)で振り分け先を変える
ホストベースルーティングドメイン名api.example.com vs www.example.com)で振り分け
HTTPヘッダー/メソッドルーティングGETとPOSTで振り分け先を変えるなど
ターゲットグループEC2・Lambda・ECSコンテナなど複数の宛先をグループ化
ヘルスチェックサーバーの死活監視を自動で行い、障害時は自動除外
SSL/TLS終端HTTPSの暗号化・復号をALBで一括処理
Sticky Session同じユーザーを同じサーバーに送り続けるセッション維持
WAF連携AWS WAFと組み合わせて不正アクセスを遮断

ALB vs CLB vs NLBの覚え方

AWSのELBには3種類あります。「A(Application)は賢い、N(Network)は速い、C(Classic)はレガシー」と覚えましょう。

種類レイヤー特徴向いている用途
ALBL7(アプリ層)URL・ヘッダーで振り分けWebアプリ・マイクロサービスAPI
NLBL4(トランスポート層)超高速・固定IPゲーム・IoT・大量TCPコネクション
CLBL4/L7旧世代・機能が少ない古いシステムの維持(非推奨)

ルーティングのイメージ

クライアント


[ ALB:リスナー(443/HTTPS) ]

    ├─ /api/*   → ターゲットグループA(APIサーバー群)
    ├─ /admin/* → ターゲットグループB(管理サーバー)
    └─ /*       → ターゲットグループC(フロントエンド)

歴史と背景

  • 2009年 — AWSが初代ロードバランサー「CLB(Classic Load Balancer)」をElastic Load Balancingとしてリリース
  • 2014年頃マイクロサービスアーキテクチャの普及により、URLごとに異なるサービスへ振り分けたいニーズが急増
  • 2016年8月 — AWSがALB(Application Load Balancer)をリリース。L7の高度なルーティングが可能に
  • 2017年 — NLB(Network Load Balancer)もリリースされ、ELBファミリーが3種体制に
  • 2019年〜 — ECS(コンテナサービス)やEKS(Kubernetes)との統合が強化され、コンテナ時代の標準的な入口として定着
  • 現在サーバーレス(Lambda)への直接転送やgRPCプロトコルのサポートも追加され、ALBは現代的なクラウドアーキテクチャに不可欠な存在に

ALBとシステムアーキテクチャ上の位置づけ

ALBはインターネットとアプリケーションサーバーの「入口」に配置され、複数のサーバーやサービスへトラフィックを分散します。以下はALBがマイクロサービス構成でどう機能するかの全体像です。

インターネット ユーザー ALB Application Load Balancer ルール(ルーティング) /api/* → APIサーバー /img/* → 画像サーバー /* → フロントエンド ターゲットグループA(APIサーバー) API #1 API #2 API #3 ターゲットグループB(画像サーバー) IMG #1 IMG #2 ターゲットグループC(フロントエンド) Web #1 Web #2 ヘルスチェック サーバーの死活確認 障害時は自動除外 復旧したら自動追加

ALBが特に力を発揮する場面

シナリオALBの使い方
マイクロサービスサービスごとにターゲットグループを分けてURLで振り分け
Blue/Greenデプロイ新旧バージョンへの振り分け比率を段階的に変更してリリース
A/Bテスト加重ルーティングで一部のユーザーだけ新機能に誘導
コンテナ(ECS/EKS)コンテナの動的なポートに自動で転送先を更新
Lambda連携サーバーレス関数に直接HTTPリクエストを転送

関連する規格・RFC

規格・RFC番号内容
RFC 7230HTTP/1.1 メッセージ構文とルーティングの基礎仕様
RFC 7540HTTP/2(ALBはHTTP/2をサポート)
RFC 8446TLS 1.3(ALBのHTTPS終端で使用)
RFC 7235HTTP認証フレームワーク(ヘッダーベースルーティングの基礎)

関連用語