本文へスキップ
BecomeCoder

AWS SAA(ソリューションアーキテクト)コース · 第4章 コンピューティングの設計 · レッスン20

Elastic Load Balancing ― トラフィックを賢く振り分ける

導入

複数のEC2に負荷を分散させたい。しかし「どのロードバランサーを使うか」は、扱う通信の階層によって変わります。SAAではALB/NLB/GWLBの使い分けが頻出です。

説明

Elastic Load Balancing(ELB) は、複数のターゲット(EC2、コンテナ、Lambdaなど)にトラフィックを自動分散するマネージドサービスです。目的に応じて3種類のロードバランサーがあります。

種類階層特徴向いている用途
ALB(Application Load Balancer)L7(HTTP/HTTPS)パスベース・ホストベースのルーティング、WebSocket対応Webアプリ、マイクロサービス、コンテナ
NLB(Network Load Balancer)L4(TCP/UDP)超低レイテンシー、静的IP/Elastic IPを固定可能高スループットが必要な通信、固定IPが必要な連携
GWLB(Gateway Load Balancer)L3(IPパケット)サードパーティのセキュリティアプライアンスへの透過的な振り分けファイアウォールやIDS/IPSの一括適用
flowchart LR
    C["クライアント"] --> ELB["ロードバランサー"]
    ELB --> AZ1["EC2 (AZ-a)"]
    ELB --> AZ2["EC2 (AZ-b)"]
    ELB --> AZ3["EC2 (AZ-c)"]

ELBは複数AZにまたがるターゲットへ振り分けることで、第1章で学んだ「本番=Multi-AZ」を実現する中心的な部品です。ヘルスチェックに失敗したターゲットは自動的に振り分け対象から外され、正常なターゲットのみにトラフィックが送られます。これがシステムの自己修復力の土台になります。

具体例

3つのシステムが、それぞれ違うロードバランサーを選ぶ理由を見てみましょう。

  • マイクロサービスのWebアプリ → ALB … /api/users はユーザーサービスへ、/api/orders は注文サービスへ、とURLのパスで振り分けたい。これはHTTP(L7)の中身を見る必要があるのでALB。
  • オンライン対戦ゲームのサーバー → NLB … 求められるのは超低遅延と、ゲームクライアントが接続先に指定する固定IP。HTTPの中身は見ず、TCPを高速にさばければよい。→ 静的IPを持てるNLB。
  • 全社の通信をまとめてファイアウォール検査 → GWLB … サードパーティのセキュリティ製品に、全トラフィックを透過的に通したい。→ GWLB。

いずれの場合も、ELBは複数AZのターゲットへ振り分け、ヘルスチェックに失敗したインスタンスを自動で外します。これが「本番=Multi-AZ」と自己修復の土台。「パスで振り分け=ALB、低遅延・固定IP=NLB、セキュリティ製品経由=GWLB」は、ほぼこの形で出題されます。

読んでみよう

「HTTPでパスごとに振り分けたい」→ALB、「TCPで超低遅延・固定IPが必要」→NLB、「既存のセキュリティアプライアンスを経由させたい」→GWLB、という対応を丸暗記して構いません。この3択はほぼそのままの形で出題されます。

次のレッスンへ →