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

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

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

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

10 個のインスタンスがある次の Auto Scaling グループについて考えてみましょう。チェックポイントのパーセンテージは [20,50,100] で、最小の正常なパーセンテージは 80 % です。最小の正常なパーセンテージを維持するために、一度に置き換えることができるインスタンスは 2 つだけです。チェックポイントのパーセンテージを満たすために、Amazon EC2 Auto Scaling は、最小の正常なパーセンテージで許容されるよりも少ない数を置き換えることがありますが、それを超える数を置き換えることは決してありません。次の図は、チェックポイントに達する前にインスタンスを置き換えるプロセスの概要を示しています。


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

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

考慮事項

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

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

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

    例えば、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. インスタンスの更新の選択が終了したら、[インスタンスの更新を開始する] を選択します。

チェックポイントを有効にする (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 } }