【AWS】Auto Scalingとは?EC2を自動で増減する仕組みを初心者向けに解説

  • URLをコピーしました!

前の記事では、 ELB(Elastic Load Balancing)を使って 複数のEC2インスタンスへ通信を 分散する仕組みを学びました。

ELBを利用すれば、 1台のEC2へアクセスが集中するのを防ぎ、 複数のEC2で処理を分担できます。

しかし、実際のWebサービスでは アクセス数が常に一定とは限りません。

TRAFFIC CHANGE
NORMAL 通常時
■■

アクセス:少ない

PEAK アクセス集中時
■■■■■■■■

アクセス:多い

アクセスが少ない時間帯に 大量のEC2を起動しておくのは無駄があります。

反対にアクセスが急増したとき、 EC2の台数が少なければ 処理能力が不足する可能性があります。

QUESTION アクセス量に合わせて
EC2の台数を自動的に増減できない?

そこで利用するのが、 Amazon EC2 Auto Scalingです。

☁ AWS INTERMEDIATE

この記事では、 EC2インスタンスの台数を自動的に調整する Auto Scalingの基本的な仕組みを学びます。

AWS中級講座を見る →
LESSON GOAL この記事のゴール

Auto Scalingによって EC2インスタンスが増減する仕組みを理解し、 Auto Scaling Group・最小キャパシティ・ 最大キャパシティ・希望するキャパシティ・ スケーリングポリシー の役割を説明できるようになることを目指します。

目次

Auto Scalingとは?

Amazon EC2 Auto Scalingは、 必要に応じてEC2インスタンスの数を 自動的に増減させるための仕組みです。

たとえばWebサービスへのアクセスが増加し、 EC2への負荷が高くなった場合を考えてみましょう。

BEFORE EC2 × 2
EC2 EC2
LOAD ↑ Scale Out
AFTER EC2 × 4
EC2 EC2 EC2 EC2

Auto Scalingを利用すると、 条件に応じて新しいEC2インスタンスを 自動的に起動できます。

反対にアクセスが減少した場合は、 不要になったEC2インスタンスを 自動的に減らすこともできます。

POINT Auto Scaling = 必要なEC2インスタンス数を 自動的に調整する仕組み

スケールアウトとスケールイン

Auto Scalingを理解するうえで、 まず覚えておきたい言葉があります。

スケールアウトスケールインです。

SCALE OUT スケールアウト
BEFORE

EC2 EC2

AFTER

EC2 EC2 EC2 EC2

EC2インスタンスを 増やす

SCALE IN スケールイン
BEFORE

EC2 EC2 EC2 EC2

AFTER

EC2 EC2

EC2インスタンスを 減らす

REMEMBER Scale Out → 台数を増やす
Scale In → 台数を減らす

Auto Scaling Groupとは?

Auto Scalingでは、 EC2インスタンスを Auto Scaling Group(ASG) という単位で管理します。

AUTO SCALING GROUP
ASG Web Server Group
INSTANCE EC2-01
INSTANCE EC2-02
INSTANCE EC2-03

Auto Scaling Groupでは、 「何台のEC2を維持するか」 という設定を行います。

その中心となるのが、 次の3つです。

最小・最大・希望するキャパシティ

MIN 最小キャパシティ
2

最低でも維持する EC2インスタンス数

DESIRED 希望するキャパシティ
3

現在維持したい EC2インスタンス数

MAX 最大キャパシティ
6

最大で起動できる EC2インスタンス数

たとえば、 次のように設定したとします。

AUTO SCALING GROUP
MIN 2
DESIRED 3
MAX 6

この場合、 通常は希望するキャパシティである 3台を維持します。

負荷が高くなった場合は 最大6台まで増やすことができ、 負荷が下がった場合でも 最小2台より少なくならないようにします。

CAPACITY MIN 2 ← DESIRED 3 → MAX 6

新しいEC2はどの設定で起動する?

Auto ScalingがEC2を増やすとき、 新しいEC2インスタンスを どのような設定で起動するのかを 決めておく必要があります。

そこで利用するのが、 起動テンプレート(Launch Template) です。

LAUNCH TEMPLATE EC2起動設定
  • AMI
  • インスタンスタイプ
  • Security Group
  • その他の起動設定
NEW INSTANCE EC2 自動起動

Auto Scaling Groupは、 起動テンプレートに定義された設定を使って 新しいEC2インスタンスを起動できます。

LAUNCH TEMPLATE Auto Scalingで起動する EC2の設定をあらかじめ定義しておく

いつEC2を増やすのか?

EC2を増減させるには、 「どのような状況になったら 台数を変更するのか」 を決める必要があります。

そのために利用するのが、 スケーリングポリシーです。

METRIC CPU使用率
80%
ACTION EC2を増やす SCALE OUT

たとえば、 CPU使用率などのメトリクスを利用して EC2の台数を調整できます。

EXAMPLE 負荷が高くなる スケーリングが必要と判断 EC2インスタンスを追加

ターゲット追跡スケーリングとは?

Auto Scalingで代表的な方法の1つが、 ターゲット追跡スケーリングです。

これは、 指定したメトリクスを 目標値付近に維持するように EC2の台数を調整する方法です。

TARGET TRACKING
TARGET CPU 50%
CPU HIGH 80% → EC2を増やす
CPU LOW 20% → EC2を減らす

たとえばCPU使用率の目標値を 50%に設定した場合、 負荷が高くなればEC2を増やし、 負荷が低くなればEC2を減らすことで、 目標値付近を維持するように動作します。

TARGET TRACKING 指定したメトリクスを 目標値付近に維持するよう EC2台数を自動調整する

ELBとAuto Scalingを組み合わせる

前の記事で学んだELBと Auto Scalingは、 一緒に利用されることが多いサービスです。

INTERNET Users
LOAD BALANCER ALB 通信を分散
AUTO SCALING GROUP
AZ-A EC2
AZ-B EC2
AUTO + EC2

アクセスが増えた場合、 Auto Scalingによって EC2インスタンスを追加できます。

そしてELBは、 Auto Scaling Group内の 利用可能なターゲットへ通信を分散します。

ELB 通信を分散する
AUTO SCALING EC2台数を調整する
IMPORTANT ELB → 通信を振り分ける
Auto Scaling → EC2の台数を調整する

Auto Scalingは可用性の向上にも役立つ

Auto Scalingは、 アクセス増加への対応だけに 利用するものではありません。

Auto Scaling Group内の EC2インスタンスが正常に動作しなくなった場合、 正常なインスタンス数を維持するために 新しいEC2を起動できます。

AUTO SCALING GROUP
EC2-01 EC2-02 × EC2-03
DESIRED CAPACITY
EC2-01 EC2-03 NEW EC2

このように、 必要なインスタンス数を維持する仕組みは システムの可用性を高めるうえでも重要です。

必要なときだけEC2を増やせる

アクセスのピークに合わせて 常に大量のEC2を起動しておくと、 利用していない時間帯にも EC2のコストが発生します。

FIXED CAPACITY 常に6台
EC2 EC2 EC2
EC2 EC2 EC2

アクセスが少なくても 多くのEC2を維持

AUTO SCALING 必要数を調整
EC2 EC2

必要に応じて 台数を増減

Auto Scalingを適切に利用することで、 必要な処理能力を確保しながら、 不要なリソースを減らす構成を 考えやすくなります。

Auto Scalingの流れを整理しよう

01 負荷が変化 アクセス増加
02 メトリクスを確認 CPU使用率など
03 Scaling 台数を調整
04 EC2起動 必要数を維持

あなたならどうスケーリングする?

ここまで学んだ内容を使って、 Auto Scalingの動きを考えてみましょう。

SCENARIO Auto Scaling Group
MIN 2
DESIRED 3
MAX 6

現在EC2は3台です。
アクセスが急増し、 スケーリングポリシーによって EC2を追加する必要があると判断されました。

どの動作が適切でしょうか?
どちらか選択してください

MIN・DESIRED・MAXの関係を考えてみましょう。

確認問題:Auto Scaling

QUESTION 01

Auto Scalingの主な役割として 正しいものはどれですか?

正解:B

Amazon EC2 Auto Scalingは、 必要に応じてEC2インスタンスの数を 自動的に増減させるために利用します。

QUESTION 02

EC2インスタンスの台数を 増やすことを何と呼びますか?

正解:A

インスタンスなどの台数を増やして 処理能力を高めることを スケールアウトと呼びます。

QUESTION 03

ELBとAuto Scalingの役割の組み合わせとして 正しいものはどれですか?

正解:C

ELBは複数のターゲットへ通信を分散し、 Auto Scalingは必要に応じて EC2インスタンスの台数を調整します。

YOUR SCORE 0 / 3

AWS中級最後の3問に挑戦してみましょう。

まとめ

01

Auto Scalingは EC2インスタンスの台数を 自動的に調整する仕組み

02

台数を増やすことを スケールアウト、 減らすことを スケールインと呼ぶ

03

EC2は Auto Scaling Group という単位で管理する

04

ASGでは 最小・最大・希望するキャパシティ を設定する

05

起動テンプレートに Auto Scalingで起動する EC2の設定を定義する

06

スケーリングポリシーによって 負荷などに応じた台数調整ができる

07

ELBと組み合わせることで 通信の分散とEC2台数の調整 を組み合わせられる

🎉 AWS INTERMEDIATE COMPLETE

AWS中級講座 修了!

ここまでで、 AWS中級講座はすべて終了です。

VPCによるネットワーク設計から、 EC2・S3・RDS・ELB・Auto Scalingまで、 AWSでシステムを構成するための 基本的なサービスを一通り学んできました。

AWS中級で身につけたこと

AWS中級では、 個々のサービス名を覚えるだけではなく、 「AWS上でシステムをどう構成するか」 という視点で学習してきました。

NETWORK VPC・ネットワーク

CIDR、サブネット、ルートテーブル、 IGW、NAT Gateway、 Security Group、NACL、 VPC Endpoint

COMPUTE Amazon EC2

AWS上で仮想サーバーを 構築・利用する基本

STORAGE Amazon S3

オブジェクトストレージを利用して データを保存する仕組み

DATABASE Amazon RDS

AWS上でリレーショナルデータベースを 利用する基本

AVAILABILITY ELB

複数のターゲットへ 通信を分散する仕組み

SCALING Auto Scaling

負荷などに応じて EC2台数を調整する仕組み

学んだサービスはすべてつながっている

AWS中級で学んできたサービスを組み合わせると、 AWS上で動作するWebシステムの 基本的な構成が見えてきます。

AWS CLOUD
INTERNET Users
LOAD BALANCER ALB
VPC
AZ-A EC2
AZ-B EC2
AUTO SCALING GROUP
DATABASE Amazon RDS
STORAGE Amazon S3

これまで個別に学習してきた VPC、EC2、RDS、ELB、Auto Scalingなどは、 実際のAWS環境では 互いに組み合わせて利用します。

ここまで理解できていれば、 AWSの基本的な構成を学ぶための 土台はできています。

ここから先はAWS上級へ

AWS中級では、 AWSでシステムを構築するうえで 特に重要となる基本サービスを中心に学びました。

しかしAWSには、 さらに多くのサービスや 設計パターンがあります。

NEXT LEVEL AWS ADVANCED
CONTAINER ECS / EKS
SERVERLESS Lambda
MONITORING CloudWatch
ARCHITECTURE 高可用・冗長化設計
SECURITY より高度なAWSセキュリティ
AUTOMATION IaC / 自動化

ここから先は、 単一サービスの使い方だけではなく、 可用性・セキュリティ・運用・コストなどを 考慮したAWS設計へ進んでいきます。

NEXT STEP

さらに実践的なAWSスキルへ

ここから先は、 ECS・EKSなどのコンテナ、 Lambdaによるサーバーレス、 CloudWatchを使った監視、 高可用・冗長化設計、 Security、 IaC・自動化など、 より実践的なAWS学習へ進む段階です。

上級学習コンテンツについては、 現在より実践的に学習できる形を準備しています。

AWS上級 準備中
※ 上級コンテンツは現在準備中です。
AWS INTERMEDIATE

AWS中級講座を振り返る

AWS中級の記事一覧へ戻って、 苦手な分野やもう一度確認したい レッスンを復習できます。

← AWS中級講座へ戻る
目次