このトピックでは、Auto Scaling のワークフロー、スケーリングモードの設定方法、および主要なプロセスの図について説明します。
スケーリンググループは、Elastic Container Instance (ECI) インスタンスと Elastic Compute Service (ECS) インスタンスの両方で同じように動作します。このトピックでは、スケーリンググループ内の ECS インスタンスを例に、Auto Scaling の仕組みを説明します。ECS および ECI インスタンスの詳細については、「Elastic Compute Service (ECS) とは」および「Elastic Container Instance (ECI) とは」をご参照ください。
ワークフロー
このワークフローは、Auto Scaling が ECS インスタンスを追加する方法を示します。
ECS インスタンスを使用してリクエストを処理する典型的な 3 層 Web アプリケーションにおいて、最上位層はクライアントリクエストをスケーリンググループ内の ECS インスタンスに転送する Server Load Balancer (SLB) インスタンスです。中間層は、これらのリクエストを処理するスケーリンググループ内の ECS インスタンスで構成されています。最下層は、ECS インスタンスからのアプリケーションデータを保存する ApsaraDB RDS インスタンスです。
Auto Scaling は、アプリケーションの負荷に合わせて中間層の ECS インスタンス数を調整します。手順は次のとおりです:
Auto Scaling は、設定されたスケーリングモードの条件が満たされると、スケーリングアクティビティを開始します。次の表では、利用可能なスケーリングモードについて説明します。設定方法の詳細については、「スケーリングモードの設定」をご参照ください。
複数のスケーリングモードを組み合わせて並行して実行できます。たとえば、アプリケーションで毎日午後 12 時に予測可能なトラフィックの急増が発生する場合、その時間に 20 台の ECS インスタンスを追加するスケジュールタスクを作成できます。この固定数が常に十分でない場合は、スケジュールモードを動的モードやカスタムモードなどの他のモードと組み合わせて、予期しない需要に対応できます。
スケーリングモード
説明
コンソールドキュメント
API オペレーション
固定数量モード
最小インスタンス数 を設定すると、インスタンス数がこの値を下回った場合に、インスタンス数が最小数になるまで自動スケーリングによってインスタンスが追加されます。
インスタンスの最大数 を設定した場合、インスタンス数がこの値を超えると、Auto Scaling はインスタンス数が最大数になるまでインスタンスを削除します。
スケーリンググループの作成時に期待インスタンス数を設定すると、 Auto Scaling はそのインスタンス数を維持します。
ヘルスモード
スケーリンググループのヘルスチェック機能を有効にすると、Auto Scaling は定期的にその ECS インスタンスのステータスをチェックします。 インスタンスが実行中 状態でない場合、異常と見なされて削除されます。
説明スケーリンググループには組み込みのヘルスチェック機能があります。スケーリンググループが Server Load Balancer (SLB) インスタンス (Classic Load Balancer (CLB) や Application Load Balancer (ALB) など) にも関連付けられており、SLB インスタンスにもヘルスチェックが設定されている場合、両方のヘルスチェックが同時に実行されます。
スケジュールモード
指定された時刻に特定のスケーリングルールを実行するスケジュールタスクを作成できます。
カスタムモード
スケーリングルールの手動実行や、既存の ECS インスタンスの追加、分離、削除などが含まれます。
動的モード
CPU 使用率などの CloudMonitor パフォーマンスメトリクスに基づいてイベント起動タスクを作成できます。メトリクスがアラート条件を満たした場合 (たとえば、スケーリンググループ内のすべての ECS インスタンスの平均 CPU 使用率が 60% を超えた場合)、アラートがトリガーされ、Auto Scaling は対応するスケーリングアクションを実行します。
Auto Scaling は、
ExecuteScalingRuleAPI オペレーションを呼び出して、スケーリングアクティビティを実行します。呼び出しでは、スケーリングルールの一意の識別子を指定する必要があります。例:ari:acs:ess:cn-hangzhou:140692647406****:scalingrule/asr-bp1dvirgwkoowxk7****Auto Scaling コンソールを使用する場合、スケーリングルールを作成した後に識別子を確認できます。スケーリングルールの一覧で、スケーリングルール ID / 名前 列のルールの ID (例: asr-bp14u7kzh8442w9z****) をクリックします。表示されたページに識別子が表示されます。スケーリングルールの作成方法の詳細については、「スケーリングルールの設定」をご参照ください。
API を使用する場合、DescribeScalingRules オペレーションを呼び出して、スケーリングルールの一意の識別子 (ScalingRuleAri) を取得できます。識別子はレスポンスに含まれています。
前のステップで取得したスケーリングルールの一意の識別子 (ScalingRuleAri) を使用して、Auto Scaling はスケーリングルール、スケーリンググループ、およびスケーリング設定に関する情報を取得し、スケーリングアクティビティを作成します。
Auto Scaling は、スケーリングルールの一意の識別子 (ScalingRuleAri) を使用してスケーリングルールとそれに関連するスケーリンググループを照会し、追加する ECS インスタンスの数を決定し、設定する Server Load Balancer (SLB) および ApsaraDB RDS インスタンスを特定します。
Auto Scaling は、スケーリンググループに関連付けられたスケーリング設定を照会して、CPU、メモリ、帯域幅などの新しい ECS インスタンスの設定詳細を取得します。
Auto Scaling は、追加するインスタンスの数、インスタンス設定、および指定された SLB および ApsaraDB RDS インスタンスに基づいて、スケーリングアクティビティを作成します。
スケーリングアクティビティ中、Auto Scaling はインスタンスを作成し、SLB および ApsaraDB RDS インスタンスを設定します。
スケーリング設定に基づいて、指定された数の ECS インスタンスを作成します。
新しく作成された ECS インスタンスのプライベート IP アドレスを、指定された ApsaraDB RDS インスタンスのホワイトリストに追加し、新しい ECS インスタンスを指定された SLB インスタンスに追加します。
スケーリングアクティビティが完了すると、スケーリンググループのクールダウン期間が開始されます。
スケーリンググループは、クールダウン期間が終了するまで新しいスケーリングルールを実行しません。
スケーリングモードの設定
Auto Scaling は、設定に基づいてスケーリンググループから ECS インスタンスを追加または削除するスケーリングアクティビティを開始します。特定のスケーリングモードを使用するには、以下で説明するように、対応するコンポーネントを設定する必要があります。
スケーリングモード | 設定方法 | 説明 |
固定数量モード | スケーリンググループ + インスタンス構成情報ソース① | このモードのスケーリング効果は、次のスケーリンググループ設定によって決定されます:
|
ヘルスモード | スケーリンググループ + インスタンス構成情報ソース① | このモードでは、スケーリンググループで インスタンスのヘルスチェック 設定を有効にする必要があります。 |
スケジュールモード | スケーリンググループ + インスタンス構成情報ソース + スケーリングルール + スケジュールタスク② | このモードのスケーリング効果は、スケジュールタスクによって決定されます。 |
動的モード | スケーリンググループ + インスタンス構成情報ソース + スケーリングルール + イベント起動タスク③ | このモードのスケーリング効果は、イベント起動タスクによって決定されます。 |
カスタムモード | 任意のスケーリングモード設定 | 任意のスケーリングモードで、既存の ECS インスタンスを手動で追加、分離、または削除できます。スケーリングルールを設定している場合は、手動で実行することもできます。 |
マルチモード | スケーリングモード設定の組み合わせ | アクティブな設定は、選択したスケーリングモードによって異なります。モードは独立して動作し、モード間に優先順位はありません。スケーリンググループは、最初にトリガーされたモードのアクションを実行します。 たとえば、スケジュールモードと動的モードの両方を使用する場合、スケジュールタスクとイベント起動タスクの両方を設定する必要があります。スケジュールタスクの条件がイベント起動タスクの条件よりも前に満たされた場合、スケジュールタスクが最初に実行されます。 |
次の表は、設定方法の詳細を示しています:
番号 | 設定方法 | 説明 |
① | スケーリンググループ + インスタンス構成情報ソース | まず、スケーリンググループを作成し、そのインスタンス構成情報ソースを設定してから、両方を有効にする必要があります。これらの手順が完了すると、Auto Scaling によるスケールアウトまたはスケールインが可能になります。これが、必要最小限の設定です。 |
② | スケーリンググループ + インスタンス構成情報ソース + スケーリングルール + スケジュールタスク | 基本設定 (①) に加えて、スケーリングルールを作成してから、スケジュールタスクを作成する必要があります。Auto Scaling は、スケジュールタスクを使用してスケーリングルールを実行します。 |
③ | スケーリンググループ + インスタンス構成情報ソース + スケーリングルール + イベント起動タスク | 基本設定 (①) に加えて、スケーリングルールを作成してから、イベント起動タスクを作成する必要があります。Auto Scaling は、イベント起動タスクを使用してスケーリングルールを実行します。 |
Auto Scalingの図
Auto Scaling を使用すると、スケーリンググループを Server Load Balancer (SLB) および ApsaraDB RDS インスタンスに関連付けることができます。モバイルデバイスや PC などのエンドポイントがリクエストを送信すると、SLB インスタンスはそれをスケーリンググループ内の ECS インスタンスに転送します。ECS インスタンスはリクエストを処理し、アプリケーションデータを ApsaraDB RDS インスタンスに保存します。
Auto Scaling は、ビジネスニーズと設定に基づいて、スケーリンググループ内の ECS インスタンスの数を自動的に調整します。次の図では、スケールアウト、スケールイン、および弾性リカバリ (ヘルスチェック) のワークフローを示します。
図 1. スケールアウトワークフロー
図 2. スケールインワークフロー
図 3. 弾性リカバリワークフロー