我正在尝试了解
ECS
和 Blue/Green
与 CodePipeline
的部署。
我一直在关注几个教程,但我遇到了这个错误:
由于以下错误,ELB 无法更新:Primary 任务集目标组必须位于侦听器后面 arn:aws:elasticloadbalancing:us-east-1:XXX:listener/app/ecs-t-XXX/XXX/XXX。
这就是我所拥有的:
我创建了
2 listeners
:一个用于 PROD (8080),另一个用于 TEST (8088)
我创建了
2 Target Groups
:为每个听众一个。
当我转到我的 Load Balancer
并检查监听器时,我可以在那里看到它们。
我有
2 services
。
原来的(Service1)和新的(Service2)
两个服务具有相同的配置(负载均衡器下的目标组除外:Service1 具有 target-1,Service2 具有 target-2)。
Service2
具有 CODE_DEPLOY
为 DeploymentController
和 REPLICA
为 SchedulingStrategy
(Service1 没有)
在
CodePipeline
中,当我执行 deploy
操作时,它失败并显示上一条消息。
负载均衡器配置看起来不错:
我检查了我的
CodeDeploy
申请和 deployment group
。
一切看起来都很好。在负载平衡下,我有 target-1 指向 PROD 侦听器,target-2 指向 TEST 侦听器。
相对于环境而言,ECS 服务是 Service2(又名新服务)。
权限没问题。
那么,我没有看到什么? 我搜索了此错误,但找不到对我有用的答案。 最接近的一个是不将目标组附加到负载均衡器。但就我而言,我将它们附加到负载均衡器,并将侦听器附加到相应的目标组。
我将不胜感激。我没主意了。
这可能是问题所在:
我创建了 2 个目标组:每个听众一个。当我转到负载均衡器并检查侦听器时,我可以在那里看到它们。
如果您已经将两个听众都指向了相应的目标组,则会出现此问题。尝试将两个侦听器指向当前正在运行应用程序的同一目标组。
更多故障排除步骤:https://aws.amazon.com/premiumsupport/knowledge-center/ecs-blue-green-deployment/
我也遇到过同样的情况。经过几个小时的研究负载均衡器、目标组、侦听器和集群/服务配置后,发现了原因。这是关于部署组中配置的生产端口。
蓝/绿部署期望将应用程序“生产端口”的负载均衡器侦听器定向到目标组,以便它可以将该组与另一个组一起更改。
就我而言,我有端口 80、90(用于测试)和 443 的侦听器。
部署组配置为端口 80 作为生产端口,但端口 80 的负载均衡器侦听器后面没有目标组。它所拥有的只是重新路由至 443。
所以问题出在部署组配置上。我将部署配置中的生产端口更改为端口 443,一切都开始工作。