AWS

AWS|Auto Scalingについて

Auto Scalingの概要

  • Auto Scalingを使用すると、どの時点でEC2インスタンスがいくつ必要かを予測する必要がなくなる。
  • Auto ScalingによってEC2インスタンスを必要なときに自動で増減できる。
  • Auto Scalingのメリットは、高可用性、耐障害性、コスト効率化。

垂直スケーリングと水平スケーリング

  • Auto Scalingのように数の増減でスケーリングすることを水平スケーリングと言う。
  • インスタンスそのものの性能を変更してスケーリングすることを垂直スケーリングと言う。
  • 垂直スケーリングよりも水平スケーリングのほうがスケーラビリティを確保しやす。
垂直スケーリング 水平スケーリング
スケール方法 サイズを変更 インスタンス数を変更
影響 あり、検証や停止が必要 なし、事前に設計
上限 インスタンスの最大サイズ なし

Auto Scalingの設定

Auto Scalingでは起動設定(何を)、Auto Scalingグループ(どこで)、スケーリングポリシー(いつ)を設定する。

  • 「何を」=「起動設定」=どのようにEC2インスタンスを起動するか
  • 「どこで」=「Auto Scalingグループ」=どこでEC2インスタンスを起動するか
  • 「いつ」=「Auto Scalingポリシー」=いつのタイミングで起動/終了するか

起動設定

起動設定(何を)

起動設定では以下を設定する。どのようなEC2インスタンスを起動するのかをあらかじめ設定しておくのが起動設定。

  • IAM
  • インスタンスタイプ
  • IAMロール
  • ユーザーデータ
  • ストレージ
  • セキュリティグループ
  • キーペア

Auto Scalingグループ(どこで)

Auto Scalingグループでは以下を設定する。

  • 起動設定名
  • アベイラビリティゾーン(サブネット)
  • ELBのターゲットグループ
  • 最小/最大/希望するインスタンス数
  • 通知
  • タグ

Auto Scalingポリシー(いつ)

Auto Scalingポリシーには次の3つのタイプがある。

ターゲットポリシー

Auto ScalingグループのEC2インスタンス平均CPU使用率などを決めておくことで、AWSが自動的に最小数と最大数の間でEC2インスタンスを調整する。

シンプルポリシー

CloudWatchのアラームに基づいて、Auto Scalingアクションを実行。

ステップポリシー

複数段階でのインスタンスの追加、削除を設定できる。

他に、Auto Scalingアクションはポリシーだけではなく、時間を指定したスケジュールでも実行できる。スケジュールで設定できる情報は、最小数、最大数、希望数。

アプリケーションデプロイの自動化

先述のとおり、Auto Scalingでは起動設定をあらかじめ用意しておく必要がある。そしてスケーリングポリシーかスケジュールによってEC2インスタンスが起動する。必要なくなればスケールインし、インスタンスは削除される。EC2インスタンスは削除されるので、EC2インスタンスに情報や状態を持たせない設計が必要。このようなEC2インスタンスの構成をステートレスと言う。EC2には初回起動時に自動実行してデプロイを自動化できるユーザーデータという機能がある。もしもユーザーデータの処理の中でインスタンス固有の情報が必要な場合は、メタデータを利用することもできる。

  • EC2のユーザーデータを使うことでコマンドを自動実行し、デプロイ処理を自動化することができる。
  • EC2の情報(IPアドレスやインスタンスID)はメタデータから取得できる。