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

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

このトピックでは、Auto Scaling グループの 1 つ以上のプロセスを中断および再開する方法について説明します。また、Amazon EC2 Auto Scaling の中断/再開機能の使用を選択するときに考慮すべき問題についても説明しています。

重要

インスタンスのトラブルシューティングまたは再起動が必要な場合は、中断/再開機能の代わりにスタンバイ機能を使用します。詳細については、「Auto Scaling グループからインスタンスを一時的に削除する」を参照してください。インスタンスのスケールイン保護機能を使用して、自動スケールイン中に特定のインスタンスが終了しないようにします。詳細については、「インスタンスのスケールイン保護を使用する」を参照してください。

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

Amazon EC2 Auto Scaling グループ

Amazon EC2 Auto Scaling には、Launch および Terminate という主にプロセスタイプとして 2 つがあります。この Launch プロセスは、新しい Amazon EC2 インスタンスを Auto Scaling グループに追加し、キャパシティーを増やします。この Terminate プロセスにより、グループから Amazon EC2 インスタンスが削除され、キャパシティーが減少します。

Amazon EC2 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 のスケジュールされたスケーリング」を参照してください。

中断を選択する

各プロセスタイプは個別に中断および再開できます。このセクションでは、Amazon EC2 Auto Scaling に構築されたプロセスの 1 つを停止することを決定する前に考慮すべきガイダンスと動作について説明します。個々のプロセスを中断すると、他のプロセスが妨げられる可能性があることに注意してください。プロセスの中断理由によっては、複数のプロセスをまとめて中断することが必要になる場合があります。

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

警告

Launch または Terminate プロセスタイプを中断した場合、他のプロセスタイプが正しく機能しなくなることがあります。

Terminate

  • プロセスの中断中に発生したアラームまたはスケジュールされたアクションに応じて、Auto Scaling グループはスケールインされません。さらに、以下のプロセスが中断されます。

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

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

    • InstanceRefresh は、Terminate を再開するまで一時停止します。

Launch

  • プロセスの中断中に発生したアラームまたはスケジュールされたアクションに応じて、Auto Scaling グループはスケールアウトされません。AZRebalance はグループのバランスを再調整しなくなります。ReplaceUnhealthy は引き続き異常なインスタンスを終了しますが、代わりのインスタンスを起動しません。Launch を再開すると、バランスの再調整アクティビティとヘルスチェックによる置き換えは以下の方法で処理されます。

    • グループで使用されているアベイラビリティーゾーン間のバランスがとれなくなった場合や、異なるアベイラビリティーゾーンが指定された場合、AZRebalance は Auto Scaling グループのバランスを段階的に再調整します。

    • ReplaceUnhealthy は、Launch が中断されていた間に終了したインスタンスをすぐに置き換えます。

  • InstanceRefresh は、Launch を再開するまで一時停止します。

AddToLoadBalancer

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

AlarmNotification

  • CloudWatch がアラームしきい値に違反している場合、Amazon EC2 Auto Scaling はスケーリングポリシーを実行しません。AlarmNotification を中断すると、スケーリングポリシーまたは関連する CloudWatch アラームを削除することなく、グループのスケーリングポリシーによってトリガーされたスケーリングイベントを一時停止できます。AlarmNotification を再開すると、Amazon EC2 Auto Scaling はアラームしきい値に現在違反しているポリシーを処理します。

AZRebalance

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

HealthCheck

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

ReplaceUnhealthy

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

ScheduledActions

  • Amazon EC2 Auto Scaling は、中断期間中に実行される予定だったスケーリングアクションを実行しません。ScheduledActions を再開すると、Amazon EC2 Auto Scaling は実行時間をまだ過ぎていないスケジュールされたアクションのみを処理します。

起動と終了の両方を中断する

Launch および Terminate プロセスタイプを同時に中断すると、以下のようになります。

  • Auto Scaling グループはスケーリングアクティビティを開始することも、その希望するキャパシティーを維持することもできません。

  • グループで使用されているアベイラビリティーゾーン間のバランスがとれなくなった場合、Amazon EC2 Auto Scaling は Auto Scaling グループに指定されたアベイラビリティーゾーン間でインスタンスを均等に再分散させようとしません。

  • Auto Scaling グループは異常とマークされたインスタンスを置き換えることはできません。

  • インスタンスの更新機能では、インスタンスを置き換えることはできません。

Launch および Terminate プロセスタイプを再開すると、Amazon EC2 Auto Scaling はそれらのプロセスの中断中に異常とマークされたインスタンスを置き換え、グループのバランスを再調整しようとします。スケーリングアクティビティも再開されます。

追加の考慮事項

LaunchTerminate が中断されている間に影響される可能性のある外部オペレーションがいくつかあります。

  • 最大インスタンス有効期間 - Launch または Terminate が一時停止されている場合、インスタンスの最大インスタンス有効期を置き換えることはできません。

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

  • キャパシティーバランスの再調整Terminate が中断されており、スポットインスタンスの中断をプログラム的に処理するためにキャパシティーの再調整を使用している場合、Amazon EC2 スポットサービスは、使用可能なスポットキャパシティーがなくなった状態であっても、依然としてインスタンスを終了できます。Launch が中断されている場合、Amazon EC2 Auto Scaling は、異なる、または同じスポットインスタンスプールに利用可能なインスタンスが存在したとしても、そこから置き換え用のインスタンスを起動することはできません。

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

    注記

    インスタンスをデタッチした直後にインスタンスを手動で終了する場合は、代わりに terminate-instance-in-auto-scaling-group CLI コマンドを呼び出すことができます。これにより、指定したインスタンスが終了し、オプションでグループの希望するキャパシティーが調整されます。さらに、Auto Scaling グループがライフサイクルフックで使用されている場合、インスタンスの終了に指定したカスタムアクションは、インスタンスが完全に終了する前に実行されます。

  • スタンバイインスタンス - Launch の中断中、Standby 状態のインスタンスを稼働状態に戻すことはできません。インスタンスを稼働状態に戻すには、最初に Launch を再開する必要があります。

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

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

プロセスを中断および再開するには

  1. Amazon EC2 Auto Scaling コンソール (https://console.aws.amazon.com/ec2autoscaling/) を開きます。

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

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

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

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

    中断したプロセスを再開するには、[Suspended processes (中断したプロセス)] からそのプロセスを削除します。

  5. [Update] (アップデート) を選択します。

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

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

プロセスを停止するには

suspend-processes コマンドを --scaling-processes オプションで次のように使用します。

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

すべてのプロセスを停止するには

suspend-processes コマンドを次のように使用します (--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 AlarmNotification

停止されたすべてのプロセスを再開するには

resume-processes コマンドを次のように使用します (--scaling-processes オプションは省略)。

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