前の記事では、 ELB(Elastic Load Balancing)を使って 複数のEC2インスタンスへ通信を 分散する仕組みを学びました。
ELBを利用すれば、 1台のEC2へアクセスが集中するのを防ぎ、 複数のEC2で処理を分担できます。
しかし、実際のWebサービスでは アクセス数が常に一定とは限りません。
アクセス:少ない
アクセス:多い
アクセスが少ない時間帯に 大量のEC2を起動しておくのは無駄があります。
反対にアクセスが急増したとき、 EC2の台数が少なければ 処理能力が不足する可能性があります。
EC2の台数を自動的に増減できない?
そこで利用するのが、 Amazon EC2 Auto Scalingです。
Auto Scalingによって EC2インスタンスが増減する仕組みを理解し、 Auto Scaling Group・最小キャパシティ・ 最大キャパシティ・希望するキャパシティ・ スケーリングポリシー の役割を説明できるようになることを目指します。
Auto Scalingとは?
Amazon EC2 Auto Scalingは、 必要に応じてEC2インスタンスの数を 自動的に増減させるための仕組みです。
たとえばWebサービスへのアクセスが増加し、 EC2への負荷が高くなった場合を考えてみましょう。
Auto Scalingを利用すると、 条件に応じて新しいEC2インスタンスを 自動的に起動できます。
反対にアクセスが減少した場合は、 不要になったEC2インスタンスを 自動的に減らすこともできます。
スケールアウトとスケールイン
Auto Scalingを理解するうえで、 まず覚えておきたい言葉があります。
スケールアウトと スケールインです。
EC2 EC2
↓ AFTEREC2 EC2 EC2 EC2
EC2インスタンスを 増やす
EC2 EC2 EC2 EC2
↓ AFTEREC2 EC2
EC2インスタンスを 減らす
Scale In → 台数を減らす
Auto Scaling Groupとは?
Auto Scalingでは、 EC2インスタンスを Auto Scaling Group(ASG) という単位で管理します。
Auto Scaling Groupでは、 「何台のEC2を維持するか」 という設定を行います。
その中心となるのが、 次の3つです。
最小・最大・希望するキャパシティ
最低でも維持する EC2インスタンス数
現在維持したい EC2インスタンス数
最大で起動できる EC2インスタンス数
たとえば、 次のように設定したとします。
この場合、 通常は希望するキャパシティである 3台を維持します。
負荷が高くなった場合は 最大6台まで増やすことができ、 負荷が下がった場合でも 最小2台より少なくならないようにします。
新しいEC2はどの設定で起動する?
Auto ScalingがEC2を増やすとき、 新しいEC2インスタンスを どのような設定で起動するのかを 決めておく必要があります。
そこで利用するのが、 起動テンプレート(Launch Template) です。
- AMI
- インスタンスタイプ
- Security Group
- その他の起動設定
Auto Scaling Groupは、 起動テンプレートに定義された設定を使って 新しいEC2インスタンスを起動できます。
いつEC2を増やすのか?
EC2を増減させるには、 「どのような状況になったら 台数を変更するのか」 を決める必要があります。
そのために利用するのが、 スケーリングポリシーです。
たとえば、 CPU使用率などのメトリクスを利用して EC2の台数を調整できます。
ターゲット追跡スケーリングとは?
Auto Scalingで代表的な方法の1つが、 ターゲット追跡スケーリングです。
これは、 指定したメトリクスを 目標値付近に維持するように EC2の台数を調整する方法です。
たとえばCPU使用率の目標値を 50%に設定した場合、 負荷が高くなればEC2を増やし、 負荷が低くなればEC2を減らすことで、 目標値付近を維持するように動作します。
ELBとAuto Scalingを組み合わせる
前の記事で学んだELBと Auto Scalingは、 一緒に利用されることが多いサービスです。
アクセスが増えた場合、 Auto Scalingによって EC2インスタンスを追加できます。
そしてELBは、 Auto Scaling Group内の 利用可能なターゲットへ通信を分散します。
Auto Scaling → EC2の台数を調整する
Auto Scalingは可用性の向上にも役立つ
Auto Scalingは、 アクセス増加への対応だけに 利用するものではありません。
Auto Scaling Group内の EC2インスタンスが正常に動作しなくなった場合、 正常なインスタンス数を維持するために 新しいEC2を起動できます。
このように、 必要なインスタンス数を維持する仕組みは システムの可用性を高めるうえでも重要です。
必要なときだけEC2を増やせる
アクセスのピークに合わせて 常に大量のEC2を起動しておくと、 利用していない時間帯にも EC2のコストが発生します。
EC2 EC2 EC2
アクセスが少なくても 多くのEC2を維持
必要に応じて 台数を増減
Auto Scalingを適切に利用することで、 必要な処理能力を確保しながら、 不要なリソースを減らす構成を 考えやすくなります。
Auto Scalingの流れを整理しよう
あなたならどうスケーリングする?
ここまで学んだ内容を使って、 Auto Scalingの動きを考えてみましょう。
現在EC2は3台です。
アクセスが急増し、
スケーリングポリシーによって
EC2を追加する必要があると判断されました。
MIN・DESIRED・MAXの関係を考えてみましょう。
確認問題:Auto Scaling
Auto Scalingの主な役割として 正しいものはどれですか?
Amazon EC2 Auto Scalingは、 必要に応じてEC2インスタンスの数を 自動的に増減させるために利用します。
EC2インスタンスの台数を 増やすことを何と呼びますか?
インスタンスなどの台数を増やして 処理能力を高めることを スケールアウトと呼びます。
ELBとAuto Scalingの役割の組み合わせとして 正しいものはどれですか?
ELBは複数のターゲットへ通信を分散し、 Auto Scalingは必要に応じて EC2インスタンスの台数を調整します。
AWS中級最後の3問に挑戦してみましょう。
まとめ
Auto Scalingは EC2インスタンスの台数を 自動的に調整する仕組み
台数を増やすことを スケールアウト、 減らすことを スケールインと呼ぶ
EC2は Auto Scaling Group という単位で管理する
ASGでは 最小・最大・希望するキャパシティ を設定する
起動テンプレートに Auto Scalingで起動する EC2の設定を定義する
スケーリングポリシーによって 負荷などに応じた台数調整ができる
ELBと組み合わせることで 通信の分散とEC2台数の調整 を組み合わせられる
AWS中級講座 修了!
ここまでで、 AWS中級講座はすべて終了です。
VPCによるネットワーク設計から、 EC2・S3・RDS・ELB・Auto Scalingまで、 AWSでシステムを構成するための 基本的なサービスを一通り学んできました。
AWS中級で身につけたこと
AWS中級では、 個々のサービス名を覚えるだけではなく、 「AWS上でシステムをどう構成するか」 という視点で学習してきました。
CIDR、サブネット、ルートテーブル、 IGW、NAT Gateway、 Security Group、NACL、 VPC Endpoint
AWS上で仮想サーバーを 構築・利用する基本
オブジェクトストレージを利用して データを保存する仕組み
AWS上でリレーショナルデータベースを 利用する基本
複数のターゲットへ 通信を分散する仕組み
負荷などに応じて EC2台数を調整する仕組み
学んだサービスはすべてつながっている
AWS中級で学んできたサービスを組み合わせると、 AWS上で動作するWebシステムの 基本的な構成が見えてきます。
これまで個別に学習してきた VPC、EC2、RDS、ELB、Auto Scalingなどは、 実際のAWS環境では 互いに組み合わせて利用します。
ここまで理解できていれば、 AWSの基本的な構成を学ぶための 土台はできています。
ここから先はAWS上級へ
AWS中級では、 AWSでシステムを構築するうえで 特に重要となる基本サービスを中心に学びました。
しかしAWSには、 さらに多くのサービスや 設計パターンがあります。
ここから先は、 単一サービスの使い方だけではなく、 可用性・セキュリティ・運用・コストなどを 考慮したAWS設計へ進んでいきます。
さらに実践的なAWSスキルへ
ここから先は、 ECS・EKSなどのコンテナ、 Lambdaによるサーバーレス、 CloudWatchを使った監視、 高可用・冗長化設計、 Security、 IaC・自動化など、 より実践的なAWS学習へ進む段階です。
上級学習コンテンツについては、 現在より実践的に学習できる形を準備しています。
※ 上級コンテンツは現在準備中です。
