当前位置: 首页 > 知识库问答 >
问题:

Amazon ECS:目标组健康检查与容器健康检查

竺绍辉
2023-03-14

Amazon ECS支持两种不同类型的健康检查:

  • 目标组健康检查发出可配置的网络请求
  • 容器健康检查在docker容器中运行,可以配置为运行容器支持的任何shell命令

如果两个健康检查都配置了,那么哪一个会赢?如果其中一个失败,服务是否标记为不健康?或者两者都有?我可以将一个配置为覆盖另一个吗?

我非常希望目标组的健康状态不会导致ECS不断跳出服务,我希望可以使用容器健康检查来覆盖它。

共有2个答案

慕高格
2023-03-14

根据我的经验,任何一种都将导致容器退役。我会说,如果您有一个目标组执行检查,您可能不需要容器健康检查。

宋飞文
2023-03-14

AWS留档在这个主题上有些模糊,但确实表明ALB之间存在高度耦合

健康检查格雷斯周期秒可能有助于避免失败的ALB健康检查导致ECS容器重新启动(至少在服务启动期间):

任务进入运行状态后,亚马逊ECS服务调度程序应忽略不健康的弹性html" target="_blank">负载平衡目标健康检查、容器健康检查和路由53健康检查的时间段(秒)。这仅在您的服务配置为使用负载平衡器时有效。如果您的服务定义了负载平衡器,并且未指定健康检查宽限期值,则使用默认值0。

如果您的服务任务需要一段时间来启动和响应健康检查,您可以指定最长为2147483647秒的健康检查宽限期,在此期间ECS服务调度程序忽略健康检查状态。此宽限期可以防止ECS service scheduler将任务标记为不健康,并在它们有时间出现之前停止它们。

 类似资料:
  • 我有一个ECS集群,它有多个节点(任务定义),由应用程序负载平衡器前置。在负载平衡器和容器级别(在任务定义内)配置健康检查有意义吗? 负载平衡器对每个注册的目标运行配置的健康检查,以便注销故障节点。在容器级别设置健康检查可以完成相同的事情:ECS将注销任何未通过健康检查的容器(根据您的配置)。ECS将始终实例化更多任务定义实例,以满足您所需的计数。 对我来说,如果任务定义只有一个容器,那么只在负载

  • SOFABoot 为 Spring Boot 的健康检查能力增加了 Readiness Check 的能力。如果你需要使用 SOFA 中间件,那么建议使用 SOFABoot 的健康检查能力的扩展,来更优雅的上线应用实例 引入健康检查扩展 要引入 SOFABoot 的健康检查能力的扩展,只需要引入以下的 Starter 即可: <dependency> <groupId>com.alipay

  • 健康检查配置概述。 filter.http.HealthCheck filter.http.HealthCheck proto { "pass_through_mode": "{...}", "endpoint": "...", "cache_time": "{...}" } pass_through_mode (BoolValue, REQUIRED) 指定过滤器是否在传递模式下运

  • 健康检查架构概述。如果为集群配置了健康检查,则会发出相应的统计信息。详见请参考统计相关文档。 HealthCheck HealthCheck.Payload HealthCheck.HttpHealthCheck HealthCheck.TcpHealthCheck HealthCheck.RedisHealthCheck HealthCheck HealthCheck proto { "ti

  • 健康检查架构概述。 如果为集群配置了健康检查,则会发出相应的统计信息。并且记录在这里。 { "type": "...", "timeout_ms": "...", "interval_ms": "...", "unhealthy_threshold": "...", "healthy_threshold": "...", "path": "...", "send": [

  • 健康检查配置概述。 { "name": "health_check", "config": { "pass_through_mode": "...", "endpoint": "...", "cache_time_ms": "..." } } pass_through_mode (required, boolean) 指定过滤器是否在通过模式下运行。 end