Amazon EC2 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 では、基本プロセスタイプとして LaunchTerminate の 2 つがあります。Launch プロセスは新しい Amazon EC2 インスタンスを Auto Scaling グループに追加して容量を増やし、Terminate プロセスは Amazon EC2 インスタンスをグループから削除して容量を減らします。

Amazon EC2 Auto Scaling の他のプロセスタイプは、特定のスケーリング機能に関連しています。

  • AddToLoadBalancer— インスタンスが起動されたときに、アタッチされたロードバランサーまたはターゲットグループにインスタンスを追加します。

  • AlarmNotification — グループのスケーリングポリシーに関連付けられている CloudWatch アラームから通知を受け取ります。

  • AZRebalance — グループのバランスがとれなくなった場合 (たとえば、以前は使用できなかったアベイラビリティーゾーンが正常な状態に戻った場合)、グループに指定されたすべてのアベイラビリティーゾーン間で EC2 インスタンスを均等に分散させてバランスをとります。詳細については、「アクティビティの再分散」を参照してください。

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

  • ReplaceUnhealthy — 異常とマークされたインスタンスを終了してから、代わりの新しいインスタンスを作成します。

  • ScheduledActions — お客様が作成したか、または AWS Auto Scaling の予測スケーリング機能によって作成された、スケジュールされたスケーリングアクションを実行します。

中断の選択

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

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

警告

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

Terminate

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

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

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

Launch

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

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

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

AddToLoadBalancer

  • Amazon EC2 Auto Scaling はインスタンスを起動しますが、それらのインスタンスをロードバランサーやターゲットグループに追加しません。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 が中断されている間に影響される可能性のある外部オペレーションがいくつかあります。

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

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

    注記

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

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

スケーリングプロセスを中断および再開する (コンソール)

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

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

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインの [Auto Scaling] で、[Auto Scaling グループ] を選択します。

  3. Auto Scaling グループを選択します。

  4. [Details] タブで、[Edit] を選択します。

  5. [Suspended Processes] で、停止するプロセスを選択します。

    
                            停止されたプロセスのリスト。

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

    
                            停止されたプロセスのリスト。
  6. [Save (保存)] を選択します。

スケーリングプロセスを中断および再開する (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