Amazon EC2 Auto Scaling プロセスの一時停止と再開 - Amazon EC2 Auto Scaling

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EC2 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 グループのインスタンスのHealth チェック」を参照してください。

  • InstanceRefresh— インスタンス更新機能を使用してインスタンスを終了し、交換します。詳細については、「インスタンス更新を使用して Auto Scaling グループのインスタンスを更新する」を参照してください。

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

  • ScheduledActions— ユーザーが作成した、またはスケーリングプランを作成して予測スケーリングを有効にしたときに自動的に作成された、 AWS Auto Scaling スケジュールされたスケーリングアクションを実行します。詳細については、「Amazon EC2 Auto Scaling のスケジュールされたスケーリング」を参照してください。

考慮事項

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

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

  • Amazon EC2 Auto Scaling がヘルスチェックに基づいてインスタンスを終了させずに、HealthCheckReplaceUnhealthyおよびプロセスを一時停止してインスタンスを再起動することもできます。ただし、Amazon EC2 Auto Scaling で残りのインスタンスで引き続きヘルスチェックを実行する必要がある場合は、代わりにスタンバイ機能を使用してください。詳細については、「Auto Scaling グループからインスタンスを一時的に削除する」を参照してください。

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

  • Terminateプロセスを中断した場合でも、force delete delete-auto-scaling-groupオプションを指定したコマンドを使用すれば、インスタンスを強制終了できます。

  • Terminateプロセスの中断は、現在その状態にあるインスタンスにのみ適用されます。InService他の状態のインスタンス (Pendingスタンバイ状態から正常に再開できないインスタンスなど) の終了を防ぐことはできません。

  • AWS CLI または SDK を使用して Auto Scaling RemoveFromLoadBalancerLowPriority グループを記述する呼び出しでこのプロセスが存在する場合は無視できます。このプロセスは非推奨で後方互換性のためにのみ保持されています。

プロセスを中断する

Auto Scaling グループのプロセスを一時停止するには、以下の方法のいずれかを使用します。

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

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

    ページの下部にスプリットペインが開きます。

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

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

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

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

プロセスを再開します。

Auto Scaling グループの一時停止中のプロセスを再開するには、以下の方法のいずれかを使用します。

Console
停止されたプロセスを再開するには
  1. https://console.aws.amazon.com/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

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

    ページの下部にスプリットペインが開きます。

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

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

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

AWS CLI

中断したプロセスを再開するには、次の 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

中断されたプロセスが他のプロセスに与える影響

以下のセクションでは、さまざまなプロセスが個別に中断された場合に何が起こるかを説明します。

Launchは中断されています。

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

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

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

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

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

Terminate中断されている

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

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

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

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

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

AddToLoadBalancer中断されている

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

AlarmNotification中断されている

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

AZRebalanceは一時停止されています。

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

HealthCheck中断されている

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

InstanceRefresh中断されている

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

ReplaceUnhealthy中断されている

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

ScheduledActions中断されている

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

追加の考慮事項

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

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

  • スポットインスタンスの中断Terminate が停止されており、Auto Scaling グループにスポットインスタンスがある場合は、スポット容量が利用できなくなった場合でもスポットインスタンスを終了できます。Launch が中断されている間、Amazon EC2 Auto Scaling は、別のスポットインスタンスプール、または同じスポットインスタンスプール (再度利用可能になったとき) から代替インスタンスを起動できません。

  • キャパシティのリバランシング — 停止状態で、キャパシティリバランスを使用してスポットインスタンスの中断を処理しても、スポット容量が利用できなくなった場合でも、Amazon EC2 スポットサービスはインスタンスを終了できます。TerminateLaunch が中断される場合、Amazon EC2 Auto Scaling は、別のスポットインスタンスプール、または同じスポットインスタンスプール (再度利用可能になったとき) から代替インスタンスを起動できません。

  • インスタンスのアタッチとデタッチ — 一時停止中の場合Launch、Auto Scaling グループにアタッチされているインスタンスをデタッチできますが、Launch一時停止されている間は、新しいインスタンスをグループにアタッチすることはできません。Terminate

  • スタンバイインスタンスTerminate が停止しているときはLaunchStandbyインスタンスをその状態にすることはできますが、Launch停止されている間は、Standbyその状態のインスタンスを稼働状態に戻すことはできません。