如何在没有负载均衡器的情况下将容器部署到ECS+Fargate+CodeDeploy?

问题描述 投票:0回答:1

我有一个应用程序,分为两部分:

  1. (Ruby/Rails)主应用程序,也是 Web 前端
  2. Sidekiq 事件处理程序

第一个不是问题,做到了。 CodeDeploy 将通过在“蓝色负载均衡器目标组”上创建新服务来部署新版本,并开始在蓝/绿设置中将流量转移到这些服务。

但是,Sidekiq 没有端口,因此没有健康检查。这就是我现在遇到的问题,NLB 不验证容器的运行状况,因此它不断重新启动,并且部署最终超时,因为它无法获得干净的服务。

我不确定这是否是 ECS 限制或 CodeDeploy 限制(或“我的限制”:)),但似乎我 have 有一个负载均衡器可以实现这一点。

但是这听起来有些不对劲!我确信 AWS 一定考虑过“工作容器”,对吧?如何do 设置具有两个服务的 ECS 集群,每个服务都有一个任务 - 上面的两个部分。 以及 然后如何使用 CodeDeploy 部署到该服务/任务?或者您是否以其他方式部署 Sidekiq(在本例中)?

拥有两项服务,我可以单独扩展它们。

目前,我有一个 CodePipeline,触发 CodeBuild 来构建映像,将其推送到 ECR,然后触发 CodeDeploy 进行部署。当我有 one 服务并执行两项任务时,它最初可以工作,但随后两项任务都会同时扩展,这不是我最终想要的。

amazon-ecs aws-codepipeline aws-code-deploy amazon-elb
1个回答
0
投票

对于现在看到此问题的任何人(我),答案是使用 ECS 滚动更新(根据此故障排除文章),并使用断路器或 CloudWatch 警报来检测是否无法达到稳定状态。

我遇到了类似的问题,其中我有一个服务,旨在使用来自 SQS 队列的消息,然后对其他 AWS 服务执行各种其他操作作为响应。由于这实际上并不为网络流量提供服务,因此当我尝试使用 CodeDeploy 进行自动回滚时,我陷入了困境。

© www.soinside.com 2019 - 2024. All rights reserved.