インスタンスの更新に基づく Auto Scaling インスタンスの置き換え - Amazon EC2 Auto Scaling (日本語)

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

インスタンスの更新に基づく Auto Scaling インスタンスの置き換え

インスタンス更新を使用して、Auto Scaling グループ内のインスタンスを更新できます。インスタンスを手動でいくつか置き換える必要はありません。この設定は、設定の変更でインスタンスの置き換えが必要であり、Auto Scaling グループに多数のインスタンスがある場合に便利です。

インスタンスの更新は、新しい Amazon マシンイメージ (AMI) または新しいユーザーデータスクリプトがある場合に便利です。インスタンスの更新を使用するには、まず、新しい AMI またはユーザーデータスクリプトを指定する新しい起動テンプレートを作成します。次に、インスタンスの更新を開始して、グループ内のインスタンスの更新をすぐに開始します。

インスタンスの更新を開始またはキャンセルするには、[AWS Management Consoleとすると、AWS CLI、またはSDKを使用します。

仕組み

以下のステップ例では、インスタンスの更新がどのように機能するかを示しています。

  • 希望する更新で新しい起動テンプレートを作成します。Auto Scaling グループの起動テンプレートの作成の詳細については、「」を参照してください。Auto Scaling グループに必要な起動テンプレートの作成

  • 最小正常な割合、インスタンスのウォームアップ、チェックポイントを設定し、新しい起動テンプレートを含む希望の設定を指定し、インスタンスの更新を開始します。希望の設定は、オプションで混合インスタンス・ポリシーが適用される。

  • Amazon EC2 Auto Scaling は、インスタンスのローリング置換の実行を開始します。一連のインスタンスをサービスから外し、それらを終了してから、新しい希望の設定で一連のインスタンスを起動します。次に、インスタンスがヘルスチェックに合格し、ウォームアップが完了するまで待機してから、他のインスタンスの置き換えに移行します。

  • グループの一定割合が置換されると、チェックポイントに到達します。チェックポイントがあると、Amazon EC2 Auto Scaling はインスタンスの置き換えを一時的に停止し、通知を送信し、指定した時間だけ待機してから続行します。通知を受け取ったら、新しいインスタンスが期待どおりに動作していることを確認できます。

  • インスタンスの更新が成功すると、Auto Scaling グループの設定は、オペレーションの開始時に指定した設定で自動的に更新されます。

コア概念と用語

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

最小正常パーセンテージ

インスタンスの更新の開始の一環として、常に維持する最小正常パーセンテージを指定します。これは、Auto Scaling グループのキャパシティで、ヘルスチェックをインスタンス更新中に実行し、操作を続行できるようにします。この値は、Auto Scaling グループの希望する容量に対するパーセント値 (最も近い整数値に切り上げ) で表されます。最小正常パーセンテージを 100% に設定すると、置き換え率が一度に 1 つのインスタンスに制限されます。対照的に、これを 0% に設定すると、すべてのインスタンスが同時に置き換えられます。

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

-インスタンスのウォームアップは、新しいインスタンスがサービスを開始してからトラフィックを受信できるようになるまでの期間です。インスタンスの更新中、Amazon EC2 Auto Scaling は、新しく起動されたインスタンスが正常であると判断した後、すぐに次の置き換えに進みません。指定したウォームアップ期間を待ってから、他のインスタンスの置き換えに移ります。この設定は、実行するのに時間がかかる設定スクリプトがある場合に役立ちます。

希望する構成

A希望する構成は、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 などのターゲットに送信できます。チェックポイントに到達したら、展開を検証できます。問題が特定された場合は、インスタンスの更新をキャンセルしてから、別のインスタンスの更新を開始してロールバックできます。更新プログラムを段階的に展開できることは、チェックポイントの主な利点です。チェックポイントを使用しない場合、ローリング置換は継続的に実行されます。

注記

現在、希望する設定とスキップ一致機能は、AWS CLIまたは SDK を使用します。これらの機能は、コンソールからは使用できません。

Considerations

以下に、グループが期待どおりに動作し続けるようにするために、インスタンスの更新を開始するときに考慮すべき事項を示します。

  • ウォームアップ中、新しく起動されたインスタンスは Auto Scaling グループの集計メトリクスにカウントされません。

  • Auto Scaling グループにスケーリングポリシーを追加した場合、スケーリングアクティビティは並行して実行されます。インスタンスの更新ウォームアップ期間に長い間隔を設定すると、新しく起動されたインスタンスがメトリクスに反映されるまでに時間がかかります。したがって、適切なウォームアップ期間は、Amazon EC2 Auto Scaling で古いメトリクスデータに基づくスケーリングを防ぐのに役立ちます。

  • ライフサイクルフックを Auto Scaling グループに追加した場合、ウォームアップ期間が始まるのは、ライフサイクルフックアクションが完了してインスタンスがInService状態。

  • スキップマッチングを有効にしても、混合インスタンスポリシーの起動テンプレート、起動テンプレートのバージョン、インスタンスタイプが変更されていない場合、インスタンスの更新は置換を行わずにすぐに成功します。その他の変更(スポット割り当て戦略の変更など)を行った場合、Amazon EC2 Auto Scaling は Auto Scaling グループの設定を更新して、インスタンスの更新が成功した後、新しい希望の設定を反映します。

インスタンスの更新の開始またはキャンセル (コンソール)

開始する前に、Auto Scaling グループがすでに新しい起動テンプレートまたは起動設定に関連付けられていることを確認してください。

インスタンスの更新を開始するには

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

  2. Auto Scaling グループの横にあるチェックボックスをオンにします。

    分割ペインは、[] の下部で開きます。Auto Scaling グループページで.

  3. [Instance refresh (インスタンスの更新)] タブの [Instance refreshes (インスタンスの更新)] で、[Start instance refresh (インスタンスの更新を開始)] を選択します。

  4. 更新設定] セクションで、次の操作を行います。

    1. を使用する場合最小正常パーセンテージ] で、デフォルト値90または、0 ~ 100% の範囲で新しい値を指定します。

    2. を使用する場合インスタンスのウォームアップに、新しく起動されたインスタンスが設定され、使用できるようになるまでの秒数を指定します。デフォルトでは、グループに定義されたヘルスチェックの猶予期間に値が使用されます。

    3. チェックポイントを有効にするかどうかを選択します。詳細については、「」を参照してください。インスタンスの更新チェックポイントのプリファレンスの設定

  5. [Start (開始)] を選択します。

インスタンスの更新のステータスを確認するには

  1. [Instance refresh (インスタンスの更新)] タブの [Instance refreshes (インスタンスの更新)] で、[Status (ステータス)] 列を確認してリクエストのステータスを決定できます。初期化中、オペレーションは Pending ステータスになります。その後、ステータスはすぐに InProgress に変わります。すべてのインスタンスが更新されると、ステータスが Successful に変わります。

  2. [Activity (アクティビティ)] タブの [Activity history (アクティビティ履歴)] では、インスタンスの更新が開始されると、インスタンスの終了時、インスタンスの起動時に、それぞれ別のエントリが表示されます。[Description (説明)] 列で、インスタンス ID を確認できます。

  3. [インスタンス管理] タブの [インスタンス] で、インスタンスが正常に起動したことを確認できます。当初、インスタンスの状態は Pending です。インスタンスがトラフィックを受信できるようになったら、そのステータスは InService です。[Health Status] 列には、インスタンスのヘルスチェックの結果が表示されます。

インスタンスの更新をキャンセルするには

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

  2. Auto Scaling グループの横にあるチェックボックスをオンにします。

  3. [Instance refresh (インスタンスの更新)] タブの [Instance refreshes (インスタンスの更新)] で、[Cancel instance refresh (インスタンスの更新をキャンセル)] を選択します。

  4. 確認を求められたら、[確認] を選択します。

インスタンスの更新の開始またはキャンセル (AWS CLI)

インスタンスの更新を開始するには

以下のを使用します。start-instance-refreshコマンドを使用して、インスタンスの更新を開始するには、AWS CLI。JSON 設定ファイルでは、変更する任意の設定を指定できます。設定ファイルを参照するときは、次の例に示すように、ファイルのパスと名前を指定します。

aws autoscaling start-instance-refresh --cli-input-json file://config.json

config.json の内容。

{ "AutoScalingGroupName": "my-asg", "Preferences": { "InstanceWarmup": 400, "MinHealthyPercentage": 50 } }

または、次のコマンドを実行して、オプションの設定なしでインスタンスの更新を開始することもできます。設定が指定されない場合は、InstanceWarmup および MinHealthyPercentage にデフォルト値が使用されます。

aws autoscaling start-instance-refresh --auto-scaling-group-name my-asg

出力例。

{ "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b" }
注記

希望する設定を指定し、AWS CLIについては、追加のstart-instance-refreshの例スキップマッチングを使用して Auto Scaling グループを更新する

インスタンスの更新のステータスを確認するには

以下を使用して、Auto Scaling グループのインスタンスの更新を表示します。describe-instance-refreshesコマンド。

aws autoscaling describe-instance-refreshes --auto-scaling-group-name my-asg

出力例。

{ "InstanceRefreshes": [ { "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b", "AutoScalingGroupName": "my-asg", "Status": "InProgress", "StartTime": "2020-06-02T18:11:27Z", "PercentageComplete": 0, "InstancesToUpdate": 5 }, { "InstanceRefreshId": "dd7728d0-5bc4-4575-96a3-1b2c52bf8bb1", "AutoScalingGroupName": "my-asg", "Status": "Successful", "StartTime": "2020-06-02T16:43:19Z", "EndTime": "2020-06-02T16:53:37Z", "PercentageComplete": 100, "InstancesToUpdate": 0 } ] }

インスタンスの更新をキャンセルするには

インスタンスの更新をキャンセルするには、cancel-instance-refreshからAWS CLIで、以下の例に示すように、Auto Scaling グループの名前を指定します。

aws autoscaling cancel-instance-refresh --auto-scaling-group-name my-asg

出力例。

{ "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b" }

Limitations

  • インスタンスは起動前に終了しました: Auto Scaling グループにインスタンスが 1 つしかない場合、インスタンスの更新を開始すると停止することがあります。これは、Amazon EC2 Auto Scaling はインスタンスを終了してから新しいインスタンスを起動するためです。

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

  • 置き換えられていないインスタンス: インスタンスがスタンバイ状態にあるか、スケールインから保護されている場合は、置き換えることはできません。Amazon EC2 Auto Scaling が、置き換えることができないインスタンスを検出した場合、そのインスタンスは引き続き他のインスタンスを置き換えます。

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

  • ロールバックなし: インスタンスの更新はいつでもキャンセルできますが、すでに置き換えられたインスタンスは前の設定にロールバックされません。インスタンスの更新が失敗した場合、すでに置き換えられたインスタンスは前の設定にロールバックされません。失敗したインスタンスの更新を修正するには、まず更新の失敗の原因となった根本的な問題を解決してから、別のインスタンスの更新を開始します。