ELB と Auto Scaling
ELB(Elastic Load Balancing)と Auto Scaling は、AWS 上で高可用性・コスト最適なシステムを構成する上で欠かせない 2 つのサービスです。この 2 つとマルチ AZ を組み合わせることで、障害に強くトラフィックの変動にも柔軟に対応できるアーキテクチャを実現できます。
概要
Webシステムでは、ユーザーが多い時間帯と少ない時間帯でサーバーへの負荷が大きく異なります。また、サーバーが 1 台だけでは障害発生時にシステム全体が止まってしまいます。ELB と Auto Scaling はこれらの課題をそれぞれ解決します。
- ELB: 複数のサーバーにトラフィックを振り分け、1 台に負荷が集中するのを防ぐ
- Auto Scaling: 需要に応じてサーバーを自動的に増減させ、コストと性能を最適化する
CP試験で押さえるポイント
- スケールアップ(垂直スケーリング)= インスタンスのスペック自体を上げる。スケールアウト(水平スケーリング)= インスタンスの台数を増やす
- Auto Scaling はスケールアウト(台数増減)であり、スケールアップ(スペック変更)ではない
- ELB + Auto Scaling + マルチ AZ の組み合わせが「高可用性な構成」の定番パターン
- ALB は HTTP/HTTPS(レイヤー 7)、NLB は TCP/UDP(レイヤー 4)の負荷分散
- Auto Scaling はコスト最適化(オフピーク時に縮退)と耐障害性(不健全なインスタンスを交換)の両方に貢献する
- 「需要の変動に対応」「コスト削減」「高可用性」のキーワードで ELB + Auto Scaling を想起する
ELB(Elastic Load Balancing)
ELB はトラフィックを複数のターゲット(EC2 インスタンス・コンテナ・Lambda 関数など)に自動的に分散させるサービスです。
主な役割
- 負荷分散: 受信したリクエストを複数のサーバーに均等に振り分けて過負荷を防ぐ
- 高可用性の確保: 複数の AZ に配置されたインスタンスに振り分けることで、1 つの AZ が障害になっても継続稼働できる
- ヘルスチェック: 正常に動作しているインスタンスにだけトラフィックを送る。障害インスタンスへのルーティングを自動停止する
ALB と NLB の違い
| 種類 | 対応レイヤー | 特徴 | 適した用途 |
|---|---|---|---|
| ALB Application Load Balancer |
レイヤー 7(HTTP/HTTPS) | URL パス・ホスト名・HTTPヘッダーによる高度なルーティングが可能 | Web アプリ・マイクロサービス・REST API |
| NLB Network Load Balancer |
レイヤー 4(TCP/UDP) | 超低レイテンシ・高スループット。静的 IP アドレスの付与が可能 | ゲームサーバー・IoT・低遅延が求められるシステム |
CP 試験では ALB と NLB の使い分け(L7 vs L4)を一言レベルで押さえておけば十分です。
Auto Scaling
Auto Scaling は EC2 インスタンスの数を需要に応じて自動的に増減させる仕組みです。あらかじめ最小・希望・最大のインスタンス数を設定しておき、CPU 使用率などのメトリクスに基づいてスケールアウト(台数増加)やスケールイン(台数削減)を行います。
スケールアップとスケールアウトの違い(頻出)
| 種類 | 内容 | 別名 | 例 |
|---|---|---|---|
| スケールアップ | 既存のインスタンスのスペックを上げる | 垂直スケーリング | t3.medium → t3.xlarge に変更 |
| スケールアウト | インスタンスの台数を増やす | 水平スケーリング | 2 台 → 5 台に増やす |
| スケールイン | インスタンスの台数を減らす | 水平スケーリング(縮退) | 5 台 → 2 台に減らす |
| スケールダウン | インスタンスのスペックを下げる | 垂直スケーリング(縮退) | t3.xlarge → t3.medium に変更 |
Auto Scaling が行うのはスケールアウト(台数を増やす)とスケールイン(台数を減らす)です。スケールアップ(スペック変更)は手動で行う必要があります。
Auto Scaling の恩恵
- コスト最適化: オフピーク時にインスタンスを削減して無駄なコストを削減する
- パフォーマンス維持: ピーク時に自動でインスタンスを追加して性能低下を防ぐ
- 耐障害性: 不健全なインスタンスを自動的に置き換える
ELB + Auto Scaling + マルチ AZ の定番パターン
CP 試験では「高可用性な構成を作るには?」という問いに対して、以下の組み合わせが模範解答です。
- ELB: トラフィックを複数 AZ のインスタンスに振り分ける。1 台が障害でもほかのインスタンスに自動で切り替わる
- Auto Scaling: 障害で落ちたインスタンスを自動的に補充。需要増加時に自動増設する
- マルチ AZ: 複数のアベイラビリティゾーンにインスタンスを分散配置し、AZ 単位の障害に耐える
この 3 要素を組み合わせることで、単一障害点(SPOF)のないシステムを構築できます。
関連サービスとの違い・使い分け
| キーワード・シナリオ | 対応するサービス・概念 |
|---|---|
| トラフィックを複数インスタンスに振り分けたい | ELB |
| 需要に応じて自動的にサーバーを増減したい | Auto Scaling |
| 1 台のサーバーのスペックを上げたい | スケールアップ(EC2 インスタンスタイプの変更) |
| HTTP ルーティングを柔軟に制御したい | ALB(Application Load Balancer) |
| 超低レイテンシの TCP 負荷分散が必要 | NLB(Network Load Balancer) |
| グローバルなトラフィック管理(DNS ベース) | Amazon Route 53 |
確認問題
付録:公式ドキュメント・Black Belt 動画
さらに深く学びたい方は、AWS公式の以下のリソースを参照してください(いずれも外部サイトが開きます)。