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

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

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

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

考慮事項

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

  • 交換されたインスタンスの数が、チェックポイントに対して定義されているしきい値のパーセンテージに達すると、チェックポイントに到達します。置換されるインスタンスの割合は、しきい値の割合以上にすることができますが、以下にすることはできません。

  • チェックポイントに到達すると、インスタンスのウォームアップが完了するまで、全体の完了率は最新のステータスを表示しません。

    例えば、Auto Scaling グループにインスタンスが 10 個あるとします。チェックポイントの割合は [20,50] で、チェックポイントの遅延は 15 分、最小正常率は 80% です。グループは次の置換を実行します。

    • 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% と表示されます。

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

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

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

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

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

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

チェックポイントを使用するインスタンスの更新をスタートするには
  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. インスタンスの更新の選択が終了したら、[Start] (スタート) を選択します。

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

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

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

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

CheckpointPercentages 配列に表示される最後の値は、正常に置換する必要がある Auto Scaling グループの割合を示します。この割合のグループが正常に置換され、各インスタンスがウォームアップされて、トラフィックの配信再開の準備が整うと、オペレーションは Successful に移行します。

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

複数のチェックポイントを作成するには、次の例のスタートインスタンスの更新コマンドを使用します。この例では、最初に 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 } }
単一のチェックポイントを作成するには

単一のチェックポイントを作成するには、次の例のスタートインスタンスの更新コマンドを使用します。この例では、最初に 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 } }