AWS ECS 服务设置问题 - 工作然后停止并引发 CapacityProviderReservation 警报

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

我正在尝试将我的服务(用 .Net 6 编写)迁移到 AWS ECS。在我的公司,我们决定在这里采取小步骤,首先将其作为具有单个任务和单个实例的单个服务。我们还希望使用模仿当前设置的 Rollout 部署 - 因此我们首先终止服务,然后部署新版本(新的 docker 映像),如果失败,我们不会回滚 - 只是修复版本。如此过时,没有 ECS 的所有好处。

我们创造了什么:

  • Linux EC2 类型的 ECS 集群
  • 具有 NAT 和网络负载均衡器的 VPC 网络
  • 我们的服务任务有两个带有 Nginx 和 Net Core WebApi 的 docker 镜像
  • 新的 CodeBuild 将构建和容器化我们的 Net Core 服务
  • 用于自动化该过程的 Powershell 脚本

Powershell 脚本正在执行以下操作:

  • 从分支触发新的构建,这将导致新的 Docker 镜像被推送到 ECR
  • 使用命令停止服务:
    $updateOutput = aws ecs update-service `
    --cluster $ClusterName `
    --service $ServiceName `
    --desired-count 0 `
    --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=false}" `
  • 使用命令启动服务:
$updateOutput = aws ecs update-service `
    --cluster $ClusterName `
    --service $ServiceName `
    --desired-count 1 `
    --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=false}" `
    --force-new-deployment

如果部署失败,我们会使用相同的命令再次停止服务。

这是一种基本甚至原始的方法,但它是我们的起点。

发生了什么:

  • 一切正常,我们可以部署和重新部署服务,并在损坏版本部署失败后停止
  • 服务正在响应 REST 调用
  • 我们看到日志
  • 但是,一段时间后新部署失败,没有日志,我们无法执行任何操作。此外,我们在 CloudWatch 中收到警报:CapacityProviderReservation(1 分钟内 1 个数据点的 CapacityProviderReservation > 100)

我们被困住了,不知道下一步该做什么......

关于如何调查问题的根本原因有什么建议吗?或者在设置等方面进行哪些更改是非常受欢迎的。

.net amazon-web-services amazon-ecs
1个回答
0
投票

为什么不直接使用 Fargate?您可以不必担心完全扩展集群。

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