すべてのプロダクト
Search
ドキュメントセンター

Auto Scaling:概要

最終更新日:Sep 18, 2024

スケーリンググループはAuto scalingの基本的な要素であり、同じタイプのサービスインスタンスを管理し、同様のビジネス目的に適しています。 スケーリンググループを使用して、クラスター内のインスタンスの水平方向の拡張を高速化できます。 スケーリンググループを使用して、ビジネス要件に基づいてインスタンスの数を動的にスケーリングすることもできます。これにより、大幅なコスト削減が可能になります。

メリット

  • 迅速なスケールアウト機能と高いサービス可用性

    スケーリンググループを使用すると、サービスクラスターを効率的に拡張し、サービスの可用性を向上できます。

  • コスト管理

    サービスクラスタを水平方向にスケーリングすると、リソース管理の増加により運用コストが高くなる可能性があります。 ただし、ビジネスは常にフル稼働するとは限りません。 この場合、クラウドコンピューティングの柔軟な機能を使用して、コンピューティングリソース要件が減少したときにリソース投資を削減でき、コストの管理に役立ちます。

サポートされるスケーリングソリューション

解決策1: 固定数の利用可能なインスタンスのメンテナンス

  • シナリオ: クラスタースケーリングなしの高可用性メンテナンス

  • 実装方法: インスタンスヘルスチェックおよび期待インスタンス数機能を有効にします。

    スケーリンググループの [インスタンスのヘルスチェック] 機能を有効にすると、Auto scalingは異常なインスタンスをスケーリンググループから自動的に削除します。 スケーリンググループ内の現在のインスタンス数が予想されるインスタンス数より少ない場合、Auto scalingは自動的にスケールアウトイベントをトリガーして、スケーリンググループ内の使用可能なインスタンスの固定数を維持します。

  • たとえば、スケーリンググループの [期待されるインスタンス数] 機能を有効にし、期待される数として10を指定します。 スケーリンググループ内の実際のインスタンス数が10未満の場合、Auto scalingは自動的にスケールアウトイベントをトリガーして実際の数を10に増やします。

解決策2: 定期的にスケジュールされた自動スケーリング

  • シナリオ: 安定したリソース使用率

  • 実装方法:: 定期的な自動スケーリングを有効にするスケジュール済みタスクを作成します。

    クラスターのリソース使用率が増加すると、スケジュールされたタスクを実行してスケールアウトイベントをトリガーできます。 クラスターのリソース使用率が低下した場合、スケジュールされたタスクを実行してスケールインイベントをトリガーできます。 詳細については、「スケジュールされたタスクのトリガーによるECSインスタンスのスケーリング」をご参照ください。

  • たとえば、クラスターでは、毎晩19:00にトラフィックが増加し、01:00にモニタリングごとに減少します。 ビジネス需要の変動に対処するために、次のスケジュールタスクを作成できます。

    • トラフィックの増加: スケジュールされたタスクを有効にして、毎晩19:00にサービスレプリカの数を増やすことができます。 これにより、増加したトラフィックを処理するクラスタの能力が向上します。

    • トラフィックの減少: スケジュールされたタスクを有効にして、毎朝01:00にサービスレプリカの数を減らすことができます。 これにより、リソース利用率が向上し、コスト効率が最大になります。

解決策3: リソース使用率のしきい値に基づく自動スケーリング

  • シナリオ: ワークロードの突然の変動

  • 実装方法:

    リソース使用率が指定したしきい値を超えたとき、または下回ったときにスケーリングイベントをトリガーする

    イベントトリガータスクを作成して、スケーリングイベントをトリガーできます。 リソース使用率が指定したしきい値を超えるか下回ると、イベントトリガータスクが自動的に実行され、スケーリングイベントがトリガーされます。

    アラートのトリガー後にインスタンスを追加または削除

    スケーリンググループでイベントトリガータスクを作成するときは、タスクで単純なスケーリングルールを設定する必要があります。 単純なスケーリングルールでは、イベントトリガータスクの実行時に特定の数のインスタンスを追加または削除するアクションを指定します。

    効果の説明

    単純なスケーリングルールを設定すると、特定の数のインスタンスを直接追加または削除したり、Auto scalingで必要な数のインスタンスを維持したりできます。 例:

    • 平均CPU使用率が80% を超えると、イベントトリガータスクをトリガーしてN個のインスタンスを追加することで、単純なスケーリングルールを実行できます。

    • 平均CPU使用率が70% を下回った場合、イベントトリガータスクをトリガーしてN個のインスタンスを削除することで、単純なスケーリングルールを実行できます。

    詳細については、「イベントトリガータスクによるECSインスタンスのスケーリング」をご参照ください。

    リソース使用率層に基づくインスタンスの追加または削除

    スケーリンググループでイベントトリガータスクを作成するときに、タスクでステップスケーリングルールを設定できます。 これにより、イベントトリガータスクの実行時に定義済みのリソース使用率層に基づいて自動スケーリングが可能になります。

    重要

    Elastic Container Instanceタイプのスケーリンググループは、ステップスケーリングルールをサポートしていません。

    効果の説明

    ステップスケーリングルールを設定する場合、ルールで事前定義された調整ステップに基づいて自動スケーリングを有効にできます。 例:

    • 平均CPU使用率が60% から70% の間である場合、イベントトリガータスクをトリガーして1つのインスタンスを削除することにより、ステップスケーリングルールを実行できます。

    • 平均CPU使用率が30% から60% の間である場合、イベントトリガータスクをトリガーして3つのインスタンスを削除することで、ステップスケーリングルールを実行し続けることができます。

    • 平均CPU使用率が30% を下回った場合、イベントトリガータスクをトリガーして5つのインスタンスを削除することで、ステップスケーリングルールを引き続き実行できます。

    希望するリソース使用率を維持する

    スケーリンググループにターゲット追跡スケーリングルールを作成して、目的のリソース使用率を維持できます。

    Elastic Compute Service (ECS) タイプのスケーリンググループにターゲットトラッキングスケーリングルールを作成し、80% を目的の平均CPU使用率として指定します。 この場合、Auto Scalingはインスタンスを動的に追加または削除して、平均CPU使用率を80% に維持します。

  • 実装方法の違い

    • 単純なスケーリングルールまたはステップスケーリングルールベースの実装方法は、柔軟性とカスタマイズを向上させます。 イベントトリガータスクがトリガーされた後に追加または削除するインスタンスの数を制御できます。 この実装方法は、リソース利用層の変化に基づくインスタンスのスケーリングも可能にします。

    • ターゲット追跡スケーリングルールベースの実装方法は、より単純化される。 必要なリソース使用率にのみ集中する必要があります。

解決策4: カスタムスケーリング

上記のソリューションのいずれもビジネス要件を満たしていない場合は、カスタムスケーリングソリューションを設定できます。

手動でスケーリングルールを実行するか、インスタンス番号を変更してスケーリングイベントをトリガーできます。 詳細については、「数回クリックするとECSインスタンスを手動でスケールする」をご参照ください。

説明

カスタムスケーリングはAPI呼び出しをサポートします。 API操作を呼び出して、ビジネス要件に基づいてカスタムスケーリングソリューションを構成できます。

ソリューション5: 予測スケーリング

Auto Scalingは、予測されるリソース需要に合わせて自動的に調整することもできます。

このソリューションでは、予測のみを有効にして精度と関連性を評価することで、予測スケーリングルールの初期テストを実行できます。 結果が満足のいくものであれば、予測とスケーリングの両方を有効にして、予測タスクを自動的に生成し、スケジュールされた計画に基づいてインスタンスをスケーリングできます。 詳細については、「予測スケーリングルールの予測の表示」をご参照ください。

使用上の注意

スケーリンググループを使用する前に、ビジネスをデプロイするインスタンスが水平スケーリングをサポートしていることを確認してください。

Auto Scalingは、インスタンスを水平方向にスケーリングします。 ビジネスに対する水平スケーリングの潜在的な影響を考慮することを推奨します。

  • データの整合性

    データベースがインスタンスにデプロイされている場合、Auto Scalingを使用してインスタンスを水平方向にスケールアウトすると、データの不整合が発生する可能性があります。 この問題を解決するには、データベースを個別にデプロイし、すべてのインスタンスが同じデータベースにアクセスできるようにすることで、アーキテクチャ設計を変更することをお勧めします。 これは、サービスステートレスを達成するのに役立ちます。

  • データセキュリティ

    スケーリンググループのインスタンスは自動的に作成およびリリースされます。 インスタンスにデータを保存する場合は、必ずデータバックアップ操作を実行してデータを保護してください。

スケーリンググループの使用方法?

始める

高度な要件

ビジネスデプロイメント: ビジネスソフトウェアパッケージを新しいインスタンスに自動的にデプロイ

  • ソフトウェアパッケージを搭載したイメージを使用した自動展開の有効化

    • ECSタイプのスケーリンググループ

      ソフトウェアパッケージを備えたカスタムイメージを作成し、そのイメージを使用するようにインスタンス設定ソースを変更します。

    • Elastic Container Instanceタイプのスケーリンググループ

      ビジネス用のDockerイメージを作成し、イメージを使用するようにインスタンス構成ソースを変更します。

  • インスタンスの起動時にデプロイスクリプトを自動的に実行

    • カスタムインスタンスユーザーデータ

      スケーリンググループがECSタイプの場合、[インスタンスユーザーデータ] 機能を有効にできます。 カスタムユーザーデータにスクリプトを含めて、サービスソフトウェアパッケージを展開できます。 詳細については、「インスタンスユーザーデータ機能を使用したECSインスタンスの自動設定」をご参照ください。

    • ライフサイクルフック

      スケーリンググループがECSタイプの場合、Lifecycle Hook機能を有効にできます。 ライフサイクルフックを使用すると、スケールアウトイベントがトリガーされた後にインスタンスがスケーリンググループに追加される前に、インスタンスにサービスソフトウェアパッケージをデプロイできます。 詳細については、「ECSインスタンスでのスクリプトの自動実行」をご参照ください。

ローリング更新: インスタンスイメージまたは実行スクリプトの更新

ローリングアップデート機能を使用して、複数のインスタンスのインスタンスイメージまたはバッチ実行スクリプトを更新できます。 詳細については、「ローリング更新」をご参照ください。

クラウドデータベースとの関連付け: 新しいインスタンスのデータベースへのアクセスを許可

スケーリンググループ内のすべてのインスタンスに同一のセキュリティグループを設定できます。 スケーリンググループ内の新しいインスタンスのプライベートIPアドレスを、スケーリンググループに関連付けられているクラウドデータベースのIPアドレスホワイトリストに追加することもできます。 これにより、新しいインスタンスからクラウドデータベースへのアクセスが可能になります。

関連ドキュメント

ロードバランサーとの関連付け: スケーリンググループ内のインスタンスのアクセスエントリポイントの設定

インスタンスクラスターがロードバランサーをアクセスエントリポイントとして使用している場合、ロードバランサーをインスタンスを管理するスケーリンググループに関連付けることができます。 ロードバランサーをスケーリンググループに関連付けると、スケーリンググループ内の新しいインスタンスがロードバランサーのバックエンドサーバーグループに自動的に追加されます。

関連ドキュメント

スケーリング中のカスタム操作の実行

ライフサイクルフックを使用してインスタンスをPending状態にし、Apsara File Storage NAS (NAS) ファイルシステムのマウント、elastic IPアドレス (EIP) のバインド、カスタムスクリプトの実行など、インスタンスに対してカスタム操作を実行できます。

関連ドキュメント

Design a scale-inポリシー

ビジネスのワークロードが少ない場合、Auto Scalingは自動的にリソースをスケーリングしてコストを最小限に抑えます。 スケールインプロセス中に、スケールイン頻度の制御、インスタンスの適切なスケーリング、およびスケールインするインスタンスの選択について質問がある場合があります。

関連ドキュメント

リソースコストの最適化

スケーリンググループを使用する場合は、プリエンプティブルインスタンスを作成し、コスト最適化ポリシーを有効にしてリソースコストを最適化できます。

関連ドキュメント

ディザスタリカバリ機能とスケールアウト成功率の向上

スケールアウト障害は、単一ゾーン内のリソースが不十分なために発生する可能性があります。 この問題を解決するには、複数のゾーンとインスタンスタイプを指定して、このような障害のリスクを軽減します。 スケーリンググループで分散分散ポリシーを有効にして、マルチゾーンのディザスタリカバリを実装することもできます。

関連ドキュメント

Kubernetesノードのスケール

スケーリンググループを使用して、Kubernetesノードの自動スケーリングを有効にできます。

関連ドキュメント