InfraAcademy

InfraAcademy Blog

ELBとAuto Scalingの違いは?CLF-C02で「振り分ける」と「台数を変える」を取り違えないための整理

著者: ryu | #aws #ELB #資格
Linuxをブラウザで試してみる

Linux・ネットワーク・AWSを、環境構築なしで実践学習できます

この記事を共有

こんにちは、インフラエンジニアのryuです。

この記事は、AWS認定クラウドプラクティショナー(CLF-C02)の勉強をしていて、ELBとAuto Scalingの問題で迷ってしまう人に向けて書いています。

どちらもEC2と一緒に出てくるサービスで、説明文にも「負荷」「可用性」「スケール」のような似た言葉が並びます。そのため、問題文を読んでもどちらを選べばいいのか決めきれない、ということが起きやすいです。

結論から言うと、ELBは届いたリクエストを複数のサーバーに振り分けるサービスで、Auto Scalingはサーバーの台数を増やしたり減らしたりするサービスです。

この記事では、この違いを表で整理してから、2つを組み合わせたときの動き方と、問題文の読み方を説明します。最後に確認問題も用意しました。

EC2そのものが分からない人は、先にEC2とは?の記事を読んでおくと、この記事の内容が入りやすくなります。CLF-C02全体の勉強の進め方は、CLF-C02の勉強方法の記事にまとめています。

CLF-C02でELBとAuto Scalingはどう問われる?

まずは試験の範囲を確認しておきます。CLF-C02は4つの分野に分かれていて、配点はクラウドのコンセプトが24%、セキュリティとコンプライアンスが30%、クラウドテクノロジーとサービスが34%、請求・料金・サポートが12%です。

ELBとAuto Scalingは、3つ目の「クラウドテクノロジーとサービス」の分野に入ります。試験ガイドでは、コンピューティングサービスを見分けるタスクの中に、次の2つが書かれています。

試験ガイドの内容 この記事でいうと
Auto Scalingが伸縮性(elasticity)を提供することを理解する 需要に合わせて台数を増減させるのがAuto Scaling
ロードバランサーの目的を理解する 複数のサーバーにリクエストを振り分けるのがELB

CLF-C02では、設定の手順やコマンドまでは問われません。問われるのは、ある場面でどのサービスを使うかを選べるかどうかです。

だからこそ、2つのサービスが何を担当しているのかを、一言で言えるようにしておくことが大切です。

ELBとAuto Scalingの違いとは?

ここで2つのサービスの違いを表にまとめます。まずはこの表を覚えてしまうのが近道です。

比べるところ ELB(Elastic Load Balancing) Auto Scaling(Amazon EC2 Auto Scaling)
何をするか 届いたリクエストを複数のターゲットに振り分ける EC2インスタンスの台数を増やしたり減らしたりする
解決する問題 1台に負荷が集中する、1台が止まるとサービスが止まる アクセスの増減に台数が追いつかない、使わない台数の料金がかかる
見ているもの ターゲットが正常かどうか(ヘルスチェック) 決めた台数を保てているか、負荷の指標がどうなっているか
試験で結びつく言葉 負荷分散、振り分け、高可用性 伸縮性、需要に合わせて増減、台数の自動調整
料金 利用した時間と処理量に応じて料金がかかる Auto Scaling自体に追加料金はない(起動したEC2などには料金がかかる)

Auto Scalingの料金ページには、追加料金はかからず、EC2やCloudWatchなど実際に使ったリソースの料金だけがかかると書かれています。一方、ELBはロードバランサーが動いている時間と処理量に対して料金がかかります。

表のとおり、ELBは振り分け、Auto Scalingは台数の調整です。この一言さえ言えれば、多くの問題は選択肢を2つまで絞れます。

ELBの役割とロードバランサーの種類

ELBは、アプリケーションへのトラフィックを、EC2インスタンス・コンテナ・IPアドレスなどのターゲットに自動で振り分けるサービスです。1つのアベイラビリティーゾーン(AZ)だけでなく、複数のAZにまたがって振り分けられます。

ELBは定期的にターゲットへヘルスチェックを行い、正常なターゲットにだけリクエストを送ります。そのため、1台のサーバーが止まっても、残りのサーバーでサービスを続けられます。

ELBにはいくつかの種類があります。CLF-C02では細かい機能までは問われにくいですが、名前と大まかな違いは知っておくと安心です。

種類 動作する層 主に扱うもの
Application Load Balancer(ALB) レイヤー7(アプリケーション層) HTTP・HTTPS
Network Load Balancer(NLB) レイヤー4(トランスポート層) TCP・TLS・UDPなど
Gateway Load Balancer(GWLB) レイヤー3(ネットワーク層) ファイアウォールなどの仮想アプライアンスへの振り分け
Classic Load Balancer(CLB) 前の世代のロードバランサー 新しく作る構成では ALB や NLB を使う

Webサイトのように、URLのパスによって振り分け先を変えたい場合はALB、TCPやUDPの通信を高速にさばきたい場合はNLB、と覚えておけば十分です。

AZの考え方があいまいな人は、リージョン・AZ・エッジロケーションの違いの記事を先に見ておくと、ELBが複数のAZに振り分ける意味が分かりやすくなります。

Auto Scalingの役割と3つの台数

Auto Scalingは、EC2インスタンスをAuto Scalingグループという単位でまとめて、その台数を管理するサービスです。グループには、最小・希望・最大の3つの台数を設定します。

設定 意味
最小(minimum) どれだけ負荷が下がっても、この台数より少なくしない
希望(desired) 今この台数で動かしたい、という目標の台数
最大(maximum) どれだけ負荷が上がっても、この台数より多くしない

たとえば最小2・希望2・最大6にしておけば、普段は2台で動き、アクセスが増えたときは最大6台まで増え、落ち着いたら2台に戻ります。

台数を変えるきっかけには、CPU使用率などの指標を目標値に近づけるように増減させる方法や、決まった時刻に台数を変える方法があります。指標の取得にはCloudWatchが使われます。CloudWatchについてはCloudWatchとCloudTrailの違いの記事で説明しています。

また、Auto Scalingは異常になったインスタンスを終了して、新しいインスタンスに入れ替えることもできます。つまり、台数を増減させるだけでなく、決めた台数を保つ役割もあります。

ELBとAuto Scalingを組み合わせるとどうなる?

実際の構成では、ELBとAuto Scalingは一緒に使われることがほとんどです。2つを組み合わせると、次のような流れになります。

利用者
  │
  ▼
ELB(ALB)          ← リクエストを正常なインスタンスに振り分ける
  │
  ├─ EC2(AZ-a)    ┐
  ├─ EC2(AZ-c)    ├ Auto Scalingグループ(最小2・希望2・最大6)
  └─ EC2(増えた分) ┘ ← 負荷に応じて台数を増減する

Auto ScalingグループにはELBのターゲットグループを関連付けられます。そうすると、Auto Scalingで増えたインスタンスは自動でELBの振り分け先に加わり、減らしたインスタンスは振り分け先から外れます。

さらに、Auto ScalingのヘルスチェックにELBのヘルスチェックを使う設定にすると、ELBが異常と判断したインスタンスをAuto Scalingが入れ替えてくれます。

この組み合わせで、それぞれのサービスの担当がはっきり分かれます。

起きたこと 対応するサービス 何が起きるか
アクセスが急に増えた Auto Scaling インスタンスを増やす
増えたインスタンスに通信を流したい ELB 新しいインスタンスにも振り分ける
1台が応答しなくなった ELB その1台への振り分けを止める
止まった1台の代わりが必要 Auto Scaling 新しいインスタンスに入れ替える

試験でも、高可用性とスケーラビリティの両方を満たす構成として、この組み合わせを選ばせる問題が考えられます。どちらか一方だけでは足りない、という点を押さえておきましょう。

問題文はどこを見て選べばいい?

CLF-C02の問題では、サービス名ではなく、やりたいことが文章で書かれています。どちらを選ぶかは、問題文の中の言葉で判断します。

問題文に出てくる言葉 選ぶサービス
複数のインスタンスにトラフィックを分散したい ELB
1台が故障しても、正常なインスタンスだけに通信を送りたい ELB
需要の変化に合わせて、インスタンスの数を自動で調整したい Auto Scaling
夜間や休日はインスタンスを減らして、コストを抑えたい Auto Scaling
アクセスが増えても対応でき、1台が止まってもサービスを続けたい ELBとAuto Scalingの組み合わせ

ポイントは、主語が通信なのか、インスタンスの数なのかを見ることです。通信をどこへ流すかの話ならELB、何台で動かすかの話ならAuto Scalingです。

ELBとAuto Scalingの確認問題

ここからはオリジナルの確認問題です。正解と解説は、それぞれの問題の下の引用ブロックにまとめています。

問題1

あるWebサイトでは、アクセスが多い時間帯にEC2インスタンスの処理が追いつかなくなります。需要に合わせてインスタンスの数を自動で増減させたいとき、最も適したサービスはどれですか。

  • A. Elastic Load Balancing
  • B. Amazon EC2 Auto Scaling
  • C. AWS CloudTrail
  • D. Amazon S3

正解:B インスタンスの数を需要に合わせて増減させるのはAuto Scalingです。ELBはリクエストを振り分けるサービスで、台数そのものは変えません。

問題2

複数のアベイラビリティーゾーンにあるEC2インスタンスへ、届いたリクエストを分散させたいです。最も適したサービスはどれですか。

  • A. Elastic Load Balancing
  • B. Amazon EC2 Auto Scaling
  • C. Amazon CloudWatch
  • D. AWS IAM

正解:A リクエストを複数のターゲットに分散させるのはELBです。ELBは複数のAZにまたがって振り分けられ、ヘルスチェックで正常なターゲットにだけリクエストを送ります。

問題3

Auto Scalingグループを最小2・希望3・最大5で設定しました。負荷が下がったとき、インスタンスは最も少なくて何台になりますか。

  • A. 0台
  • B. 2台
  • C. 3台
  • D. 5台

正解:B 最小の台数は、負荷が下がってもそれより少なくしない台数です。この設定では2台より少なくなることはありません。

問題4

Amazon EC2 Auto Scalingの料金について、正しい説明はどれですか。

  • A. Auto Scalingグループ1つごとに月額料金がかかる
  • B. Auto Scaling自体に追加料金はなく、起動したEC2インスタンスなどの料金がかかる
  • C. Auto Scalingを使うとEC2インスタンスの料金が無料になる
  • D. 増やしたインスタンスの台数に応じて、Auto Scalingの手数料がかかる

正解:B Auto Scalingの料金ページには、追加料金はなく、EC2やCloudWatchなど実際に使ったリソースの料金がかかると書かれています。

今日やる練習とInfraAcademyで続ける方法

今日の練習として、次の3つをやってみてください。どれも紙とペンだけでできます。

  1. ELBとAuto Scalingの役割を、それぞれ一言で書き出す(振り分ける/台数を変える)
  2. この記事の組み合わせの表を見ずに、アクセス増加と1台の故障のときに、どちらのサービスが何をするかを書く
  3. 最小1・希望2・最大4のグループで、負荷が上がったときと下がったときの台数の範囲を書く

自分のAWSアカウントでELBを作ってみたい人は、ELBの作成方法の記事に手順があります。ただし、ELBは動かしている時間に応じて料金がかかります。作る前にAWS公式の料金ページと無料利用枠の条件を確認し、練習が終わったらロードバランサーとEC2インスタンスを必ず削除してください。

InfraAcademy のAWSの講座では、講座の中のシミュレーターでAWSの操作を練習できるので、料金を気にせずに手を動かせます。AWSの学習の順番はAWSのロードマップで確認できます。

問題演習を続けたい人は、トップページのInfraAcademy の資格模擬問題から「AWS認定 クラウドプラクティショナー模擬試験150問」を解けます。クラウドテクノロジーとサービスの分野で間違えた問題があれば、この記事の問題文の読み方の表に戻って、通信の話なのか台数の話なのかを確認してみてください。

まとめ

ELBとAuto Scalingの違いで、押さえておきたいところを振り返ります。

  • ELBは、届いたリクエストを複数のターゲットに振り分けるサービス
  • Auto Scalingは、EC2インスタンスの台数を需要に合わせて増減させるサービス
  • ELBはヘルスチェックで正常なターゲットにだけ振り分ける
  • Auto Scalingは最小・希望・最大の台数で管理し、異常なインスタンスを入れ替える
  • ALBはレイヤー7(HTTP・HTTPS)、NLBはレイヤー4(TCP・UDPなど)
  • 2つを組み合わせると、負荷の増加と1台の故障の両方に対応できる

問題文の主語が通信ならELB、インスタンスの数ならAuto Scalingと覚えておけば、迷う場面はかなり減ります。

1つずつ役割を言葉で説明できるようにしておけば、似たサービスが並ぶ問題でも落ち着いて選べます。合格に向けて、一緒に進んでいきましょう。

参考

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

株式会社InfraAcademy 代表 / エンジニア

大手メーカーでインフラエンジニアとして勤務した後、ベンチャー企業・スタートアップでフルスタックエンジニアを経験。その後、起業し学習サービス「InfraAcademy」を運営しています。
保有資格:ネットワークスペシャリストなど 運営会社:株式会社InfraAcademy

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る