Amazon EC2 Auto Scaling 入門

Amazon EC2 Auto Scaling ってどんな機能?

耐障害性の向上のため、または可用性の向上のために、予め設定した範囲の中でEC2 インスタンスの数を増減させることができるサービス。

例えば以下のような使い方ができる。

なお、 AWS はアプリケーションの Auto Scaling (AWS Auto Scaling)も可能だが、それは本記事の EC2 Auto Scaling とは異なるものになる。

Amazon EC2 Auto Scaling を構成する要素

Amazon EC2 Auto Scaling は以下の要素で構成される。

  • グループ
  • 設定テンプレート
  • スケーリングのオプション

グループ

複数の EC2 インスタンスを論理的に1つの集まりとして管理する。
グループには EC2 インスタンスの最小数、最大数、および希望する数を指定する。

  • 最小数
    • グループの EC2 インスタンス数はこのサイズよりも小さくなることはない
  • 最大数
    • グループの EC2 インスタンス数はこのサイズよりも大きくなることはない
  • 希望数
    • グループの EC2 インスタンス数は通常この数だけ起動している
    • 今時点で必要な台数

グループ内のインスタンスに対して定期的にヘルスチェックを行い、異常のある EC2 インスタンスは終了して新たに起動する別の EC2 インスタンスと置き換えられる。
グループ内でオンデマンドインスタンスリザーブインスタンス、スポットインスタンスを併用することが可能。
インスタンスタイプは複数指定することが可能。インスタンスタイプに選択の優先度を設定して制御する。

起動テンプレート

起動するインスタンスの設定情報をテンプレートとして保存する。
再利用、共有が可能。
テンプレートはバージョン管理される。

設定情報は以下のとおり。

起動設定との違いとして、起動テンプレートは複数のバージョンのテンプレートを使用することができる

スケーリングのオプション

Amazon EC2 Auto Scaling グループをスケーリングする方法のこと。以下がある。

  • 現在のインスタンスレベルの常時維持
  • 手動スケーリング
  • スケジュールに基づくスケーリング
  • 要求に基づくスケーリング (動的スケーリング)

現在のインスタンスレベルの常時維持

ユースケース: Auto Healing

実行中のインスタンスを指定した数は常に維持するようにする。 Auto Scaling グループ内で実行中のインスタンスで定期的なヘルスチェックを実行し、インスタンスに異常があると判断すると、そのインスタンスを終了して新しいインスタンスを起動する。

  • 最大値 : 最小値=1 : 1 の場合
    常に1台を起動し、異常があれば自動で1台起動し直す
  • 最大値 : 最小値=2 : N の場合
    常に2台以上を起動。2台の片側に異常があってももう1台で維持する。

手動スケーリング

Auto Scaling グループの最大値、最小値、または希望数の変更のみを指定し、Amazon EC2 Auto Scaling が、更新された容量を維持するためにインスタンスを作成または終了するプロセスを管理する。 希望数はグループの最大値と同じかそれ以下である必要があり、希望数が最大値よりも大きい場合は最大値を更新する必要がある。

スケジュールに基づくスケーリング

インスタンスの数を増減しなければならない状況が予測でき、日付と時刻に基づいて自動的に実行されるスケーリングアクション。

  • スケジュールされたアクションの実行順序は、同じグループ内で実行される場合は維持する。複数のグループ間で実行される場合は必ずしも維持しない
  • 1 つの Auto Scaling グループあたり最大 125 のスケジュールされたアクションを作成できる
  • アクションのスケジュールを重ねることはできない。他のスケーリングアクティビティが既にスケジュールされているときにアクティビティをスケジュールしようとすると、呼び出しは拒否され、競合を知らせるエラーメッセージが表示される
  • クールダウン期間はサポートしない。

要求に基づくスケーリング (動的スケーリング)

以下の2つのポリシーがある。

  • Target tracking scaling (ターゲットの追跡スケーリングポリシー)
  • Step scaling
Target tracking scaling

需要の増減に応じてスケールする方法を定義する。 たとえば、平均 CPU 使用率が 15 分間にわたって 90% を超えると EC2 インスタンス群の拡大する等のポリシーを作成する。

Step scaling

ポリシーで指定したスケーリング調整値を使用して Auto Scaling グループの現在の容量が変更される。
メトリクスに下限と上限の閾値を設定し、その閾値を超えた割合に応じて増減させる。 スケーリング調整では、グループの容量が最大グループサイズより大きい容量にも、最小グループサイズよりも小さい容量にも変更されることはない。

スケールイン時のインスタンス削除制御

デフォルトの終了ポリシー(順序)は以下のとおり。

  1. インスタンスが最も多いAZのインスタンスを選択
  2. 候補となるインスタンスが複数ある場合、最も古い起動設定またはテンプレートを使用しているインスタンスを選択
  3. インスタンスが同じ起動設定から起動されている場合、Auto Scaling グループは次の課金時間に最も近いインスタンスを選択して終了

デフォルトの終了ポリシーはほとんどの状況に対応しているが、カスタマイズされたポリシーに置き換えることも可能。 カスタマイズしたポリシーへの置き換えは、起動するインスタンスが不均等なAZのインスタンスに適用する。均等であればすべてのAZに適用する。