こんにちは。 サニービュー事業部の小寺です。

みなさんは、Auto Scalingを使ったことはありますか?
今月、AWSがAmazon EC2 Auto Scaling が予測スケーリングをネイティブにサポートするようになりました。

https://aws.amazon.com/jp/about-aws/whats-new/2021/05/amazon-ec2-auto-scaling-introduces-predictive-scaling-native-scaling-policy/

■Auto Scallingとは

EC2 Auto Scallingについて、まずは簡単に説明します。

Amazon EC2 Auto Scaling は、アプリケーションの負荷を処理するために適切な数の Amazon EC2 インスタンスを利用できるようにします。
EC2インスタンスを自動で起動、終了して負荷分散や可用性向上のためによく使われる機能です。

ただ、適切な数?って・・イメージするのは難しいですよね。無駄なサーバを起動したくない、でも負荷に応じて必要な台数を稼働させておきたい、そんなときは、Auto Scaling を利用することで、希望するインスタンス台数で稼働することができます。

まず、Auto Scalingを使うためには、「Auto Scaling グループ(以下、ASG)」と呼ばれるEC2のまとまりを作ります。Auto Scalingでインスタンス数を設定するパラメータは3つ、Min Size(最小数)、Max Size(最大数)、Desired Capacityです。

ASGで、インスタンス数の最小サイズが 2、希望する容量が 4、最大サイズが 8 であるとします。スケーリングポリシーによって、指定した条件に基づいて、インスタンスの最小数と最大数の間でインスタンス数が調整されます。

以下がAuto Scalingの主な機能・役割です。
・起動するインスタンスの台数を設定した最小値(Min Size)以上に維持する
・設定した最大値(Max Size)以上のインスタンスは起動しない
・Desired Capacityの数量になるようにインスタンスを起動・終了する
Desired Capacity = 必要な台数
・起動台数をAZ間でバランシングする
・AZ障害時は他のAZでインスタンスを起動する

■Auto Scalingで起動するEC2インスタンス

どのようなインスタンスをAuto Scalingで起動するか決めておくことができます。この設定は通常、EC2インスタンスを起動するときの入力情報とほぼ同じです。

以下の項目を設定できます。
・AMI
・インスタンスタイプ
・セキュリティグループ
・IAMロール
・鍵ペアなど

■スケーリングの方法

スケーリングは4つのパターンがあります。

1)ASGサイズの維持
インスタンスに障害が発生したときに、自動的にサービスから切り離しします。インスタンスが正常でないことがわかった場合、そのインスタンスは終了され、新しいインスタンスが起動されます。

2)手動スケーリング
・Desired Capacityを手動で変更する
・ASGインスタンスを手動でアタッチ、デタッチする

利用シーンとしては、テストのため手動でインスタンス数を増やしたいとき等で
しょうか。

3)スケジューリングされたスケーリング
・定義したスケジュールに従い、自動的にスケーリングする

こちらは、1回のみのスケジュールもできますし、定期的なスケジュールを設定することもできます。

4)動的スケーリング
・スケーリングポリシーに従い、自動的にスケーリングされる

スケーリングポリシーで設定します。
・監視アラームとアクション(インスタンス追加と削除)を定義
・CloudWatchで監視をします。
 Amazon SQSキューメトリクス、平均CPU使用率、ELBレーテンシーなど

・スケーリングポリシータイプ
シンプルスケーリングポリシーとステップスケーリングポリシーの2つがあります。
シンプルスケーリングポリシー:平均CPU使用率が80%以上で2台追加
ステップスケーリングポリシー:平均CPU使用率60%以上で1台、80%以上でもう1台追加

■予測スケーリングとは

Auto Scalingは便利な機能ではありますが、メトリクスが変化したことをトリガーにしてインスタンス数を増減させるという仕組みをとっています。そのため、負荷が急に上がる場面やインスタンスの起動に数分かかるといった環境では、インスタンスの増減が間に合わないといったケースも発生します。
予測スケーリングは、負荷を予測することで、負荷に対して先回りしてインスタンス数を調整しておくことができるのです。

■今回のアップデートでのメリット

今まで、予測スケーリング(Predictive scaling policies)を利用できるのは、AWS Auto Scalingのみでした。
今回のアップデートから、通常のAmazon EC2 Auto Scaling でも予測スケーリングが利用できます。

■どのようなケースに使えばいい?

朝の始業時のスパイクなど、スリープ需要の変更のパターンが繰り返し発生するアプリケーションに適切です。つまり、決まったパターンで負荷がかかるアプリケーションです。
予測スケーリングでは、過去のパターンが学習され、予測される需要に先立ちインスタンスが開始するので、インスタンスのウォームアップ時間を取ることができます。

■対応リージョン

全てのPublicリージョンで利用することができます。

■まとめ

いかがでしたでしょうか。
予測の精度が気になりますよね。蓄積されたデータを元に必要なインスタンスを予測してくれるのはとても便利ですね。

SunnyCloudでは、AWSの利用料がお安く、ビジネスサポートも無料で利用できるAWSリセール(請求代行)サービスを提供しています。

▼「無料相談」受付中です。
https://www.sunnycloud.jp/contact-us/