【发布时间】:2018-10-05 10:05:55
【问题描述】:
我在集群环境中的 docker 容器中运行了许多 java 和 python 服务。我正在使用 Eureka 进行服务发现,并且在应用程序配置文件中硬编码的 Eureka ip 地址在本地运行良好。我在为 Java 服务灵活配置 Eureka 服务时遇到问题 - 带有服务的 docker 容器将部署在 Eureka 将具有不同 IP 地址的三个环境中。 有没有办法使用例如传递 Eureka URI JVM环境变量?
或者如果我将 URI 作为应用程序参数传递,我怎样才能将其传播到 Eureka 客户端配置?
PS:我使用 AWS ECS,由于服务数量和现有 AWS 限制,我不能将所有 docker 容器放在一个任务定义中,不能使用 docker 名称解析,只能硬编码 Eureka 主机名,另一方面,我可能有多个Eureka 实例,并希望指定应该使用哪个特定容器。
【问题讨论】:
-
我还没有找到一个很好的解决方案,目前我们只是在每个服务的 defaultZone 属性中放置了几个 Eureka 服务器。这部分有效 - 服务由它们可以访问的第一个 eureka 实例注册,但报告连接到其他实例的问题并且他们继续尝试。我不喜欢这种行为,所以对于某些环境,我只是简单地修复了一个 eureka 服务器 url。
标签: amazon-web-services docker amazon-ecs netflix-eureka service-discovery