Auto Scalingを調べて使ってみた。

2021.06.24

本日はAWSのAuto Scalingについて整理し、実際に使って確認してみましょう。 前にELB(Elastic Load Balancing)について説明しましたが、ELBはAuto Scalingと深く関連があるので、この部分についても一緒に見てみましょう。

アジェンダ

  1. Auto Scalingとは?
  2. ELB(Elastic Load Balancing)とAuto Scaling
  3. Auto Scalingを使ってみた
  4. まとめ

Auto Scalingとは?

Auto Scaling

決められた規則に従ってワークロードを自動で拡大·縮小できる技術で、クラウドが提供する弾力性によって作られ、ユーザーの要求を細かく反映できる技術です。

オートスケーリングを利用すると、処理要求量が多くなる時に合わせて、手動で新しいリソース追加を行わなくても良いです。 オートスケーリングは、新しいリソースを自動で追加します。また処理要求量が減るタイミングで該当リソースを減少させます。

Auto Scalingの長所

  • 動的スケーリング
    • オートスケーリングを使用すると、ユーザの要求条件に従ってリソースを動的にスケーリングできる。
    • スケールアップできるサーバーの数には制限がなく、必要な場合は数万台のサーバーもスケールアップもできる。
    • オートスケーリングで企業のアプリケーションに常に最適なCPUやメモリなどのリソースを提供できる。
  • 最上のユーザー経験
    • オートスケーリングを利用すると、リソースが最適に提供され、アプリケーションは常に最適な状態で実行されるため、アプリケーションを使うユーザに最上のユーザ経験を提供できる。
    • 様々なオートスケーリングルールを追加し、ユーザーに良い環境のアプリケーションを提供できる。
  • ヘルスチェック
    • オートスケーリングを利用すると、EC2インスタンスのヘルスチェック状態をモニタリングできる。
    • オートスケーリングを利用してヘルスチェックを行う過程で特定のインスタンスの問題が発見された時、自動的に他のインスタンスに変更するので、サーバー管理者の業務負担を減らせる。
  • ターゲット·トラッキング
    • 特定のターゲットに対してオートスケーリングを行い、設定したターゲットに合わせてEC2インスタンスの数を調整する。
      • 例)オートスケーリングターゲットとしてアプリケーションサーバのCPU使用率を65%に設定すると、オートスケーリングはCPU使用率65%に合わせてEC2インスタンス数を自動に調整する。
    • ターゲット:オートスケーリングを行うための指標として活用されること

Auto Scaling Groups

オートスケーリンググループは、EC2インスタンスの開始から削除まで全ての動作に対する規則とポリシーを含んでいます。
オートスケーリンググループを定義するためには、インスタンスタイプなどの詳細情報を設定する必要があり、スケーリング計画およびスケーリングポリシーを選択しなければならないです。

オートスケーリンググループを生成するときは、常に実行しなければならない最小限のインスタンス数と追加する最大インスタンス数を定義しなければならないです。
一つのインスタンスグループでは、同一のインスタンスタイプを使用することを勧めており、インスタンスが同一の場合、ワークロード分散の効果をより簡単に理解できます。

Auto Scalingのポリシー

  • ターゲット追跡スケーリング
    • 定義された性能指標を利用したり、カスタム性能指標を作成してターゲット値に設定したりする。
      • 例)性能指標はCPU使用率、ターゲット値は50%に設定すると、オートスケーリングが自動的にEC2インスタンス数を調節し、CPU使用率が40%くらいに維持する。
    • CloudWatchの警告を生成·モニタリングして警告が発生すると、オートスケーリングポリシーを実行させてインスタンス数を自動的に増加·減少させる。
  • ステップスケーリング
    • 簡易スケーリングポリシーより細かい規則を追加したいときに使う。
      • 例)CPU使用率が50%~60%の場合、2つのインスタンスを追加し、60%を超えると4つのインスタンスを追加する。
  • 簡易スケーリング
    • CPU使用率やネットワーク流入、流出比率などの警告指標でインスタンスをスケールアップ、ダウンする。
    • ポリシーを作成する際には、二つのポリシーが必要になる。
      • グループのサイズを増加させるスケールアップポリシー
      • グループのサイズを減少させるスケールダウンポリシー
    • スケーリングアクティビティが開始されると、ポリシーはスケーリングアクティビティまたはヘルスチェック交換が完了し、クールダウン期間が終了するまで待つ必要がある。

ELB(Elastic Load Balancing)とAuto Scaling

ELB(Elastic Load Balancing)はトラフィックをEC2などの複数のターゲットに自動的に分散するサービスのことです。 詳しい説明はELBについて書いたブログがあるのでそこで確認してください。 ELB(Elastic Load Balancing)を調べて使ってみた。

Auto ScalingとELB(Elastic Load Balancing)を一緒に利用すると、多数のEC2サーバの処理能力を適切に分配し、ワークロードが高くなることに合わせてサーバの処理性能を高め、ワークロードが低くなることに合わせてサーバの処理性能を低下させることができます。

Auto Scalingを使ってみた

EC2を構築及びAMI 作成

オートスケーリングを実際に使うためにはEC2が必要なので、EC2を構築とEC2のAMI を作成する必要があります。 ここではオートスケーリングするのを重心的にするので、EC2を作る手順は省略します。

EC2を構築完了しました。

AMI 作成しました。

EC2 起動テンプレート作成

Auto ScalingをするためにまずEC2 起動テンプレートを作成しましょう。

起動テンプレート名を入力し、Auto Scalingガイダンスをチェックします。 また、Auto Scalingで追加するEC2のAMIを設定するため、前に作ったEC2のAMIを選択します。

Auto Scalingで追加するEC2のインスタンスタイプも選択します。

EC2 起動テンプレートを作成しました。

Auto Scalingを作成

Auto Scalingのグループを作成しましょう。

グループ名を入力し、グループで使う起動テンプレートを選択します。 ここでは先に作った起動テンプレート(AutoScalingTem)を選択します。

その後、Auto Scalingで作るEC2を生成するネットワーク及びサブネットを選択します。

  • 希望する容量:EC2が始まる時に必要な容量
  • 最小キャパシティ:Auto Scalingの最小サイズ
  • 最大キャパシティ:Auto Scalingの最大サイズ

この三つも設定します。

以外にも設定できること(ELB設定など)がありますが、ここでは使わないです。 ここまで終わったらAuto Scalingの作成は完了です。

Auto Scalingの起動確認

最後にAuto Scalingがよく動くかを確認してみましょう。

このようにAutoScalingーserverというEC2が起動されてます。 ここでAutoScalingーserverを中止すればAuto Scalingが起動を止まらないようにもう新しいEC2を起動すると思います。

実際に中止をしてみたら、新しいEC2が自動に作られました。 これでAuto Scalingが成功的に動いているのを確認できます。

まとめ

今日はAuto Scalingについて整理して、実行してみました。 前に勉強したELBと関連あるサービスなどで理解しやすかったです。 また、新しいEC2が自動に起動されるのはすごいと思いました。