我正在尝试将我的服务(用.Net 6编写)迁移到AWS ECS。在我的公司,我们决定在这里采取婴儿步骤,首先将其作为一个具有单个任务和单个示例的单个服务。我们还希望使用Rollout部署来模拟当前的设置-所以我们首先杀死服务,然后部署一个新版本(新的Docker镜像),如果失败,我们不会回滚-只是修复发布。太过时了,没有ECS的所有好处。
我们所创造的,
- Linux EC2型ECS集群
- 带NAT和网络负载均衡器的VPC网络
- 我们的服务任务有两个Docker镜像,分别使用Nginx和Net Core WebApi
- 新的CodeBuild将构建和容器化我们的Net Core Service
- 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)
我们被困在这里不知道下一步该怎么办...
对于如何调查问题的根本原因有什么建议吗?或者在设置中改变什么等等。非常受欢迎。
1条答案
按热度按时间lbsnaicq1#
为什么不用法盖特您可以避免担心整个集群的扩展。