进程守护程序自动修复
进程守护程序对于实例的运行状况可能关键或不关键。在创建或更新进程守护程序时,可以使用 critical 参数来控制此设置。critical 参数的默认值为 true,因此除非您将 critical 设置为 false,否则该进程守护程序将被视为关键进程守护程序。
对于关键进程守护程序,如果进程守护程序任务停止或运行不正常,Amazon ECS 会将该实例视为受损,并自动将其耗尽并进行替换。关键进程守护程序的自动修复操作如下:
-
Amazon ECS 检测进程守护程序任务何时停止或运行状况不佳。
-
Amazon ECS 将该实例标记为耗尽,这会阻止它接受新的应用程序任务。
-
Amazon ECS 预置替换实例,并在其上启动进程守护程序任务。
-
进程守护程序任务达到正常运行状态后,Amazon ECS 会将应用程序任务从耗尽的实例调度到替换实例上。
-
Amazon ECS 终止原始实例。
对于非关键进程守护程序,进程守护程序任务的运行与容器实例的运行状况无关。如果进程守护程序任务失败、停止或运行不正常,Amazon ECS 会使容器实例保持活动状态。非关键进程守护程序永远不会阻止实例注册,因此即使进程守护程序启动失败,也可以立即放置应用程序任务。
重要
进程守护程序运行状况检查是可选的,但强烈推荐进行此检查。如果没有运行状况检查,Amazon ECS 只能在进程守护程序任务停止时检测故障。
您可以使用 DescribeContainerInstances API 或 DescribeTasks API 监控进程守护程序的运行状况。
对于非关键进程守护程序,Amazon ECS 会在进程守护程序任务未运行时使实例保持活动状态。以下字段会报告处于该状态的实例数量:
-
DescribeDaemon将返回每个容量提供程序的withoutDaemonCount,并为所有容量提供程序返回该修订的totalWithoutDaemonCount。 -
DescribeDaemonDeployments将返回每个容量提供程序的withoutDaemonInstanceCount,并为所有容量提供程序返回该修订的totalWithoutDaemonInstanceCount。
注意
不含进程守护程序的计数与正在运行的计数相互独立。DescribeDaemon 会报告 runningCount 和 totalRunningCount。DescribeDaemonDeployments 会报告 runningInstanceCount 和 totalRunningInstanceCount。一个实例只会出现在其中一组计数,绝不会同时出现这两组计数,因此请勿将这两组的值相加。