由于以下错误,ELB 无法更新:主任务集目标组必须位于侦听器 arn:aws:elasticloadbalancing 后面

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

我正在尝试了解

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
操作时,它失败并显示上一条消息。

负载均衡器配置看起来不错:

  • 监听器8080转发到目标1
  • 监听器8088转发到target2

我检查了我的

CodeDeploy
申请和
deployment group

一切看起来都很好。在负载平衡下,我有 target-1 指向 PROD 侦听器,target-2 指向 TEST 侦听器。

相对于环境而言,ECS 服务是 Service2(又名新服务)。

权限没问题。

那么,我没有看到什么? 我搜索了此错误,但找不到对我有用的答案。 最接近的一个是不将目标组附加到负载均衡器。但就我而言,我将它们附加到负载均衡器,并将侦听器附加到相应的目标组。

我将不胜感激。我没主意了。

amazon-web-services amazon-ecs aws-codepipeline aws-code-deploy
2个回答
0
投票

这可能是问题所在:

我创建了 2 个目标组:每个听众一个。当我转到负载均衡器并检查侦听器时,我可以在那里看到它们。

如果您已经将两个听众都指向了相应的目标组,则会出现此问题。尝试将两个侦听器指向当前正在运行应用程序的同一目标组。

更多故障排除步骤:https://aws.amazon.com/premiumsupport/knowledge-center/ecs-blue-green-deployment/


0
投票

我也遇到过同样的情况。经过几个小时的研究负载均衡器、目标组、侦听器和集群/服务配置后,发现了原因。这是关于部署组中配置的生产端口

蓝/绿部署期望将应用程序“生产端口”的负载均衡器侦听器定向到目标组,以便它可以将该组与另一个组一起更改。

就我而言,我有端口 80、90(用于测试)和 443 的侦听器。

部署组配置为端口 80 作为生产端口,但端口 80 的负载均衡器侦听器后面没有目标组。它所拥有的只是重新路由至 443。

所以问题出在部署组配置上。我将部署配置中的生产端口更改为端口 443,一切都开始工作。

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