Amazon ECS が終了するインスタンスの制御
重要
クラスター自動スケーリングのマネージドターミネーション保護機能を使用するには、Auto Scaling グループで自動スケーリングインスタンスのスケールイン保護を有効にする必要があります。
マネージド終了保護を使用すると、クラスターの自動スケーリングで、どのインスタンスを終了するかを制御できます。マネージド終了保護を使用した場合、Amazon ECS は、実行中の Amazon ECS タスクがない EC2 インスタンスのみを終了します。DAEMON
スケジューリング戦略を使用するサービスによって実行されるタスクは無視され、インスタンスがこれらのタスクを実行している場合でも、クラスター自動スケーリングによってインスタンスを終了できます。これは、クラスター内のすべてのインスタンスがこれらのタスクを実行しているためです。
Amazon ECS は最初に Auto Scaling グループの EC2 インスタンスに対するインスタンススケールイン保護オプションを有効にします。次に、Amazon ECS がインスタンスにタスクを配置します。デーモン以外のすべてのタスクがインスタンスで停止すると、Amazon ECS はスケールインプロセスを開始し、EC2 インスタンスのスケールイン保護をオフにします。Auto Scaling グループはインスタンスを終了できます。
自動スケーリングインスタンスのスケールイン保護は、終了できる EC2 インスタンスを制御します。スケールイン機能がオンになっているインスタンスは、スケールインプロセス中に終了できません。自動スケーリングのインスタンススケールイン保護についての詳細は、「Amazon EC2 Auto Scaling ユーザーガイド」の「インスタンススケールイン保護を使用する」を参照してください。
キャパシティに余裕を持たせるように targetCapacity
の割合を設定できます。こうすると、Auto Scaling グループが起動するインスタンスが増えないため、以降のタスクがより速く起動します。Amazon ECS では、ターゲットキャパシティー値を使用して、サービスによって作成される CloudWatch メトリクスを管理します。Amazon ECS は CloudWatch メトリクスを管理します。Auto Scaling グループが定常状態として扱われるため、スケーリングアクションが必要なくなります。値は 0-100% の範囲で指定できます。例えば、Amazon ECS タスクで使用されるキャパシティーに加えて 10% の空き容量を維持するように Amazon ECS を設定するには、ターゲットキャパシティー値を 90% に設定します。キャパシティプロバイダーで targetCapacity
値を設定する際には、次の点を考慮します。
-
100% 未満の
targetCapacity
値は、クラスター内に必要な空き容量 (Amazon EC2 インスタンス) を表します。空き容量とは、実行中のタスクがないことを意味します。 -
アベイラビリティーゾーンなどの配置制約は、追加の
binpack
がなければ、Amazon ECS が最終的にインスタンスごとに 1 つのタスクを実行するように強制しますが、これは望ましい動作ではない可能性があります。
マネージド終了保護を使用するには、Auto Scaling グループで 自動スケーリングインスタンスのスケールイン保護を有効にする必要があります。スケールイン保護を有効にしていない場合、マネージド終了保護を有効にすると、望ましくない動作が発生する可能性があります。例えば、インスタンスのドレイン状態のままになっている場合を考えてみます。詳細については、「Amazon EC2 Auto Scaling ユーザーガイド」の「インスタンスのスケールイン保護の使用」を参照してください。
キャパシティープロバイダーで終了保護を使用するときは、キャパシティープロバイダーに関連付けられた Auto Scaling グループで、インスタンスのデタッチなどの手動アクションを実行しないでください。手動操作を行うと、キャパシティープロバイダーのスケールイン操作が中断される可能性があります。Auto Scaling グループからインスタンスをデタッチする場合は、Amazon ECS クラスターからもデタッチしたインスタンスを登録解除する必要があります。