インスタンスの更新にチェックポイントを追加する - Amazon EC2 Auto Scaling

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

インスタンスの更新にチェックポイントを追加する

インスタンスの更新を使用するとき、段階的にインスタンスを置き換え、進行しながらインスタンスに検証を実行できます。段階的な置き換えを行うには、チェックポイントを追加します。チェックポイントは、インスタンスの更新が一時停止する時点です。チェックポイントを使用すると、Auto Scaling グループの更新の選択方法をより詳細に管理できます。これにより、アプリケーションが確実かつ予測可能な方法で機能することを確認できます。

仕組み

インスタンスの更新を開始するときは、Auto Scaling グループ内のインスタンスの合計数に対するチェックポイントの割合を指定します。これらのチェックポイントは、チェックポイントに到達する前に新しいインスタンスである必要がある Auto Scaling グループ内のインスタンスの最小パーセンテージを示します。例えば、チェックポイントが の場合[20, 50, 100]、最初のチェックポイントはインスタンスの 20% が新しいときに、2 番目のチェックポイントは 50% が新しいときに、最後のチェックポイントはすべてのインスタンスが新しいときに到達します。

Amazon EC2 Auto Scaling は、グループの最小正常率を維持しながら、指定されたチェックポイントの割合を尊重してインスタンスの置換をペース調整します。チェックポイントのパーセンテージを満たすために、Amazon EC2 Auto Scaling は、最小の正常なパーセンテージで許容されるよりも少ない数を置き換えることがありますが、それを超える数を置き換えることは決してありません。

10 個のインスタンスがある次の Auto Scaling グループについて考えてみましょう。チェックポイントの割合は で[20,50,100]、最小正常率は 80%、最大正常率は 100% です。最小の正常なパーセンテージを維持するために、一度に置き換えることができるインスタンスは 2 つだけです。次の図は、チェックポイントに達する前にインスタンスを置き換えるプロセスの概要を示しています。

この図は、チェックポイントがインスタンス更新のフローにどのような影響を及ぼすかを示しています。

上記の例では、 が開始する新しいインスタンスごとにインスタンスのウォームアップ期間があります。インスタンスを待機状態にして、起動または終了時にカスタムアクションを実行するライフサイクルフックを使用することもできます。

Amazon EC2 Auto Scaling は、100% 完全なチェックポイントを除き、チェックポイントごとにイベントを発行します。 EventBridge ルールを追加して、Amazon SNS などのターゲットにイベントを送信できます。これにより、必要な検証を実行できるタイミングが通知されます。詳細については、「 EventBridge インスタンス更新イベントのルールを作成する」を参照してください。

考慮事項

チェックポイントを使用する際は、次の考慮事項に注意してください。

  • チェックポイントは割合に基づいているため、置換されるインスタンスの数はグループサイズに応じて変化します。スケールアウト アクティビティが発生し、グループサイズが大きくなると、進行中のオペレーションがチェックポイントに再び到達する可能性があります。この場合、Amazon EC2 Auto Scaling は別の通知を送信し、チェックポイント間の待機時間を繰り返してから続行します。

  • 特定の状況下では、チェックポイントをスキップすることができます。例えば、Auto Scaling グループに 2 個のインスタンスがあり、チェックポイントの割合が [10,40,100] だとします。最初のインスタンスが置換された後、Amazon EC2 Auto Scaling は、グループの 50% が置換されたと計算します。50% は最初の 2 つのチェックポイントよりも高いため、最初のチェックポイント (10) をスキップし、2 番目のチェックポイント (40) の通知を送信します。

  • オペレーションをキャンセルすると、それ以降の置換は行われません。オペレーションをキャンセルするか、最後のチェックポイントに到達する前に失敗した場合、すでに置き換えられたインスタンスは前の設定にロールバックされません。

  • 部分更新の場合、オペレーションを再実行するとき、Amazon EC2 Auto Scaling は最後のチェックポイントから再開せず、古いインスタンスのみが置換されても停止しません。ただし、新しいインスタンスをターゲットにする前に、まず古いインスタンスを置き換え対象とします。

  • チェックポイントのパーセンテージがグループ内のインスタンス数に対して低すぎる場合、実際の完了率はそのチェックポイントのパーセンテージよりも高い可能性があります。例えば、チェックポイントのパーセンテージが 20 % で、グループに 4 つのインスタンスがあるとします。Amazon EC2 Auto Scaling が 4 つのインスタンスのうち 1 つを置き換える場合、実際に置き換えられるパーセンテージ (25 %) はチェックポイントのパーセンテージ (20 %) よりも高くなります。

  • チェックポイントに達すると、インスタンスのウォームアップが完了するまで、表示される全体の完了率は更新されません。例えば、チェックポイントの割合は 15 分の[20,50]チェックポイント遅延で、最小正常率は 80% です。Auto Scaling グループには 10 個のインスタンスがあり、次の置き換えを行います。

    • 0:00: 2 個の古いインスタンスが新しいインスタンスに置き換えられます。

    • 0:10: 2 個の新しいインスタンスがウォームアップを完了します。

    • 0:25: 2 個の古いインスタンスが新しいインスタンスに置き換えられます。(最小正常率を維持するために、2 個のインスタンスのみが置換されます)。

    • 0:35: 2 個の新しいインスタンスがウォームアップを完了します。

    • 0:35: 1 個の古いインスタンスが新しいインスタンスに置き換えられます。

    • 0:45: 1 個の新しいインスタンスがウォームアップを完了します。

    0:35 で、オペレーションは新しいインスタンスの起動を停止します。新しいインスタンスがウォームアップされていないため、完了率は、完了した置換の数 (50%) を正確に反映していません。新しいインスタンスが 0:45 にウォームアップ期間を完了すると、完了率は 50% と表示されます。

チェックポイントを有効にする (コンソール)

インスタンスの更新を開始する前にチェックポイントを有効にして、増分または段階的なアプローチを使用し、インスタンスを置換することができます。これにより、検証にさらに時間がかかります。

チェックポイントを使用するインスタンスの更新をスタートするには
  1. https://console.aws.amazon.com/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

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

    Auto Scaling グループページの下部に分割ペインが開きます。

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

  4. [Start instance refresh] (インスタンスの更新をスタートする) ページで、[Minimum healthy percentage] (最小正常率) および [Instance warmup] (インスタンスのウォームアップ) に値を入力します。

  5. [Enable checkpoints] (チェックポイントを有効にする) チェックボックスをオンにします。

    これにより、最初のチェックポイントのしきい値をパーセンテージで定義できるボックスが表示されます。

  6. [Proceed until ____ % of the group is refreshed] (グループの ____% が更新されるまで続行する) に数値 (1~100) を入力します。これにより、最初のチェックポイントの割合が設定されます。

  7. 別のチェックポイントを追加するには、[Add checkpoint (チェックポイントの追加)]を選択し、次のチェックポイントの割合を定義します。

  8. チェックポイントに達した後、Amazon EC2 Auto Scaling が待機する時間を指定するには、[Wait for 1 hour between checkpoints (チェックポイント間で待機)]のフィールドを更新します。時間単位は、時、分、秒のいずれかです。

  9. インスタンスの更新の選択が終了したら、[インスタンスの更新を開始する] を選択します。

チェックポイントを有効にする (AWS CLI)

を使用してチェックポイントを有効にしてインスタンスの更新を開始するには AWS CLI、次のパラメータを定義する設定ファイルが必要です。

  • CheckpointPercentages: 置き換えるインスタンスの割合のしきい値を指定します。これらのしきい値は、チェックポイントを提供します。置換およびウォームアップされたインスタンスの割合が指定されたしきい値の 1 つに達すると、オペレーションは指定された期間待機します。待機時間をCheckpointDelay秒単位で指定します。指定した期間が経過すると、インスタンスの更新は次のチェックポイント(該当する場合)に到達するまで続行されます。

  • CheckpointDelay: チェックポイントに到達してから続行するまでに待機する時間 (秒) を規定します。検証の実行に十分な時間を選択します。

CheckpointPercentages 配列に表示される最後の値は、正常に置換する必要がある Auto Scaling グループの割合を示します。このパーセンテージが正常に置き換えられ、各インスタンスの初期化が完了したとみなされると、オペレーションは Successful になります。

複数のチェックポイントを作成するには

複数のチェックポイントを作成するには、次のstart-instance-refreshコマンド例を使用します。この例では、最初に Auto Scaling グループの 1% を更新する、インスタンスの更新を設定します。10 分の待機後、次の 19% が更新され、さらに 10 分待機します。最後に、オペレーション終了前にグループの残りの部分が更新されます。

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

config.json の内容:

{ "AutoScalingGroupName": "my-asg", "Preferences": { "InstanceWarmup": 60, "MinHealthyPercentage": 80, "CheckpointPercentages": [1,20,100], "CheckpointDelay": 600 } }
単一のチェックポイントを作成するには

1 つのチェックポイントを作成するには、次のstart-instance-refreshコマンド例を使用します。この例では、最初に Auto Scaling グループの 20% を更新する、インスタンスの更新を設定します。10 分の待機後、オペレーション終了前にグループの残りの部分が更新されます。

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

config.json の内容:

{ "AutoScalingGroupName": "my-asg", "Preferences": { "InstanceWarmup": 60, "MinHealthyPercentage": 80, "CheckpointPercentages": [20,100], "CheckpointDelay": 600 } }
Auto Scaling グループを部分的に更新するには

Auto Scaling グループの一部のみを置き換えてから完全に停止するには、次のstart-instance-refreshコマンド例を使用します。この例では、最初に Auto Scaling グループの 1% を更新する、インスタンスの更新を設定します。10 分の待機後、オペレーション終了前に次の 19% が更新されます。

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

config.json の内容:

{ "AutoScalingGroupName": "my-asg", "Preferences": { "InstanceWarmup": 60, "MinHealthyPercentage": 80, "CheckpointPercentages": [1,20], "CheckpointDelay": 600 } }