min_healthy_percent / max_healthy_percent とは?
これらは、ECS のサービスをデプロイする際のローリングアップデート戦略に関わる設定項目です。
タスクのアップデート時に、何台のタスクを同時に停止・起動するかの制御を行います。
min_healthy_percent(最小正常タスク割合)
- 意味:デプロイ中に正常で稼働していなければならないタスクの最小割合を指定します。
-
例:
min_healthy_percent: 50なら、サービスの希望数が10の場合、最低でも5つのタスクは常に稼働している必要があります。
◼️ max_healthy_percent(最大タスク数割合)
- 意味:デプロイ中に希望タスク数(desired count)を超えて起動しても良い最大割合を指定します。
-
例:
max_healthy_percent: 200なら、希望数が10の場合、最大20個までタスクを一時的に起動可能です。
使い方
{
"deploymentConfiguration": {
"maximumPercent": 200,
"minimumHealthyPercent": 100
}
}
self.service = ecs.FargateService(
self,
"FargateService",
cluster=cluster,
task_definition=task_definition,
desired_count=ecs_config.get("ecs_desired_count", 2),
min_healthy_percent=100,
max_healthy_percent=200,
assign_public_ip=False,
vpc_subnets=ec2.SubnetSelection(
subnet_type=ec2.SubnetType.PRIVATE_WITH_EGRESS
),
security_groups=[ecs_service_sg],
)
上記設定で、desired count = 10 の場合:
- 最小で5つは必ず稼働(停止できるのは最大5つまで)
- 最大で20個まで一時的に起動可能(新タスクは最大10個まで同時に起動可能)
メリット・デメリット
| 項目 | メリット | デメリット |
|---|---|---|
min_healthy_percent |
- 可用性を維持しながらデプロイできる - サービスのダウンタイムを抑えられる |
- 値が高すぎると、新タスクの起動スペースが足りずデプロイが遅延する可能性あり |
max_healthy_percent |
- 新タスクを並列に起動して高速に切り替えできる - デプロイ時間の短縮につながる |
- 値が高すぎるとリソース(CPU/メモリ)を過剰に消費し、クラスタ全体に負荷がかかる可能性あり |
運用時のベストプラクティス
-
通常は:
{ "minimumHealthyPercent": 100, "maximumPercent": 200 }この設定で、可用性を完全に保ちつつ高速にデプロイ可能。
-
タスク数が少ないサービスや、リソースに余裕がない場合は:
{ "minimumHealthyPercent": 50, "maximumPercent": 100 }など、リソースと相談しながら慎重に設定。
まとめ
| パラメータ | 説明 | よく使われる値 |
|---|---|---|
min_healthy_percent |
デプロイ中に常に稼働すべきタスクの最小割合 | 100(高可用性維持) |
max_healthy_percent |
一時的に起動可能な最大タスク割合(desired count に対する) | 200(高速デプロイ) |
これらを適切に設定することで、ECS のデプロイを安全かつ効率的に行えます。
