0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS SAA対策】Elastic Load Balancing(ALB / NLB / GWLB)まとめ ― ルーティング・SNI・Cross-Zone LB・設計パターンを整理する

0
Posted at

はじめに

AWS Solutions Architect Associate (SAA) の学習中に整理した ELB(ALB / NLB / GWLB) 関連の知識をまとめました。
「どの LB を選ぶか」は試験で頻出であり、プロトコル・Elastic IP 対応・WAF 統合などの違いを正確に把握しておくことが重要です。

本記事は個人の学習ノートをベースにしています。誤りがあればコメントでご指摘いただけると助かります。


サービス概要

ELB の種類

ALB NLB GWLB CLB
レイヤー L7(HTTP/HTTPS) L4(TCP/UDP/TLS) L3/L4 L4/L7
Elastic IP
WAF 統合
クロスリージョン

試験での判断ポイントです。

  • HTTP/HTTPS + ルーティング → ALB
  • TCP/UDP + 固定 IP → NLB
  • IP ホワイトリスト → NLB(Elastic IP 対応)
  • WAF が必要 → ALB(または CloudFront)

ALB のルーティング種類

種類 基準
Path-based URL パス(/orders → サービス A)
Host-based HTTP ヘッダーの Host(api.example.com
HTTP header-based HTTP ヘッダーの値
HTTP method-based HTTP メソッド
Query string-based クエリパラメータ
Source IP CIDR-based 送信元 IP

SNI(Server Name Indication)

  • 1つの ALB リスナーに複数の SSL 証明書をバインド可能
  • 異なるドメインごとに別の証明書を使用できる
  • ワイルドカード(*.example.com)は同一ドメインのサブドメインのみ

Cross-Zone Load Balancing

有効 無効
分散方法 全 AZ の全ターゲットに均等 各 AZ のターゲットのみ
  • ALB はデフォルト有効、NLB はデフォルト無効

NLB のターゲットルーティング

  • インスタンス ID 指定 → プライマリ ENI のプライマリプライベート IP に転送
  • IP アドレス指定 → 任意の ENI のプライベート IP

WAF をデプロイできるサービス

  • ✅ CloudFront、ALB、API Gateway、App Runner、Global Accelerator
  • ❌ EC2(直接)、NLB、ASG

ALB の重要な制約

  • ALB は単一リージョン内のみ動作(クロスリージョン不可)
  • ALB に Elastic IP は割り当てられない

Cognito User Pools + ALB 統合

  • ALB のリスナールールに authenticate アクションを追加
  • アプリ側で認証実装不要
  • User Pools = 認証(認可は Identity Pools)

試験で問われる設計パターン


ルーティング系

URL パスに基づくルーティング → ALB Path-based Routing

シナリオ: /api/images で異なるバックエンドサービスにルーティングしたいです。どの機能を使うべきでしょうか?

正解: Path-based Routing

  • URL パス → Path-based
  • URL ドメイン → Host-based

1つの ALB で複数ドメインの HTTPS → SNI

シナリオ: 1つの ALB で app1.example.comapp2.different.com の2つの異なるドメインに対して HTTPS を提供したいです。どの機能を使うべきでしょうか?

正解: SSL 証明書 + SNI

  • ワイルドカードは同一ドメインのサブドメインのみ
  • SNI で異なるドメインに異なる証明書をバインド

Cross-Zone LB 系

Cross-Zone LB 無効時のトラフィック計算

シナリオ: AZ-A に4ターゲット、AZ-B に6ターゲットがある NLB で、Cross-Zone Load Balancing が無効です。AZ-A の各ターゲットが受け取るトラフィックの割合は?

正解: 各ターゲット = 12.5%

  • Cross-Zone 無効: Route 53 が各 AZ に50%ずつ → AZ-A: 50% ÷ 4 = 12.5%
  • Cross-Zone 有効なら: 100% ÷ 10 = 10% / ターゲット

Cross-Zone LB の有効 / 無効時の分散

シナリオ: AZ-A に1台、AZ-B に4台あります。Cross-Zone が有効な場合と無効な場合、トラフィックはどう分散されますか?

正解:

  • 有効時: 全5台に均等 → 各20%

  • 無効時: AZ ごとに50% → AZ-A: 1台で50%、AZ-B: 4台で各12.5%

  • ALB はデフォルト有効、NLB はデフォルト無効


セキュリティ系

ALB が EC2 を unhealthy と判定(直接アクセスは可能)

シナリオ: ALB 配下の EC2 に直接アクセスすると正常ですが、ALB 経由では unhealthy と表示されます。原因として考えられるものを2つ選んでください。

正解:

  1. EC2 の SG が ALB の SG からのトラフィックを許可していない
  2. ヘルスチェックのルートが誤設定

EC2 の SG で ALB からのトラフィックのみ許可 → ALB の SG ID をソースに指定

シナリオ: EC2 のセキュリティグループで、ALB からのトラフィックのみを許可したいです。最もセキュアな設定方法は?

正解: EC2 の SG インバウンドに、ALB の SG ID をソースとして追加

  • CIDR より SG ID の方がセキュア

ALB でユーザー認証をオフロード → Cognito User Pools

シナリオ: アプリケーション側で認証ロジックを実装せずに、ALB レベルでユーザー認証を行いたいです。どの方法が最適でしょうか?

正解: Cognito User Pools を ALB に統合

  • User Pools = 認証
  • Identity Pools = AWS 認証情報の取得
  • CloudFront + User Pools は Lambda@Edge が必要

HA + WAF 保護 → ALB + ASG Multi-AZ + WAF

シナリオ: Web アプリケーションに高可用性、スケーラビリティ、WAF 保護を同時に実現したいです。どの構成が最適でしょうか?

正解: ASG(Multi-AZ)+ ALB + WAF

  • WAF は NLB / ASG には統合不可
  • 「Auto Scaling なし」はスケーラブルではない

リクエストレート制限で攻撃防止 → WAF + Rate-Based Rule

シナリオ: 特定の IP アドレスから異常な数のリクエストが送られてきています。レート制限で対処するにはどうすべきでしょうか?

正解: AWS WAF + Rate-Based Rule(ALB に統合)

  • Shield は DDoS 保護(Rate-Based Rule は不可)
  • NACL はレートベース制御不可

LB 選択系

固定パブリック IP + HA + スケーリング → NLB + ASG

シナリオ: クライアントのファイアウォールに IP アドレスをホワイトリスト登録する必要があります。HA とスケーリングも確保したいです。

正解: NLB + ASG

  • NLB = 固定 IP(Elastic IP 対応)
  • ALB / CLB = 固定 DNS(IP は変動)

TCP + UDP + グローバル低レイテンシー → Global Accelerator + NLB

シナリオ: TCP と UDP の両方のプロトコルをサポートするアプリケーションを、グローバルに低レイテンシーで提供したいです。

正解:

  1. Global Accelerator + LB 配下の EC2 を登録
  2. 各リージョンに NLB(TCP + UDP)
  • UDP → NLB(ALB は HTTP/HTTPS のみ)
  • PrivateLink は TCP のみ

API レート制限 + クライアント別クォータ → API Gateway

シナリオ: API のレート制限をクライアントごとに設定したいです。どのサービスが適切でしょうか?

正解: API Gateway + Usage Plans + API Keys

  • ALB / NLB / GWLB にはネイティブなレート制限機能がない

パッチ適用系

ALB 配下 EC2 の安全なパッチ適用 → SSM Automation + Maintenance Windows

シナリオ: ALB 配下の EC2 にパッチを適用したいですが、サービスを中断せずに安全に行いたいです。

正解:

  1. SSM Automation + AWSEC2-PatchLoadBalancerInstance ドキュメント
  2. SSM Maintenance Windows でスケジュール管理
  • ALB からの除外 → パッチ → 再登録を全自動
  • ネットワーク無効化は SSM 通信が切断されて失敗する

おわりに

ELB は「ALB vs NLB」の選択が最大のポイントです。「HTTP/HTTPS + WAF → ALB」「TCP/UDP + 固定 IP → NLB」という基本ルールに加え、Cross-Zone LB のデフォルト設定の違いや、SNI によるマルチドメイン対応を押さえておくと、ほとんどの問題に対応できます。

間違いや補足があればぜひコメントで教えてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?