繁体   English   中英

由于负载均衡器健康检查,Fargate 容器永远不会被杀死

[英]Fargate container is never killed because of the load balancer health check

AWS Fargate 作为一个概念是一项了不起的服务。 它允许您在未主动使用服务时将服务缩减为 0 个实例,或者至少这是宣传的方式。 实际上,我很难做到这一点。 据我所知,您确实需要在 Fargate 前面有一个负载均衡器,并且 ALB 每 30 秒自动执行一次健康检查请求,以防止容器进入休眠状态。 健康检查的最长时间为 300 秒。 没有真正考虑到每天只需要 15 分钟的服务。 将基于 Fargate 的应用程序以在不使用时实际关闭的方式向世界公开的正确方法是什么?

如果您选择将 AWS Fargate 与 ALB 一起使用,正如您提到的那样,您将永远无法关闭它。 公平地说,容器任务通常需要 15 到 30 秒才能启动,因此如果您将它放在活动的负载均衡器后面,会给非常不频繁的任务的调用者带来相当负面的体验,因为它们会超时。

不过,您在这里有多种选择,具体取决于您拥有的已知间隔流量以及您是否可以提前准备。

假设:成本节约是驱动因素,流量是通过同步 HTTP/S 调用随机/低流量调用的。

注意:专用 ALB + Fargate 将始终具有预配置的容量,并且对于很少调用的代码可能会过大。

1)将您的应用程序移植到 Lambda 并使用 API 网关
这意味着您只需为拨通的电话付费。 lambda“容器”的启动非常快,如果您一天只接到几个电话,它将花费几美分。 这确实需要您移植您的应用程序,但这可能很困难。

2) API GW + Lambda 代理
这是一个骗局——并假设调用者将在 30 秒超时后重试。 您在这里所做的是让呼叫最初进入 Lambda function,这将启动您的 Fargate 服务。 然后它进行调用并返回结果。 您使用扩展规则在流量消失时将其关闭(通常是几分钟的低活动)。 虽然在这里你没有 LB..你正在 Lambda 代码中做这一切,因为假设你只有 1 个任务在运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM