ECS-agent掉线怎么办?

What to do when ECS-agent is disconnected?

我遇到一个问题,我集群中的一个 EC2 实例有时会断开其 ECS 代理。这会静默地从集群中删除 EC2 实例(即不再符合 运行 任何服务的条件)并静默地从服务服务器中耗尽我的集群。我的集群有一个自动缩放组支持,生成服务器以保持健康的数量。但是ECS-agent'断开连接的服务器并没有被标记为不健康,所以AS组认为一切正常。

我觉得一定有一些(简单的)方法可以缓解这种情况,或者我在选择 ECS 并将其用于生产时遇到了很大的问题。

我们有这个问题很久了。每个新的 AWS ECS 优化 AMI 都会变得更好,但截至 3 个月前,它仍然不时发生。正如 mcheshier 提到的,确保始终使用最新的 AMI 或至少使用最新的 aws ecs agent

我们能够解决它的唯一方法是:

  1. 定时自动缩放旋转
    1. 我们会尝试通过在 运行dom 时间
    2. 放大和缩小来防止它
  2. 良好的云监视警报
    1. 我们碰巧将我们的应用程序设置为一堆微服务,这些微服务都是基于队列 (SQS) 的。我们可以根据队列向上和向下扩展。我们进行了不错的监控设置,让我们可以估计多个 ECS 容器的排队率。当我们检测到速率关闭时,我们将轮换整个 ECS 实例。 IE。假设我们的集群部署了 4 运行 个容器 worker-1。我们估计每个工作人员每 5 分钟处理 1000 条消息。如果我们的排队率是每 5 分钟 3000 并且我们有 4 个工人,那么 1 个没有按预期工作。我们在 lambda 中设置了一些脚本来查找有问题的脚本并终止 运行 该容器的整个实例。

我希望这会有所帮助,我知道它特定于我们的内部应用程序,但我可以给你和其他任何人的建议是采取主动并尽可能多地提出指标。这将使您可以进行一些简洁的分析并查找系统中的问题,这就是其中之一。