インスタンスの更新に基づいて Auto Scaling インスタンスを置き換える
インスタンス更新を使用して、Auto Scaling グループ内のインスタンスを更新できます。インスタンスを手動でいくつか置き換える必要はありません。これは、設定の変更でインスタンスの置き換えが必要であり、Auto Scaling グループにラージ ナンバーのインスタンスがある場合に便利です。
インスタンスの更新は、新しい Amazon マシンイメージ (AMI) または新しいユーザー データスクリプトがある場合に便利です。インスタンスの更新を使用するには、まず、新しい AMI またはユーザー データスクリプトを指定する新しい起動テンプレートを作成します。次に、グループ内のインスタンスの更新をすぐに開始するために、インスタンスの更新を開始します。
インスタンスの更新は、Auto Scaling グループを起動設定から起動テンプレートに移行する場合にも便利です。まず、起動設定を新しい起動テンプレートにコピーします。次に、グループ内のインスタンスの更新をすぐに開始するために、必要な設定の一部として起動テンプレートを指定するインスタンスの更新を開始します。起動テンプレートの移行については、「起動テンプレートに移行する」を参照してください。
内容
使用方法
Auto Scaling グループを新しい起動テンプレートで更新するには、通常、次のアクションを実行します。
-
Auto Scaling グループの新しい起動テンプレートを作成します。詳細については、「Auto Scaling グループの起動テンプレートを作成する」を参照してください。
-
最小の正常なパーセンテージ、オプションのチェックポイント、および必要に応じて他の設定を構成し、起動テンプレートを含む必要な設定を指定して、インスタンスの更新を開始します。希望の設定は、オプションで混合インスタンス・ポリシーが適用される。
-
Amazon EC2 Auto Scaling は、インスタンスのローリング置換の実行を開始します。一連のインスタンスをサービスから外し、それらを終了してから、新しい希望の設定で一連のインスタンスを起動します。次に、インスタンスがヘルスチェックに合格し、ウォームアップが完了するまで待機してから、他のインスタンスの置き換えに移行します。
-
グループの一定割合が置換されると、チェックポイントに到達します。チェックポイントがあると、Amazon EC2 Auto Scaling はインスタンスの置き換えを一時的に停止して通知を送信します。次に、指定した時間のみ待機してから続行します。通知を受け取ったら、新しいインスタンスが期待どおりに動作していることを確認できます。
-
インスタンスの更新が成功すると、Auto Scaling グループの設定は、オペレーションの開始時に指定した起動テンプレートで自動的に更新されます。
主要概念と用語
開始する前に、以下の インスタンスの更新の主要概念と用語を理解してください。
- 最小正常率
-
インスタンスの更新の開始のパートとして、常に維持する最小正常率を指定します。これは、インスタンスの更新中にヘルスチェックに合格する必要がある Auto Scaling グループのキャパシティーであり、更新を続行できるようにします。例えば、最小正常率が 90% の場合、終了して置き換えられるキャパシティの割合は 10% になります。新しいインスタンスがヘルスチェックに合格しなかった場合、Amazon EC2 Auto Scaling が終了してインスタンスを置き換えます。正常なインスタンスを起動できない場合、インスタンスの更新は最終的に失敗し、グループの残りの 90% はそのままになります。新しいインスタンスが正常に稼働してウォームアップ期間が終了した場合、Amazon EC2 Auto Scaling は他のインスタンスの置き換えを続行できます。
インスタンスの更新では、インスタンスを 1 つずつ、複数ずつ、またはすべてを一度に置き換えることができます。インスタンスを 1 つずつ置き換えるには、最小正常率を 100% に設定します。すべてを一度に置き換えるには、最小正常率を 0% に設定します。
Amazon EC2 Auto Scaling は、Auto Scaling グループが使用するヘルスチェックのステータスに基づいてインスタンスが正常かどうかを判断します。詳細については、「Auto Scaling インスタンスのヘルスチェック」を参照してください。Amazon EC2 Auto Scaling がインスタンスの正常性の問題をできるだけ早く検出できるようにするには、グループのヘルスチェックの猶予期間をあまり長く設定しないでください。詳細については、「Auto Scaling グループにヘルスチェックの猶予期間を設定する」を参照してください。
- インスタンスのウォームアップ
-
重要
デフォルトのインスタンスのウォームアップを使用し、Auto Scaling グループのウォームアップ期間を定義します。デフォルトのインスタンスのウォームアップをオーバーライドする必要がある場合にのみ、インスタンスの更新時にインスタンスのウォームアップを指定してください。インスタンスのウォームアップはデフォルトのインスタンスのウォームアップと同じように機能するため、インスタンスのウォームアップにも同じスケーリングに関する考慮事項が適用されます。詳細については、「Auto Scaling グループに対するインスタンスのデフォルトウォームアップを設定する」を参照してください。
インスタンスのウォームアップとは、新しいインスタンスの状態が
InService
に変更されてから、トラフィックを受信できるようになるまでの期間です。インスタンスの更新中、インスタンスがヘルスチェックに合格した場合、新しく起動されたインスタンスが正常であると判断した後、Amazon EC2 Auto Scaling はすぐに次のインスタンスの置き換えに進みません。ウォームアップ期間を待機してから、次のインスタンスの置き換えに進みます。これは、アプリケーションがトラフィックの処理を開始する前のアプリケーション自体の初期化に時間がかかるという場合に役立ちます。ライフサイクルフックを使用して新しいインスタンスの使用の準備を行う場合、ウォームアップ期間の値を減らすことができます。詳細については、「Amazon EC2 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 は、チェックポイントごとにイベントを発行します。したがって、EventBridge ルールを追加し、チェックポイントに到達したときに Amazon SNS などのターゲットにイベントを送信して通知できます。チェックポイントに到達した後で、デプロイを検証する機会があります。問題が特定された場合、インスタンスの更新をキャンセルまたはロールバックできます。更新プログラムを段階的にデプロイできることは、チェックポイントのキーの利点です。チェックポイントを使用しない場合、ローリング置換は継続的に実行されます。
重要
インスタンスの更新を開始するときに設定できるすべてのデフォルト設定の詳細については、「インスタンスの更新のデフォルト値について説明する」を参照してください。
インスタンスタイプの互換性
インスタンスタイプを変更する前に、起動テンプレートで動作することを確認することをお勧めします。これにより、指定した AMI との互換性を確認できます。例えば、準仮想化 (PV) AMI から元のインスタンスを起動したが、ハードウェア仮想マシン (HVM) AMI でのみサポートされている現行世代のインスタンスタイプに変更したいとします。この場合、起動テンプレートで HVM AMI を使用する必要があります。
インスタンスを起動せずにインスタンスタイプの互換性を確認するには、次の例で示すように、「run-instances」コマンドを --dry-run
オプションとともに使用します。
aws ec2 run-instances --launch-template LaunchTemplateName=
my-template
,Version='1
' --dry-run
互換性の判断方法については、「Linux インスタンス用 Amazon EC2 ユーザーガイド」の「インスタンスタイプ変更の互換性」を参照してください。
制限事項
-
インスタンスが起動前に終了する: Auto Scaling グループにインスタンスが 1 つしかない場合、インスタンスの更新を開始すると停止する場合があります。これは、Amazon EC2 Auto Scaling は 1 つのインスタンスを終了してから、新しいインスタンスを起動するためです。
-
合計持続時間: インスタンスの更新がインスタンスをアクティブに置き換えることができる最大時間は、14 日間です。
-
加重グループ固有の動作の違い: 混合のインスタンスグループがグループの必要キャパシティ以上のインスタンス分量に設定されている場合、Amazon EC2 Auto Scaling はすべての
InService
インスタンスを一度に置き換えることがあります。このような状況を回避するには、Amazon EC2 Auto Scaling のインスタンスの重み付けを設定する トピックの推奨事項に従ってください。Auto Scaling グループで分量を使用するとき、最大の分量よりも大きい必要キャパシティを指定します。 -
1 時間のタイムアウト: インスタンスの更新がスタンバイ状態またはスケールインから保護されているインスタンスを置き換えるために待機しているため、置き換えが続行できない、あるいは新しいインスタンスがヘルスチェックに合格しない場合、Amazon EC2 Auto Scaling は再試行を 1 時間続行します。加えて、問題の解決に役立つステータスメッセージが表示されます。1 時間経っても問題が解決しない場合は、オペレーションは失敗となります。1 時的な問題が発生した場合に、回復する時間を与えることを意図しています。