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% に設定します。これにより、終了する前にインスタンスの更新の動作が起動するように変更され、グループの容量が希望する容量の 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 SNS などのターゲットにイベントを送信する EventBridge ルールを追加できます。チェックポイントに到達した後で、デプロイを検証する機会があります。問題が特定された場合、インスタンスの更新をキャンセルまたはロールバックできます。更新プログラムを段階的にデプロイできることは、チェックポイントのキーの利点です。チェックポイントを使用しない場合、ローリング置換は継続的に実行されます。

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

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

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

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

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

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

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

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

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