Eureka与AWS ECS

时间:2017-05-02 13:15:56

标签: amazon-web-services netflix-eureka netflix-zuul amazon-ecs spring-cloud-netflix

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

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

3 个答案:

答案 0 :(得分:3)

还有另一种解决方案。

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

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

看起来像这样:

使用Loadbalancer-Hostname的服务发现

Service Discovery with Loadbalancer-Hostname

请求流程

Request Flow

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

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

答案 1 :(得分:3)

问题已解决 https://github.com/Netflix/eureka/issues/937

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

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

答案 2 :(得分:1)

嗨@Aleksandr Filichkin,

我认为应用程序负载平衡器和服务注册表不一样。 主要的区别在于流量流经(应用程序)负载平衡器,而服务注册表只是为您提供了一个健康的端点,您的客户端可以直接访问该端点(因此,网络流量不会流经服务注册表)。

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