尤里卡与 AWS ECS

Eureka with AWS ECS

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

如果我们有多个 EC2 实例,Eureka 如何解析要使用的端口。例如,来自 EC2-A 的服务 A 尝试从 EC2-B 调用服务 B。所以 Eureka 可以解析 hostname ,但是不能识别暴露的端口

还有一个解决方案。

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

每个 docker 容器都将它们的主机名设置为负载均衡器的主机名。如果你需要一个漂亮的 url,那么你可以使用 Route53 进行 DNS 路由。

看起来像这样:

使用 Loadbalancer-Hostname 的服务发现

请求流程

如果您在不同的主机上有两个执行相同任务的容器,它们都会将相同的负载均衡器主机名传递给 eureka。

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

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

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

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

嗨@Aleksandr Filichkin,

我认为 Application Load Balancer 和服务注册中心的作用不同。 主要区别在于流量流经(应用程序)负载均衡器,而服务注册表只是为您提供一个客户端可以直接寻址的健康端点(因此网络流量不会流经服务注册表)。

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