ITの教科書検索
入門読了 約10分

ELBとAuto Scalingとは ― EC2の負荷分散と台数の自動調整

ELBは通信を複数のEC2に振り分け、Auto Scalingは台数を自動で増減します。ALB・NLB・GWLBの違い、ヘルスチェック、最小・希望・最大の台数の関係を整理します。

目次
  1. ELBとAuto Scalingとは
  2. ALB・NLB・GWLBの違い
  3. ターゲットグループのヘルスチェック
  4. Auto Scalingグループの最小・希望・最大
  5. ELBとAuto Scalingの連携
  6. 動かして確かめる:要求した台数と実際の台数
  7. 練習問題

ELBとAuto Scalingとは、EC2を複数台で動かすための負荷分散と台数調整

EC2を1台だけで動かしていると、アクセスが増えたときやサーバが止まったときに、サービスに影響が出ます。複数台に分けて動かし、台数を自動で増減させるために使うのが、ELBとAuto Scalingです。

ELB(Elastic Load Balancing)は、届いた通信を複数のEC2インスタンスなどに自動で振り分けるサービスです。AWS公式ドキュメントの説明では、登録したターゲットの状態を確認し、正常なターゲットだけに通信を送ります。こうして複数のターゲットに通信を分散します。Auto Scalingは、負荷の処理に必要な数のEC2インスタンスを確保するサービスです。正式名はAmazon EC2 Auto Scalingです。

振り分けの方式やヘルスチェックといった、負荷分散そのものの仕組みは、ロードバランサの記事で説明しています。

ALB・NLB・GWLBの違いは、どの層までを見て振り分けるか

AWSのELBには複数の種類があります。AWS公式ドキュメントは、現行の種類としてALB・NLB・GWLBの3つを挙げています。CLBは旧世代の種類で、現行の種類への移行が推奨されています。

ELBの種類と特徴(2026-10-17時点、AWS公式ドキュメント)
種類OSI参照モデルの層扱うプロトコル向いている用途
ALB(Application Load Balancer)L7(アプリケーション層)HTTP・HTTPSURLのパスやヘッダの内容で振り分け先を変えたいWebアプリケーション
NLB(Network Load Balancer)L4(トランスポート層)TCP・UDP・TLSなど大量の接続を低い遅延でさばく処理、ロードバランサに固定IPアドレスが必要な場合
GWLB(Gateway Load Balancer)L3(ネットワーク層)すべてのIPパケット(GENEVEでカプセル化)ファイアウォールなど仮想アプライアンスにトラフィックを通す場合
CLB(Classic Load Balancer)L4またはL7(旧世代)HTTP・HTTPS・TCP・SSL/TLS旧世代のため、現行の種類への移行が推奨されている

3つの種類は、L4とL7の違いの節で説明したOSI参照モデルの層のどこまでを見るかで分かれます。ALBはHTTPリクエストの中身まで読む代わりに、処理が重くなります。NLBはIPアドレスとポート番号しか見ない代わりに、1秒あたり数百万件という規模の要求を処理できます。GWLBはさらに下の第3層で動き、受け取ったIPパケットを丸ごと仮想アプライアンスへ転送します。仮想アプライアンスとは、ファイアウォールなどの機能をソフトウェアとして動かす仮想マシンです。ALBにはAWS WAFのWeb ACLを付けられます。仕組みはWAFとShieldの記事で説明しています。

利用者から届く1つのリクエストIPヘッダ宛先 203.0.113.50TCP/UDPヘッダ宛先ポート 443HTTPリクエスト(TLSで暗号化)GET /images/a.png Cookie: srv=BGWLB:L3で丸ごと転送NLB:IP・ポートで選ぶALB:復号してURL・Cookieで選ぶ
GWLBは第3層で動き、IPパケットを丸ごと仮想アプライアンスに転送します。NLBはIPヘッダとTCP/UDPヘッダまでを見て、IPアドレスとポート番号で振り分け先を決めます。ALBはTLSを復号してHTTPリクエストまで読み、URLやCookieの値でも振り分け先を変えられます。

ALB・NLB・GWLBは、ターゲットグループという単位で設定を管理します。ヘルスチェックの設定や振り分け先のEC2インスタンスを、ターゲットグループごとに決めます。GWLBは、IPパケットをGENEVEというプロトコルでカプセル化し、ポート6081で仮想アプライアンスに転送します。カプセル化とは、パケット全体を別のパケットの中に入れることです。ターゲットグループには、Amazon ECSの記事で説明するコンテナのタスクも登録できます。

ターゲットグループのヘルスチェックは、既定値が決まっている

ALBのターゲットグループは、登録したEC2インスタンスに定期的にヘルスチェックを送ります。ヘルスチェックの一般的な仕組みは、AWSでも同じです。確認する間隔や、異常と判定するまでの回数には、次のような既定値があります。

ALBのターゲットグループのヘルスチェック既定値(2026-10-17時点、AWS公式ドキュメント)
設定項目既定値(ターゲットの種類がinstance・ipの場合)
確認方法(プロトコル)HTTP
確認間隔30秒
応答を待つ時間5秒
正常と判定するまでの連続成功回数5回
異常と判定するまでの連続失敗回数2回

登録したターゲットは、最初のヘルスチェックに合格するまで「healthy」になりません。異常と判定されたターゲットには新しい通信を送りませんが、登録そのものは残ります。

Auto Scalingグループは、最小・希望・最大の3つの台数で動く

Auto Scalingグループとは、同じ設定で動かすEC2インスタンスのまとまりです。グループには、最小・希望・最大という3つの台数を設定します。

最小は、グループがこの台数を下回らないようにする値です。最大は、グループがこの台数を超えないようにする値です。希望(desired capacity)は実際に動かす台数で、Auto Scalingはこの台数を維持しようとします。

Auto Scalingグループには、複数のアベイラビリティゾーン(AZ)を指定できます。すると、台数が増減しても、インスタンスがAZ間で均等になるように分散します。AZの考え方自体は、リージョンとAZの記事で説明しています。

台数を自動で増減させる規則は、スケーリングポリシーで決めます。たとえば、CPU使用率などの指標が目標の値から外れたときに台数を調整する方式があります。指標にはCloudWatchのメトリクスを使い、判定にはアラームを使います。仕組みはCloudWatchの記事にまとめています。SQSのキューにたまったメッセージの数をもとに、台数を変える方法もあります。ポリシーの種類ごとの細かい計算方法は省略します。

ELBとAuto Scalingの連携は、登録と登録解除が自動で行われること

Auto ScalingグループにはELBを組み合わせられます。Auto Scalingが起動したインスタンスは、自動でターゲットグループに登録されます。Auto Scalingが終了を決めたインスタンスは、終了する前に自動でターゲットグループから登録解除されます。

スケールアウト(インスタンスを増やすとき)Auto Scalingグループインスタンスターゲットグループ起動自動で登録スケールイン(インスタンスを減らすとき)Auto Scalingグループインスタンスターゲットグループ終了を決定自動で登録解除
Auto Scalingが起動したインスタンスは、自動でターゲットグループに登録されます。Auto Scalingが終了を決めたインスタンスは、終了する前に自動でターゲットグループから登録解除されます。

この自動化で、台数が増えても減っても、ロードバランサ側の設定を手動で直す必要がありません。Auto Scalingが既定で使うのは、EC2のヘルスチェックの結果だけです。ELBのヘルスチェックを有効にすると、ELBが異常と判定したインスタンスも入れ替えるようになります。

Elastic Beanstalkを使うと、コードを渡すだけでELBとAuto Scalingグループをまとめて作れます。

動かして確かめる:要求した台数と、実際に起動する台数

スケーリングポリシーが「この台数にしたい」と要求しても、Auto Scalingグループの最小・最大の範囲は守られます。次の図は、最小2台・最大10台の例です。要求する台数を変えて、実際の台数を確かめられます。

この例のAuto Scalingグループ:最小 2 台・最大 10 台
要求された台数1
実際の台数2

要求は最小の2台を下回っています。Auto Scalingは最小を下回らないようにするため、実際は2台のままです。

要求が最小を下回れば、実際の台数は最小に合わせられます。要求が最大を超えれば、実際の台数は最大までしか増えません。範囲内の要求だけが、そのまま実際の台数になります。

参考にした資料

練習問題(全6問)

Q1Elastic Load Balancing(ELB)の説明として正しいものはどれ?
Q2ALBとNLBの違いとして正しいものはどれ?
Q3GWLB(Gateway Load Balancer)の用途として正しいものはどれ?
Q4Auto Scalingグループの「最小」の設定の説明として正しいものはどれ?
Q5ELBとAuto Scalingを組み合わせたときの連携として正しいものはどれ?
Q6ELBとAuto Scalingのそれぞれの目的として、正しいものはどれ?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

AWSの記事を続けて読む

AWS 全38本中5本目