Auto Scaling グループでのインスタンスの更新の仕組み - Amazon EC2 Auto Scaling

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

Auto Scaling グループでのインスタンスの更新の仕組み

このトピックでは、インスタンスの更新がどのように機能するかを説明し、インスタンスを効果的に活用するための基礎知識について紹介します。

仕組み

Auto Scaling グループのインスタンスを更新するには、アプリケーションの最新バージョンと、実行するその他の更新を含む新しい設定を定義できます。次に、インスタンスの更新を開始し、その設定に基づいて既存のインスタンスを新しいインスタンスに置き換えます。

インスタンスの更新を実行するには:

  1. 新しい起動テンプレートを作成するか、新しい Amazon マシンイメージ (AMI) などの必要な設定変更で既存のテンプレートを更新します。詳細については、「Auto Scaling グループの起動テンプレートを作成する」を参照してください。

  2. Amazon EC2 Auto Scaling コンソール AWS CLI、または SDK を使用してインスタンスの更新を開始します。

    • 作成した新しい起動テンプレートまたは起動テンプレートのバージョンを指定します。これは、新しいインスタンスを起動するために使用されます。

    • 適切な最小正常率と最大正常率を設定します。この設定により、同時に置き換えられるインスタンスの数と、古いインスタンスを終了する前に新しいインスタンスを起動するかどうかが制御されます。

    • 必要に応じて、以下の設定を行います。

      • チェックポイント – 一定割合のインスタンスが置き換えられた後、インスタンスの更新を一時停止して、進行状況を確認します。

      • ベイク時間 — インスタンスの更新が完了と見なされる前に、インスタンスの更新の終了時に一時停止してインスタンスの状態を検証します。

      • スキップマッチング – 古いインスタンスを新しい設定と比較し、一致しないインスタンスのみを置き換えます。コンソールからインスタンスの更新を開始すると、スキップマッチングはデフォルトで有効になります。

      • 複数のインスタンスタイプ – 希望する設定の一部として、新規または更新された混合インスタンスポリシーを適用します。

インスタンスの更新が開始されると、Amazon EC2 Auto Scaling は次の処理を行います。

  • 最小正常率および最大正常率に基づいて、バッチ内のインスタンスを置き換えます。

  • 最小正常率が 100% に設定されている場合、古いインスタンスを終了する前に新しいインスタンスを起動します。これにより、希望するキャパシティが常に維持されます。

  • インスタンスのヘルスステータスを確認し、ウォームアップ時間を確保してから、残りのインスタンスを置き換えます。

  • 異常が見つかったインスタンスを終了して置き換えます。

  • インスタンスの更新が成功すると、新しい設定変更で Auto Scaling グループ設定が自動的に更新されます。

  • ウォーム プール内のインスタンスの前に、InService インスタンスを置き換えます。

次のフロー図は、最小正常率を 100% に設定した場合の、終了前の起動動作を示しています。

最小正常率が 100% に設定されている場合のインスタンスの更新の仕組みを示す図。
注記

インスタンス更新の最小正常率と最大正常パーセンテージは、インスタンスメンテナンスポリシーを設定していない場合、または既存のポリシーを上書きする必要がある場合のみ指定する必要があります。詳細については、「インスタンスメンテナンスポリシー」を参照してください。

同様に、インスタンス更新のインスタンスウォームアップ期間を指定する必要があるのは、デフォルトのウォームアップを有効にしていない場合、またはデフォルトを上書きする必要がある場合のみです。詳細については、「Auto Scaling グループに対するインスタンスのデフォルトウォームアップを設定する」を参照してください。

重要な概念

開始する前に、以下の インスタンス更新の主要概念を理解してください。

最小正常率

最小正常率は、更新を続行できるように、インスタンスの更新中に稼働状態を維持し、正常な状態で使用できる状態に維持する必要があるキャパシティの割合です。例えば、最小正常率が 90% で、最大正常率が 100% の場合、キャパシティの 10% が一度に置き換えられます。新しいインスタンスがヘルスチェックに合格しない場合、Amazon EC2 Auto Scaling はそれらを終了して置き換えます。インスタンスの更新で正常なインスタンスを起動できない場合、最終的に失敗し、グループの残りの 90% はそのままになります。新しいインスタンスが正常で、ウォームアップ期間が終了した場合、Amazon EC2 Auto Scaling は他のインスタンスを引き続き置き換えることができます。

インスタンスの更新では、インスタンスを 1 つずつ、複数ずつ、またはすべてを一度に置き換えることができます。一度に 1 つのインスタンスを置き換えるには、最小正常率と最大正常率の両方を 100% に設定します。この変更により、終了する前にインスタンスの更新の動作が起動するように変更され、グループのキャパシティが希望するキャパシティを下回ることが防止されます。すべてのインスタンスを一度に置き換えるには、最小正常率を 0% に設定します。

最大正常率

最大正常率は、インスタンスを置き換えるときに Auto Scaling グループが増加できる、適切なキャパシティの割合です。最小と最大の差分は 100 を超えることはできません。範囲を大きくすると、同時に置き換えることができるインスタンスの数が増えます。

インスタンスのウォームアップ

インスタンスのウォームアップとは、新しいインスタンスの状態が InService に変更されてから、初期化が完了したとみなされるまでの期間です。インスタンスの更新中にインスタンスがヘルスチェックに合格した場合、Amazon EC2 Auto Scaling は、新しく起動されたインスタンスが正常であると判断した後、すぐに次のインスタンスの置き換えに移行しません。ウォームアップ期間を待機してから、次のインスタンスの置き換えに進みます。これは、アプリケーションがリクエストに応答するまでにまだ初期化時間が必要な場合に役立ちます。

インスタンスのウォームアップは、デフォルトのインスタンスのウォームアップと同じように機能します。したがって、同じスケーリングに関する考慮事項が適用されます。詳細については、「Auto Scaling グループに対するインスタンスのデフォルトウォームアップを設定する」を参照してください。

必要な設定

必要な設定は、Amazon EC2 Auto Scaling が Auto Scaling グループ全体にデプロイする新しい設定です。例えば、インスタンスに新しい起動テンプレートおよび新しいインスタンスタイプを指定できます。インスタンスの更新中、Amazon EC2 Auto Scaling は Auto Scaling グループを希望の設定に更新します。インスタンスの更新中にスケールアウトイベントが発生した場合、Amazon EC2 Auto Scaling は、グループの現在の設定ではなく、必要な設定で新しいインスタンスを起動します。インスタンスの更新が成功すると、Amazon EC2 Auto Scaling は Auto Scaling グループ設定を更新して、インスタンスの更新の一部として指定した新しい必要な設定を反映します。

スキップマッチング

スキップマッチングは、Amazon EC2 Auto Scaling に、すでに最新の更新があるインスタンスを無視するように指示します。これにより、必要以上のインスタンスを置き換えることはありません。これは、Auto Scaling グループが特定バージョンの起動テンプレートを使用し、異なるバージョンを使用するインスタンスのみを置き換えることを確認したいときに役立ちます。

チェックポイント

チェックポイントとは、インスタンスの更新が指定した時間のみ一時停止する時点のことです。インスタンスの更新には、複数のチェックポイントを含めることができます。Amazon EC2 Auto Scaling は、チェックポイントごとにイベントを発行します。したがって、チェックポイントに達したときに通知されるように、Amazon EventBridge などのターゲットにイベントを送信する SNS ルールを追加できます。チェックポイントに到達した後で、デプロイを検証する機会があります。問題が特定された場合、インスタンスの更新をキャンセルまたはロールバックできます。更新プログラムを段階的にデプロイできることは、チェックポイントのキーの利点です。チェックポイントを使用しない場合、ローリング置換は継続的に実行されます。

インスタンスの更新を開始するときに設定できるすべてのデフォルト設定の詳細については、「インスタンスの更新のデフォルト値について説明する」を参照してください。

ヘルスチェックの猶予期間

Amazon EC2 Auto Scaling は、Auto Scaling グループが使用するヘルスチェックのステータスに基づいて、インスタンスが正常かどうかを決定します。詳細については、「Auto Scaling グループでのインスタンスのヘルスチェック」を参照してください。

これらのヘルスチェックをできるだけ早く開始するには、グループのヘルスチェック猶予期間をあまり長く設定しないでください。ただし、Elastic Load Balancing ヘルスチェックがターゲットがリクエストを処理できるかどうかを判断するのに十分な長さに設定します。詳細については、「Auto Scaling グループにヘルスチェックの猶予期間を設定する」を参照してください。

インスタンスタイプの互換性

インスタンスタイプを変更する前に、起動テンプレートで動作することを確認することをお勧めします。これにより、指定した AMI との互換性が確認されます。例えば、準仮想化 (PV) AMI から元のインスタンスを起動したが、ハードウェア仮想マシン (HVM) AMI でのみサポートされている現行世代のインスタンスタイプに変更するとします。この場合、起動テンプレートで AMIHVM を使用する必要があります。

インスタンスを起動せずにインスタンスタイプの互換性を確認するには、次の例で示すように、「run-instances」コマンドを --dry-run オプションとともに使用します。

aws ec2 run-instances --launch-template LaunchTemplateName=my-template,Version='1' --dry-run

互換性の決定方法については、「Amazon EC2 ユーザーガイド」の「インスタンスタイプを変更するための互換性」を参照してください。

制限

  • 合計持続時間: インスタンスの更新がインスタンスをアクティブに置き換えることができる最大時間は、14 日間です。

  • 加重グループ固有の動作の違い: 混合インスタンスグループが、グループの希望する容量以上のインスタンスの重みで設定されている場合、Amazon EC2 Auto Scaling はすべてのInServiceインスタンスを一度に置き換えることがあります。このような状況を回避するには、インスタンスの重みを使用するように Auto Scaling グループを設定する トピックの推奨事項に従ってください。Auto Scaling グループで分量を使用するとき、最大の分量よりも大きい必要キャパシティを指定します。

  • 1 時間のタイムアウト: スタンバイ状態またはスケールインから保護されているインスタンスを置き換えるのを待っているためにインスタンスの更新が引き続き置換できない場合、または新しいインスタンスがヘルスチェックに合格しない場合、Amazon EC2 Auto Scaling は 1 時間再試行し続けます。加えて、問題の解決に役立つステータスメッセージが表示されます。1 時間経っても問題が解決しない場合は、オペレーションは失敗となります。1 時的な問題が発生した場合に、回復する時間を与えることを意図しています。

  • ユーザーデータによるコードのデプロイ: スキップマッチングは、ユーザーデータスクリプトからデプロイされたコードの変更をチェックしません。ユーザーデータを使用して新しいコードを取得し、これらの更新を新しいインスタンスにインストールする場合は、起動テンプレートのバージョン更新がない場合でも、すべてのインスタンスが最新のコードを受信できるように、スキップマッチングをオフにすることをお勧めします。

  • 更新制限 : 目的の設定でインスタンスの更新が実行中に Auto Scaling グループの起動テンプレート、起動設定、または混合インスタンスポリシーを更新しようとすると、これらのリクエストは失敗し、次の検証エラーが発生します。 An active instance refresh with a desired configuration exists. All configuration options derived from the desired configuration are not available for update while the instance refresh is active.