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

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

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

設定の変更でインスタンスの置き換えが必要であり、Auto Scaling グループに多数のインスタンスがある場合、一度に数個のインスタンスを手動で置き換えるのは難しいことがあります。インスタンスを更新すると、Auto Scaling グループのインスタンスをより簡単に更新できます。

インスタンスの更新中、Amazon EC2 Auto Scaling はインスタンスのセットをサービスから外し、それらを終了してから、新しい設定で一連のインスタンスを起動します。その後、インスタンスはローリング置換されます。ローリング更新では、新しいインスタンスが起動されると、Amazon EC2 Auto Scaling はインスタンスがヘルスチェックに合格してウォームアップを完了するまで待機してから、別のインスタンスを置き換えます。このプロセスは、すべてのインスタンスが削除され、置き換えられるまで繰り返されます。

この機能は、たとえば、新しい AMI または新しいユーザーデータを指定する新しい起動テンプレートまたは起動設定がある場合に便利です。Auto Scaling グループを更新して、新しい起動テンプレートまたは起動設定を指定するだけです。次に、インスタンスの更新を開始して、グループのインスタンスを置き換えるプロセスをすぐに開始します。

インスタンスの更新では、ヘルスチェックに基づいて、アプリケーションが正常に置き換えられたと見なすのに十分なほど正常かどうかを判断します。インスタンスの正常性を判断するために使用されるさまざまなヘルスチェックの詳細については、Auto Scaling インスタンスのHealth チェック

インスタンスの更新を開始する前に、最小正常パーセンテージを設定して、アプリケーションの中断のレベルを制御できます。アプリケーションがヘルスチェックに合格しない場合、ローリング更新プロセスは、最小ヘルスしきい値に達してから最大 60 分間待機した後、最終的に失敗します。その目的は、一時的な問題が発生した場合に回復する時間を与えることです。ローリング更新プロセスが失敗した場合、すでに置き換えられたインスタンスは以前の設定にロールバックされません。失敗したインスタンスの更新を修正するには、まず更新の失敗の原因となった根本的な問題を解決してから、別のインスタンスの更新を開始します。

新しく起動されたインスタンスが正常であると判断した後、Amazon EC2 Auto Scaling はすぐに次の置き換えに進みません。起動後に各インスタンスをウォームアップする期間を設けます。この期間はお客様が設定できます。これは、実行するのに時間がかかる設定スクリプトがある場合に役立ちます。アプリケーションの可用性を保護するには、インスタンスのウォームアップ期間に、アプリケーションの想定される起動時間 (新しいインスタンスがサービスを開始してからトラフィックを受信できるようになるまでの時間) が含まれるようにしてください。

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

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

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

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

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

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

開始する前に、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. [Start instance refresh (インスタンスの更新を開始)] ダイアログボックスで、以下の操作を行います。

    • (オプション) [Minimum healthy percentage (最小正常パーセンテージ)] で、デフォルト値 90 のままにするか、0 ~ 100% の範囲で新しい値を指定します。これは、インスタンスの更新中にオペレーションを続行するために正常に保つ必要がある Auto Scaling グループの容量であり、グループの希望する容量に対する割合で表されます。この設定を 100% まで上げると、置き換え率が一度に 1 つのインスタンスに制限されます。対照的に、この設定を 0% まで下げると、すべてのインスタンスが同時に置き換えられます。

    • (オプション) [Instance warmup (インスタンスのウォームアップ)] のデフォルトは、グループのヘルスチェックの猶予期間に指定した値です。実際のアプリケーションの起動時間を反映するように、この値を変更できます。デフォルト値は、アプリケーションの最新バージョンのごく最近の更新を反映していない場合があります。

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

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

  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)

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

AWS CLI からインスタンスの更新を開始するには、start-instance-refresh コマンドを使用します。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" }

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

以下を使用して、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 時間後も問題が解決しない場合は、オペレーションは失敗となります。

  • ロールバックなし: インスタンスの更新はいつでもキャンセルできますが、すでに置き換えられたインスタンスは前の設定にロールバックされません。