Auto Scaling グループのプロセスを中断して再開する - Amazon EC2 Auto Scaling

Auto Scaling グループのプロセスを中断して再開する

このトピックでは、Auto Scaling グループの 1 つ以上のプロセスを中断および再開する方法について説明します。これは、プロセスが失敗する原因となっている設定問題を調査する、または Auto Scaling グループを変更している間に Amazon EC2 Auto Scaling がインスタンスを異常としてマークして置き換えないようにするために実行できます。

注記

Auto Scaling グループのプロセスは、お客様が中断するだけでなく、インスタンスの起動に繰り返し失敗するという理由で Amazon EC2 Auto Scaling によって中断されることもあります。これは、管理上の中断と呼ばれます。管理上の中断は一般に、24 時間以上インスタンスの起動を試みているが、インスタンスの起動に成功しない Auto Scaling グループに適用されます。管理上の理由で Amazon EC2 Auto Scaling によって中断されたプロセスは、お客様が再開できます。

プロセスのタイプ

中断/再開機能は、以下のプロセスをサポートします。

  • Launch – グループがスケールアウトするとき、または Amazon EC2 Auto Scaling がその他の理由 (インスタンスをウォームプールに追加する場合など) でインスタンスの起動を選択するときに、インスタンスを Auto Scaling グループに追加します。

  • Terminate – グループがスケールインするとき、または Amazon EC2 Auto Scaling がその他の理由 (最大有効期間を超過した、もしくはヘルスチェックに合格しなかったためにインスタンスが終了される場合など) でインスタンスの終了を選択する場合に、インスタンスを Auto Scaling グループから削除します。

  • AddToLoadBalancer - インスタンスが起動されたときに、アタッチされたロードバランサーターゲットグループまたは Classic Load Balancer にインスタンスを追加します。詳細については、「Elastic Load Balancing を使用して Auto Scaling グループ内のインスタンス全体にトラフィックを分散させる」を参照してください。

  • AlarmNotification – 動的スケーリングポリシーに関連付けられている CloudWatch アラームから通知を受け取ります。詳細については、「Amazon EC2 Auto Scaling の動的スケーリング」を参照してください。

  • AZRebalance - グループ内の EC2 インスタンス数のバランスが悪くなったとき (それまで使用できなかったアベイラビリティーゾーンが正常状態に戻ったときなど) に、指定されたすべてのアベイラビリティーゾーン全体でグループ内のインスタンス数のバランスを整えます。詳細については、「アクティビティの再分散」を参照してください。

  • HealthCheck - インスタンスのヘルスを確認し、インスタンスが正常でないと Amazon EC2 または Elastic Load Balancing が Amazon EC2 Auto Scaling に通知した場合、そのインスタンスに異常とマークします。このプロセスは、手動で設定したインスタンスのヘルス ステータスをオーバーライドできます。詳細については、「Auto Scaling インスタンスのヘルスチェック」を参照してください。

  • InstanceRefresh - インスタンスの更新機能を使用して、インスタンスを終了および置換します。詳細については、「インスタンスの更新に基づいて Auto Scaling インスタンスを置き換える」を参照してください。

  • ReplaceUnhealthy - 異常とマークされたインスタンスを終了してから、代わりの新しいインスタンスを作成します。詳細については、「Auto Scaling インスタンスのヘルスチェック」を参照してください。

  • ScheduledActions - ユーザーが作成したか、または AWS Auto Scaling スケーリングプラン作成時および予測スケーリングをオンにした時、スケジュールされたスケーリングアクションは実行します。詳細については、「Amazon EC2 Auto Scaling のスケジュールされたスケーリング」を参照してください。

考慮事項

プロセスを中断する前に、以下を考慮してください。

  • 個別のプロセスまたはすべてのプロセスを中断および再開することができます。

  • プロセスの中断は、Auto Scaling グループ内のすべてのインスタンスに影響します。例えば、Amazon EC2 Auto Scaling がヘルスチェックに基づいてインスタンスを終了させることなくインスタンスを再起動するには、HealthCheck プロセスと ReplaceUnhealthy プロセスを中断できます。Amazon EC2 Auto Scaling が残りのインスタンスに対してヘルスチェックを実行する必要がある場合は、中断/再開機能の代わりに、スタンバイ機能を使用します。詳細については、「Auto Scaling グループからインスタンスを一時的に削除する」を参照してください。

  • AlarmNotification の中断は、スケーリングポリシーや、それらに関連付けられた CloudWatch アラームを削除することなく、グループのターゲット追跡、ステップ、およびシンプルスケーリングポリシーを一時的に停止できるようにします。その代わりに個々のスケーリングポリシーを一時的に停止するには、「Auto Scaling グループのスケーリングポリシーを無効化する」を参照してください。

  • Launch プロセスと Terminate プロセス、または AZRebalance を中断してから、インスタンスのデタッチ、または指定されたアベイラビリティーゾーンの変更などで Auto Scaling グループを変更すると、アベイラビリティーゾーン間でのグループのバランスが悪くなる可能性があります。その場合は、中断されたプロセスの再開後、Amazon EC2 Auto Scaling が徐々に、インスタンスをアベイラビリティーゾーン間で均等に再分散します。

  • Terminate プロセスを一時停止しても、delete-auto-scaling-group コマンドで強制削除オプションを使用してインスタンスを正常に終了できます。

プロセスの中断が他のプロセスに及ぼす影響を理解する

以下では、個々のプロセスタイプが中断されたときの動作について説明しています。

シナリオ 1: Launch が中断される

  • AlarmNotification は引き続きアクティブですが、Auto Scaling グループは、しきい値を超過した状態のアラームに対してスケールアウトアクティビティを開始できません。

  • ScheduledActions はアクティブですが、Auto Scaling グループは、実行されるスケジュールされたアクションに対してスケールアウトアクティビティを開始できません。

  • AZRebalance は、グループの再配分を停止します。

  • ReplaceUnhealthy は引き続き異常なインスタンスを終了しますが、置き換えは開始しません。Launch プロセスを再開すると、Amazon EC2 Auto Scaling は、Launch 停止中に終了されたインスタンスを直ちに置き換えます。

  • InstanceRefresh はインスタンスを置き換えません。

シナリオ 2: Terminate が中断される

  • AlarmNotification は引き続きアクティブですが、Auto Scaling グループは、しきい値を超過した状態のアラームに対してスケールインアクティビティを開始できません。

  • ScheduledActions はアクティブですが、Auto Scaling グループは、実行されるスケジュールされたアクションに対してスケールインアクティビティを開始できません。

  • AZRebalance はまだアクティブですが、正しく機能していません。古いインスタンスを終了せずに新しいインスタンスを起動することがあります。これにより、Auto Scaling グループがその最大サイズより 10% まで大きくなることあります。バランスの再調整アクティビティ中にこの状態が一時的に許可されるためです。Terminate プロセスを再開するまで、Auto Scaling グループは最大サイズを超えることがあります。

  • ReplaceUnhealthy は非アクティブですが、HealthCheck はアクティブです。Terminate が再開されると、ReplaceUnhealthy プロセスはすぐに実行を開始します。Terminate が中断されている間に異常とマークされたインスタンスがある場合、それらのインスタンスはすぐに置き換えられます。

  • InstanceRefresh はインスタンスを置き換えません。

シナリオ 3: AddToLoadBalancer が中断される

  • Amazon EC2 Auto Scaling はインスタンスを起動しますが、ロードバランサーターゲットグループまたは Classic Load Balancer に追加しません。AddToLoadBalancer プロセスを再開すると、インスタンスが起動されるときのロードバランサーへの追加が再開されます。ただし、このプロセスが中断されている間に起動されたインスタンスは追加されません。これらのインスタンスを手動で登録する必要があります。

シナリオ 4: AlarmNotification が中断される

  • CloudWatch アラームのしきい値が超過している場合、Amazon EC2 Auto Scaling はスケーリングポリシーを呼び出しません。AlarmNotification を再開すると、Amazon EC2 Auto Scaling はアラームしきい値に現在違反しているポリシーを処理します。

シナリオ 5: AZRebalance が中断される

  • Amazon EC2 Auto Scaling は、特定イベントの発生後にインスタンスの再分散を試みません。ただし、スケールアウトまたはスケールインのイベントが発生した場合でも、スケーリングプロセスはアベイラビリティーゾーン間のバランスを調整します。たとえば、スケールアウト中に、インスタンスが最も少ないアベイラビリティーゾーンでインスタンスを起動します。AZRebalance が中断されている間にグループのバランスがとれなくなった場合、そのプロセスを再開しても、Amazon EC2 Auto Scaling はグループのバランスを再調整しようとしません。最初に Launch を呼び出してから Terminate を呼び出します。

シナリオ 6: HealthCheck が中断される

  • Amazon EC2 Auto Scaling は、EC2 および Elastic Load Balancing のヘルスチェックの結果として、インスタンスに異常とマークしなくなります。カスタムヘルスチェックは引き続き正常に機能します。HealthCheck を中断した後、必要に応じて、グループ内のインスタンスのヘルス状態を手動で設定し、ReplaceUnhealthy がそれらのインスタンスを置き換えるようにできます。

シナリオ 7: InstanceRefresh が中断される

  • Amazon EC2 Auto Scaling は、インスタンス更新の結果としてのインスタンスの置き換えを停止します。進行中のインスタンス更新がある場合、操作はキャンセルされず、一時停止されます。

シナリオ 8: ReplaceUnhealthy が中断される

  • Amazon EC2 Auto Scaling は、異常とマークされたインスタンスを置き換えなくなります。EC2 または Elastic Load Balancing のヘルスチェックに失敗したインスタンスも異常とマークされます。ReplaceUnhealthly プロセスを再開するとすぐに、Amazon EC2 Auto Scaling はこのプロセスが中断されている間に異常とマークされたインスタンスを置き換えます。ReplaceUnhealthy プロセスは最初に Terminate を呼び出し、次に Launch を呼び出します。

シナリオ 9: ScheduledActions が中断される

  • Amazon EC2 Auto Scaling は、中断期間中に実行されるようにスケジュールされたアクションを実行しません。ScheduledActions を再開すると、Amazon EC2 Auto Scaling は、スケジュールされたアクションのうち、実行時間が過ぎていないもののみを考慮します。

追加の考慮事項

さらに、Launch または Terminate が中断される場合は、以下の機能が正しく機能しない可能性があります。

  • インスタンスの最大有効期間Launch または Terminate が中断される場合、インスタンスの最大有効期間機能がインスタンスを置き換えることはできません。

  • スポットインスタンスの中断Terminate が中断されていて、Auto Scaling グループにスポットインスタンスがある場合には、使用可能なスポットキャパシティーがなくなった状態であっても、依然としてそれらのインスタンスを終了することが可能です。Launch が中断されている間、Amazon EC2 Auto Scaling は、別のスポットインスタンスプール、または同じスポットインスタンスプール (再度利用可能になったとき) から代替インスタンスを起動できません。

  • 容量の再調整Terminate が中断されており、スポットインスタンスの中断に対応するために容量の再調整を使用する場合、Amazon EC2 スポットサービスは引き続き、スポット容量が利用できなくなったときにインスタンスを終了できます。Launch が中断される場合、Amazon EC2 Auto Scaling は、別のスポットインスタンスプール、または同じスポットインスタンスプール (再度利用可能になったとき) から代替インスタンスを起動できません。

  • インスタンスのアタッチとデタッチ - LaunchTerminate が中断されると、Auto Scaling グループにアタッチされているインスタンスをデタッチすることはできますが、Launch が中断されている間は、新しいインスタンスをそのグループにアタッチできません。

  • スタンバイインスタンスLaunchTerminate が中断されると、インスタンスを Standby 状態にすることはできますが、Launch の中断中に Standby 状態のインスタンスを service に戻すことはできません。

停止および再開プロセス (コンソール)

以下の手順に従って、プロセスを中断します。

プロセスを停止するには

  1. https://console.aws.amazon.com/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

  2. Auto Scaling グループの横にあるチェックボックスを選択します。

    [Auto Scaling groups] (Auto Scaling グループ) ページの下部にスプリットペインが開きます。

  3. [詳細] タブで、[高度な設定]、[編集] の順に選択します。

  4. [Suspended processes (中断したプロセス)] で、停止するプロセスを選択します。

  5. [Update] (更新) を選択します。

準備ができたら、以下の手順に従って、中断されたプロセスを再開します。

プロセスを再開する

  1. [詳細] タブで、[高度な設定]、[編集] の順に選択します。

  2. [Suspended processes] (中断されたプロセス) で、中断されたプロセスを削除します。

  3. [Update] (更新) を選択します。

プロセスを中断および再開する (AWS CLI)

以下の suspend-processes コマンドを使用して、個々のプロセスを中断します。

aws autoscaling suspend-processes --auto-scaling-group-name my-asg --scaling-processes HealthCheck ReplaceUnhealthy

すべてのプロセスを中断するには、以下のように --scaling-processes オプションを削除します。

aws autoscaling suspend-processes --auto-scaling-group-name my-asg

中断されたプロセスを再開する準備ができたら、以下の resume-processes コマンドを使用します。

aws autoscaling resume-processes --auto-scaling-group-name my-asg --scaling-processes HealthCheck

中断されたすべてのプロセスを再開するには、以下のように --scaling-processes オプションを削除します。

aws autoscaling resume-processes --auto-scaling-group-name my-asg