amazon-web-services – 带有应用程序负载均衡器的aws ECS上的服务发现

我想问你是否有一个涉及Amazon Elastic Container Service(ECS)和应用程序负载均衡器(ALB)的微服务架构(基于Spring Boot),服务发现是由平台自动执行的,还是需要一个特殊的机制(如尤里卡或领事)?

从文档(ECS和ALB)不清楚您是否提供此功能.

最佳答案
我已经与亚马逊支持团队讨论了这个问题,他们回复了以下内容:
“……仅在ALB上使用AWS ECS上的服务发现[..].

所以,这里可以有三个选项:
1)使用ALB / ELB作为服务端点(ALB的目标组,使用ELB时单独的ELB)

2)使用Route53和DNS进行服务发现

3)将Consul.io等第三方产品与Nginx结合使用.

让我谈谈这些方案中的每一个.

使用ALB / ELB

对于此选项,我们的想法是在每个服务前使用ELB或ALB目标组.
我们定义了一个Amazon CloudWatch Events过滤器,该过滤器侦听来自AWS CloudTrail的所有ECS服务创建消息并触发Amazon Lambda函数.
此功能标识新服务使用的Elastic Load Balancing负载均衡器(或ALB目标组),并使用Amazon Route 53插入指向它的DNS资源记录(CNAME).
Lambda函数还处理服务删除,以确保DNS记录反映群集中运行的应用程序的当前状态.

这里的缺点是,如果您使用ELB,它可能会产生更高的成本 – 因为您需要为每项服务使用ELB.它可能不是最简单的解决方案.
如果您想了解更多信息,请点击此处[1]

使用Route53

这种方法涉及使用Route53并在ECS容器实例上运行简单代理[2].
当您的容器停止/启动时,代理将更新Route53 DNS记录.它创建了一个SRV记录.同样,一旦容器停止,它将删除所述记录.

此方法的另一部分是Lambda函数,该函数对ECS容器实例执行运行状况检查 – 并在发生故障时将其从R53中删除.

您可以在我们的博客文章[3]上阅读有关此方法的更多信息.

使用像Consul.io这样的第三方工具在ECS上使用像Consul.io这样的工具,但是不支持AWS.所以你可以自由使用它,但我们 – 不幸的是 – 不提供支持.

总而言之 – 在AWS ECS上有几种实现服务发现的方法 – 我在这里展示的两种使用AWS资源的方式,当然还有使用第三方应用程序的方式.

转载注明原文:amazon-web-services – 带有应用程序负载均衡器的aws ECS上的服务发现 - 代码日志