Eureka与AWS ECS

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

我们正在使用Eureka和AWS ECS服务来扩展docker容器。在ECS中,如果省略主机端口,或在任务定义中将其指定为“0”,则将自动选择端口并将其报告回服务。任务运行后,描述它应该显示它绑定到哪个端口。

如果我们有几个EC2实例,Eureka如何解决使用哪个端口。例如,来自EC2-A的服务A尝试从EC2-B呼叫服务B.因此Eureka可以解析主机名,但无法识别暴露的端口

amazon-web-services netflix-eureka netflix-zuul amazon-ecs spring-cloud-netflix
3个回答
3
投票

https://github.com/Netflix/eureka/issues/937解决了这个问题

目前,ECS代理知道运行端口。

但我不建议将Eureka与ECS一起使用,因为Application Load Balancer也是如此。它作为服务注册表和发现。您不需要运行附加服务(Eureka),ALB便宜。


3
投票

还有另一种解决方案。

您可以创建应用程序负载均衡器和目标组,可以在其中启动docker容器。

每个docker容器都将其主机名设置为loadbalancer的主机名。如果您需要一个漂亮的URL,那么您可以使用Route53进行DNS路由。

它看起来像这样:

使用Loadbalancer-Hostname进行服务发现

请求流程

如果在不同主机上有两个具有相同任务的容器,则两者都会将相同的loadbalancer主机名传递给eureka。

使用此解决方案,您可以在AWS ECS上使用带有docker的eureka,而不会失去动态端口映射的优势和灵活性。


1
投票

没有@ Alexander Filichkin,

我认为Application Load Balancer和服务注册表不会这样做。主要差异流量通过(应用程序)负载平衡器流动,而服务注册表只是为您提供一个健康的端点,您的客户端可以直接解决(因此网络流量不会流经服务注册表)。

便宜是一个非常相对的术语,也许它对某些人来说很便宜,也许这对其他人来说是不必要的开销。

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