おっさん社内SEエンジニアの勉強ブログ

勉強記録のブログとなります。

SAA学習-信頼性設計-Auto-Scalingの概要

今回のテーマ:Auto-Scalingの概要

主要サービスの公式資料

Amazon EC2 Auto Scaling: docs.aws.amazon.com

スケーラビリティの確保

需要増にトラフィック量が処理できなくなる前に処理サーバーを拡張することで対処を可能とする。(ELBでトラフィックを確認し需要増)

スケーリングのタイプ

スケーリングタイプは垂直スケーリングと水平スケーリングの2つのタイプがあり、Auto-Scalingは水平スケーリングタイプとなります。

垂直スケーリング

  • 拡張方法(スケールアップ):メモリやCPUの追加・増強
  • 低減方法(スケールダウン):メモリやCPUの削減・低性能化

水平スケーリング

  • 拡張方法(スケールアップ):処理を行う機器/サーバー台数の増加
  • 低減方法(スケールダウン):処理を行う機器/サーバー台数の低減

Auto-Scalingの要素

  • Auto-Scalingグループ
  • Auto-Scaling configuration:起動設定
  • Auto-Scaling Pan

Auto-Scalingグループ

スケールするインスタンスの最大数など基本情報を設定する。

Auto-Scaling configuration:起動設定

スケールアウトの際、起動するインスタンス内容を設定します。
設定項目はいかのものが挙げられます。

  • AMI
  • インスタンスタイプ
  • セキュリティグループ
  • キーペア
  • IAMロール

Auto-Scaling Pan

どのようにスケールするかの方法で以下のものを定義します。

  • Auto-Scaling Groupサイズの維持:現在のAuto-Scaling Groupのインスタンス最小台数を維持する設定を行う
  • 手動スケーリング:設定外で予期せぬスケーリングが必要となった場合、手動でスケーリングを実施
  • スケジュールベース:予想された需要増時期に合わせたスケーリングスケジュールを設定
  • 動的スケーリング:予測不能なケースにスケーリングポリシーにスケール方針を設定し、動的にスケールアウトを実施

また、上記のプランについて複数組み合わせて利用することが可能 例:スケジュールベースで設定を実施後、スケジュールベース設定を超過したら動的スケーリングを有効にするなど

ヘルスチェック

Auto-Scaling配下のEC2のヘルスチェックはEC2のステータス情報またはELBのヘルスチェックのどちらかを利用します。

  • EC2ステータス:インスタンスのステータスがrunning以外の状態を異常と判断する
  • ELB:ELBのヘルスチェック機能を活用する

ターミネイションポリシー

需要減に基づくスケールインの際、どのインスタンスから終了するか設定します。

  • OldestIntance/NewInstance:最も古いインスタンスや新しい起動自国のインスタンスなど順番で終了
  • OldestLaunchConfiguration:最も古い起動設定により、起動しているインスタンスから終了
  • ClosestToNextInstanceHour:次の課金が始まるタイミングで最も近いインスタンスから終了
  • デフォルト設定:「OldestLaunchConfiguration」から「ClosestToNextInstanceHour」の順に適用する。その後複数インスタンスが残った場合、ランダムに終了する。

Auto-Scalingの連携

ELBのヘルスチェックやCloudWatchのアラーム機能をトリガーにしスケールイン/アウトの条件として利用できます。

Auto-Scalingの基本構成

ELB構成冗長化したEC2に対しAuto-Scalingを設定し自動拡張できるような構成となります。

概略図:

f:id:In-houseSE:20210530173015p:plain

Auto-Scalingの設定プロセス

Auto-Scalingの設定する順番は以下のように実施します。

①ALBの作成
②ターゲットグループの作成
③起動するインスタンス設定
④Auto-Scalingグループ作成
⑤Auto-Scalingポリシーの作成orスケジュール設定

Auto-Scalingの設定ポイント

  • インスタンスの最大値/最小値の設定は慎重に設定
  • ステートフルなアプリケーションへの設定は、Auto-Scaling Groupでの自動設定が必要
  • ライフサイクルフック(起動時または削除時にインスタンスを一時停止しカスタムアクションを実行)を使用
  • Auto-Scalingスラッシング(急なスケールインによる影響)を避ける

今回のテーマは以上です。