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

Auto Scaling:概要

最終更新日:Sep 10, 2024

スケーリングルールが実行されたとき、またはElastic Compute Service (ECS) インスタンスまたはelastic containerインスタンスが手動でスケーリンググループに追加または削除されたときに、スケーリングアクティビティがトリガーされます。 スケーリングアクティビティがトリガーされると、Auto scalingはスケールアウトまたはスケールイン操作を実行します。 このトピックでは、スケーリングアクティビティのプロセスとステータスについて説明します。 このトピックでは、ECSインスタンスのロールバックについても説明します。 このトピックでは、例としてECSタイプのスケーリンググループを使用します。

活動プロセスのスケーリング

自動トリガースケーリングアクティビティのプロセス

  • スケールアウトルールを実行してスケーリンググループにECSインスタンスを自動的に作成するプロセス

    1. スケーリンググループのヘルスステータスと境界値を確認します。 境界値には、スケーリンググループに含める必要のあるインスタンスの最小数と、スケーリンググループに含めることができるインスタンスの最大数が含まれます。

    2. スケーリングアクティビティIDを割り当て、スケーリングアクティビティを開始します。

    3. ECS インスタンスを作成します。

    4. スケーリンググループ内のインスタンス数を変更します。

    5. 新しく作成したECSインスタンスにIPアドレスを割り当てます。

    6. (オプション) 新しく作成されたECSインスタンスのIPアドレスを、関連付けられたApsaraDB RDSインスタンスのIPアドレスホワイトリストに追加します。

    7. 新しく作成したECSインスタンスを起動します。

    8. (オプション) 新しく作成されたECSインスタンスを、バックエンドサーバーとして関連するClassic Load Balancer (CLB) (旧称Server Load BalancerまたはSLB) インスタンスにアタッチし、スケーリング設定に基づいてECSインスタンスのCLB重みを設定します。

    9. スケールアウトを完了し、クールダウン期間機能を有効にします。

  • スケールインルールを実行してスケーリンググループからECSインスタンスを削除するプロセス

    1. スケーリンググループのヘルスステータスと境界値を確認します。 境界値には、スケーリンググループに含める必要のあるインスタンスの最小数と、スケーリンググループに含めることができるインスタンスの最大数が含まれます。

    2. スケーリングアクティビティIDを割り当て、スケーリングアクティビティを開始します。

    3. (オプション) 関連付けられたCLBインスタンスからECSインスタンスをデタッチします。

    4. ECSインスタンスを [停止済み] 状態にします。

    5. (オプション) 関連するApsaraDB RDSインスタンスのIPアドレスホワイトリストからECSインスタンスのIPアドレスを削除します。

    6. ECS インスタンスをリリースします。

    7. スケーリンググループ内のインスタンス数を変更します。

    8. スケールインを完了し、クールダウン期間機能を有効にします。

手動でトリガーされるスケーリングアクティビティのプロセス

  • 独立したECSインスタンスをスケーリンググループに手動で追加するプロセス

    1. ヘルスチェックタスクを実行して、スケーリンググループのヘルスステータスを確認し、境界値、ECSインスタンスタイプ、およびECSインスタンスステータスも確認します。

    2. スケーリングアクティビティIDを割り当て、スケーリングアクティビティを開始します。

    3. ECSインスタンスをスケーリンググループに追加します。

    4. スケーリンググループ内のインスタンス数を変更します。

    5. (オプション) 新しく作成されたECSインスタンスのIPアドレスを、関連付けられたApsaraDB RDSインスタンスのIPアドレスホワイトリストに追加します。

    6. (オプション) ECSインスタンスをバックエンドサーバーとして関連付けられたCLBインスタンスにアタッチし、スケーリング設定に基づいてバックエンドサーバーのCLB重みを設定します。

    7. スケールアウトを完了し、クールダウン期間機能を有効にします。

  • スケーリンググループからECSインスタンスを手動で削除するプロセス

    1. スケーリンググループのヘルスステータスと境界値を確認します。 境界値には、スケーリンググループに含める必要のあるインスタンスの最小数と、スケーリンググループに含めることができるインスタンスの最大数が含まれます。

    2. スケーリングアクティビティIDを割り当て、スケーリングアクティビティを開始します。

    3. (オプション) ECSインスタンスへのトラフィックの転送を停止します。 ECSインスタンスは、60秒後にCLBインスタンスからデタッチされます。

    4. (オプション) 関連するApsaraDB RDSインスタンスのIPアドレスホワイトリストからECSインスタンスのIPアドレスを削除します。

    5. スケーリンググループ内のインスタンス数を変更します。

    6. スケーリンググループからECSインスタンスを削除します。

    7. スケールインを完了し、クールダウン期間機能を有効にします。

スケーリングアクティビティのステータス

次の表は、スケーリングアクティビティが入力できる状態を示しています。

ステータス

説明

拒否

スケーリングアクティビティの実行要求は拒否されます。 スケールインまたはスケールアウトは実行されません。

説明

[ステータス] 列の [拒否理由の表示] をクリックすると、原因を確認できます。

シナリオ:

  • スケーリンググループに含めることができるインスタンスの最大数は100です。

  • スケーリンググループ内のECSインスタンスの現在の数は100です。

  • 10個のECSインスタンスを追加するスケールアウトルールが実行されます。

Result: スケーリング条件は満たされておらず、スケールアウト要求は拒否されます。 後続のプロセスは実行されず、スケーリンググループには引き続き100のECSインスタンスが含まれます。

実行中

スケーリング条件が満たされ、スケーリングアクティビティが進行中です。

Auto Scalingは、スケーリンググループの境界値に基づいて、スケーリングするECSインスタンスの数を調整します。

シナリオ:

  • スケーリンググループに含めることができるインスタンスの最大数は100です。

  • スケーリンググループの現在のインスタンス数は95です。

  • 10個のECSインスタンスを追加するスケールアウトルールが実行されます。

Result: スケーリング条件が満たされ、スケーリングアクティビティが許可されています。 ただし、Auto Scalingは5つのECSインスタンスのみを作成します。 スケールアウトが完了すると、スケーリンググループには100のECSインスタンスが含まれます。

成功しました

スケーリングアクティビティが完了し、すべてのECSインスタンスがスケーリンググループに追加または削除されます。

シナリオ:

  • スケーリンググループに含めることができるインスタンスの最大数は100です。

  • スケーリンググループ内のECSインスタンスの現在の数は90です。

  • 10個のECSインスタンスを追加するスケールアウトルールが実行されます。

Result: スケーリング条件が満たされ、スケールアウトが許可されています。 スケールアウトが完了すると、スケーリンググループには100のECSインスタンスが含まれます。

警告

スケーリングアクティビティは完了です。 ただし、少なくとも1つのECSインスタンスがスケーリンググループに追加または削除され、少なくとも1つのECSインスタンスがスケーリンググループに追加または削除されない場合があります。

ECSインスタンスが作成され、ECSインスタンスが関連付けられたCLBインスタンスにアタッチされ、ECSインスタンスのIPアドレスが関連付けられたApsaraDB RDSインスタンスのIPアドレスホワイトリストに追加された場合にのみ、ECSインスタンスがスケーリンググループに正常に追加されたと見なされます。 そうでない場合、ECSインスタンスはスケーリンググループに追加されません。

説明

ECSインスタンスのスケーリンググループへの追加に失敗した場合、ロールバックがトリガーされます。 詳細は、「ECSインスタンスのロールバック」をご参照ください。

シナリオ:

  • スケーリンググループはCLBインスタンスに関連付けられ、新しく作成されたECSインスタンスは自動的にバックエンドサーバーとしてCLBインスタンスにアタッチされます。

  • CLBインスタンスのバックエンドサーバークォータが200です。

    説明

    詳細については、「制限事項」をご参照ください。

  • スケーリンググループに含めることができるインスタンスの最大数は300です。

  • スケーリンググループ内のECSインスタンスの現在の数は199で、ECSインスタンスはバックエンドサーバーとしてCLBインスタンスにアタッチされています。

  • 5つのECSインスタンスを追加するスケールアウトルールが実行されます。

Result: スケーリング条件が満たされ、スケールアウトが許可されています。 ただし、CLBインスタンスには最大200台のバックエンドサーバーを使用できます。 この場合、4つのECSインスタンスがCLBインスタンスにアタッチされず、スケーリンググループに追加されません。 スケールアウトが完了すると、スケーリンググループには200のECSインスタンスが含まれます。

失敗しました

スケーリングアクティビティは完了しましたが、すべてのECSインスタンスをスケーリンググループに追加または削除できません。

シナリオ:

  • スケーリンググループが存在するリージョンでは、アクティブなスケーリング設定で指定されたインスタンスタイプが不十分です。

  • スケーリンググループに含めることができるインスタンスの最大数は100です。

  • スケーリンググループの現在のインスタンス数は95です。

  • 5つのECSインスタンスを追加するスケールアウトルールが実行されます。

結果: スケーリング条件が満たされ、スケールアウトが許可されています。 ただし、インスタンスタイプが不十分なため、インスタンスの作成に失敗します。 スケールアウトが完了した後も、スケーリンググループには95個のECSインスタンスが含まれています。

ECSインスタンスのロールバック

特定の数のECSインスタンスをスケーリンググループに追加できない場合、Auto scalingはスケーリングアクティビティが完了するまでスケーリング操作を続行します。 スケーリンググループへの追加に失敗したECSインスタンスはロールバックされます。

重要

スケーリンググループ内のECSインスタンスがロールバックされると、スケーリンググループは期待される容量に達しません。 つまり、スケーリンググループは必要な計算能力を提供できず、モニタリングメトリックを必要な値に維持できません。 この場合、他の方法を使用してECSインスタンスの数を追加し、スケーリンググループがビジネス要件を満たしていることを確認できます。 たとえば、スケーリングルールを手動でトリガーしたり、独立したECSインスタンスをスケーリンググループに手動で追加したり、スケジュールまたはイベントでトリガーされるタスクを設定してスケーリングアクティビティをトリガーしたりできます。

  • 自動的に追加されるECSインスタンス

    RAM (Resource Access Management) ユーザーとしてECSインスタンスを作成するためのAPI操作を呼び出すと、ECSインスタンスがリリースされるまで、ロールバックされたECSインスタンスに対して課金されます。

    たとえば、スケーリンググループと、スケーリンググループに関連付けられているCLBインスタンスのバックエンドサーバーグループに5つのECSインスタンスを追加するとします。 5つのインスタンスを作成すると、2つのインスタンスのみがスケーリンググループに追加されます。 3つのインスタンスの追加に失敗し、自動的にリリースされます。 Auto Scalingは、スケーリングアクティビティのステータスが警告であっても、スケーリングアクティビティが完了したと見なします。 伸缩活动

  • 手動で追加されたECSインスタンス

    Auto Scalingは、スケーリンググループからロールバックされたECSインスタンスを自動的に削除します。 ただし、ロールバックされたECSインスタンスはリリースされません。