コンテンツにスキップ

Amazon EC2 Auto Scaling

1. サービス概要

Amazon EC2 Auto Scaling は、AWS が提供するサービスで、需要に応じて Amazon EC2 インスタンスを自動的に起動・停止することで、アプリケーションの可用性、耐障害性、コスト効率を向上させる。
これにより、トラフィックの変動に合わせてリソースを動的に調整し、常に最適なパフォーマンスを維持できる。
Auto Scaling は、単一の EC2 インスタンスだけでなく、EC2 インスタンスのグループを管理できる。

主なユースケースとして、

  • ウェブアプリケーションのスケーリング
  • バッチ処理のスケーリング
  • 負荷テスト
  • 災害復旧

などが挙げられる。

2. 主な特徴と機能

2.1 動的なスケーリング

EC2 Auto Scaling は、トラフィックの変動に応じて自動的に EC2 インスタンスの数を調整できる。
需要の増加時にはインスタンスを増やし、需要の減少時にはインスタンスを減らすことで、リソースの効率的な利用とコスト削減を実現する。

2.2 スケーリングポリシー

Auto Scaling は、様々なスケーリングポリシーをサポートしており、アプリケーションの特性に合わせて最適なスケーリング戦略を定義できる。
以下のようなスケーリングポリシーを利用できる。

  • ターゲット追跡スケーリング: CPU 使用率や Application Load Balancer のメトリクスなどのターゲット値を指定し、自動的にインスタンス数を調整。
  • ステップスケーリング: CloudWatch アラームに基づいて、指定されたステップ数でインスタンス数を調整。
  • スケジュールスケーリング: 特定の時間や曜日に基づいてインスタンス数を増減。

2.3 ライフサイクルフック

Auto Scaling は、EC2 インスタンスの起動時や終了時にカスタムアクションを実行するためのライフサイクルフックを提供する。
これにより、インスタンスの起動時にアプリケーションの設定を行ったり、インスタンスの終了時にログを収集したりできる。

2.4 ヘルスチェック

Auto Scaling は、EC2 インスタンスのヘルス状態を定期的にチェックし、異常なインスタンスを自動的に置き換える。
これにより、アプリケーションの可用性と耐障害性を向上させる。

  • EC2 ヘルスチェック: EC2 インスタンスのステータスを監視。
  • ELB ヘルスチェック: Elastic Load Balancer に接続されたインスタンスのヘルスを監視。

2.5 起動テンプレートと起動構成

Auto Scaling は、起動テンプレートまたは起動構成を使用して、EC2 インスタンスの起動設定を定義する。
これにより、インスタンスの種類、AMI、セキュリティグループ、ストレージなどを定義できる。

  • 起動テンプレート: EC2 インスタンスの起動設定をテンプレートとして定義。
  • 起動構成: EC2 インスタンスの起動設定を構成として定義。

2.6 可用性ゾーンの分散

Auto Scaling は、EC2 インスタンスを複数のアベイラビリティーゾーンに分散して起動できる。
これにより、単一のアベイラビリティーゾーンで障害が発生した場合でも、アプリケーションの可用性を維持できる。

2.7 統合性

Auto Scaling は、AWS の他のサービス(Elastic Load Balancing、Amazon CloudWatch、AWS CloudFormation など)と統合されており、スケーラブルで可用性の高いインフラを構築できる。
AWS CodeDeploy と連携してアプリケーションのデプロイを自動化できる。

3. アーキテクチャおよび技術要素

  1. ユーザーは、起動テンプレート(または起動構成)とスケーリングポリシーを定義して Auto Scaling グループを作成。
  2. Auto Scaling グループは、定義された設定に基づいて EC2 インスタンスを起動。
  3. Auto Scaling は、CloudWatch メトリクスを監視し、スケーリングポリシーに基づいてインスタンス数を自動的に調整。
  4. Elastic Load Balancing は、トラフィックを正常なインスタンスに分散。
  5. ライフサイクルフックが設定されている場合、インスタンスの起動時と終了時にカスタムアクションを実行。

Auto Scaling は、フルマネージドサービスとして提供され、高い可用性とスケーラビリティを内包している。
需要に応じてリソースを自動的に調整し、アプリケーションの可用性を維持する。

4. セキュリティと認証・認可

セキュリティは EC2 Auto Scaling の重要な要素である:

  • IAM によるアクセス制御: AWS IAM を利用して、Auto Scaling リソースへのアクセスを制御し、権限を管理。
  • セキュリティグループ: EC2 インスタンスのインバウンド・アウトバウンドトラフィックを制御。
  • VPC サポート: Amazon VPC 内で Auto Scaling を使用する場合、プライベート接続を確立。
  • 暗号化: 必要に応じて、ストレージの暗号化を有効化。
  • 監査ログ: AWS CloudTrail を利用して、API 呼び出しやリソース変更を記録。

これにより、インフラの安全性とコンプライアンスを確保できる。

5. 料金形態

Amazon EC2 Auto Scaling 自体の利用には料金はかかりない。
ただし、Auto Scaling によって起動された EC2 インスタンス、および関連する AWS サービス(Elastic Load Balancing など)の利用料金が発生する。

  • EC2 インスタンス料金: 起動された EC2 インスタンスの利用時間に応じた課金。
  • Elastic Load Balancing 料金: ロードバランサーの利用時間、データ転送量に応じた課金。
  • CloudWatch 料金: モニタリングデータの利用量に応じた課金。

6. よくあるアーキテクチャ・設計パターン

一般的なパターンは以下の通りである:

  • ウェブアプリケーションのスケーリング: ウェブアプリケーションのトラフィックに応じて、EC2 インスタンスを自動的にスケーリング。
  • バッチ処理のスケーリング: バッチ処理の負荷に応じて、EC2 インスタンスを自動的にスケーリング。
  • 負荷テスト: 負荷テスト中に EC2 インスタンスを自動的にスケーリングし、アプリケーションのパフォーマンスを確認。
  • 災害復旧: 障害発生時に、別のリージョンで EC2 インスタンスを自動的に起動し、アプリケーションを復旧。
  • アプリケーションの可用性向上: 複数のアベイラビリティーゾーンにインスタンスを分散し、アプリケーションの可用性を向上。

7. 設定・デプロイ手順(ハンズオン例)

  1. EC2 コンソールで起動テンプレート(または起動構成)を作成。
  2. Auto Scaling コンソールで Auto Scaling グループを作成し、起動テンプレート(または起動構成)を指定。
  3. スケーリングポリシーを定義(ターゲット追跡、ステップスケーリングなど)。
  4. ヘルスチェックを設定(ELB ヘルスチェックなど)。
  5. Auto Scaling グループを起動し、スケーリング動作を確認。

8. 試験で問われやすいポイント

8.1 動的なスケーリング

  • 自動スケーリング: トラフィック変動に応じて EC2 インスタンス数を自動調整する仕組みを理解。
  • リソース効率: 需要に応じてリソースを効率的に利用する方法を理解。

8.2 スケーリングポリシー

  • ターゲット追跡スケーリング: メトリクスに基づいた自動スケーリングを理解。
  • ステップスケーリング: CloudWatch アラームに基づいて段階的にスケーリングする方法を理解。
  • スケジュールスケーリング: 特定の時間や曜日でスケーリングする方法を理解。

8.3 ライフサイクルフック

  • カスタムアクション: インスタンス起動時・終了時にカスタムアクションを実行する方法を理解。
  • ユースケース: アプリケーションの設定、ログ収集など、ライフサイクルフックのユースケースを理解。

8.4 ヘルスチェック

  • ヘルスチェックの種類: EC2 ヘルスチェック、ELB ヘルスチェックの違いを理解。
  • 異常インスタンス: 異常なインスタンスを自動的に置き換える仕組みを理解。

8.5 起動テンプレートと起動構成

  • 設定定義: EC2 インスタンスの起動設定を定義する方法を理解。
  • 違い: 起動テンプレートと起動構成の違いを理解。

8.6 可用性ゾーン分散

  • マルチ AZ: 複数のアベイラビリティーゾーンにインスタンスを分散して可用性を向上させる方法を理解。

8.7 料金体系

  • Auto Scaling 料金: Auto Scaling 自体の料金は無料であることを理解。
  • 関連サービス料金: EC2 インスタンス、ELB、CloudWatch など、関連サービスの利用料金が発生することを理解。

8.8 類似・関連サービスとの比較

  • AWS Elastic Beanstalk: アプリケーションデプロイに特化。Auto Scaling はインフラのスケーリングに特化。
  • AWS Fargate: コンテナのサーバーレス実行環境。Auto Scaling は EC2 インスタンスの管理。

8.9 試験で頻出となる具体的な問われ方と答え

  • Q: Amazon EC2 Auto Scaling の主な用途は?
  • A: 需要に応じて EC2 インスタンスを自動的に調整し、可用性、耐障害性、コスト効率を向上。
  • Q: Auto Scaling がサポートするスケーリングポリシーの例は?
  • A: ターゲット追跡スケーリング、ステップスケーリング、スケジュールスケーリング。
  • Q: ライフサイクルフックでできることは?
  • A: インスタンス起動時・終了時にカスタムアクションを実行。
  • Q: Auto Scaling がサポートするヘルスチェックの種類は?
  • A: EC2 ヘルスチェック、ELB ヘルスチェック。
  • Q: Auto Scaling で使用する EC2 インスタンスの起動設定は?
  • A: 起動テンプレートまたは起動構成。
  • Q: Auto Scaling 自体の利用料金は?
  • A: 無料。
  • Q: Auto Scaling と Elastic Beanstalk の違いは?
  • A: Elastic Beanstalk はアプリケーションデプロイ、Auto Scaling はインフラのスケーリング。