【发布时间】:2015-10-25 02:11:02
【问题描述】:
我正在评估使用在单独的 docker 容器中运行的 Spring Boot 和 Spring Cloud(Zuul 和 Eureka)构建微服务,部署在单独的 Amazon EC2 实例中。
我有一个向 Eureka 注册的简单 REST 服务,并已将 Zuul 配置为通过在 Eureka 中查找来将请求路由到该服务。
我可以使用 boot2docker 在我的 Mac 上本地运行(即不在 Amazon/EC2 中),但是当部署在 EC2 上时,Zuul 找不到该服务,并且 报告“转发错误”(状态 500)。
在 EC2 中,所有内容都配置为在端口 80 上运行(只是在评估时,我可以轻松地通过我们的防火墙访问)。 我可以在 Eureka 系统状态页面中看到 Zuul 和我的服务(尽管所有链接都不起作用!)。
客户端被配置为使用完整的 AWS 域名查找 Eureka,因此我可以看到他们如何找到 Eureka OK。 例如
client:
serviceUrl:
defaultZone: http://ec2-XX-XX-XX-XX.ap-southeast-2.compute.amazonaws.com:80/eureka/,http://ec2-YY-YY-YY-YY.ap-southeast-2.compute.amazonaws.com:80/eureka/
但是,客户端似乎正在使用其内部 docker IP 地址注册自己(基于 Eureka 系统状态链接)。
edgeserver 链接指向http://172.17.0.2/info 试用服务链接指向http://172.17.0.3/info
我猜这是不正确的,其他 EC2 实例不知道如何访问该地址。
我已阅读此页面 https://github.com/Netflix/eureka/wiki/Configuring-Eureka-in-AWS-Cloud,其中建议使用 AWS EC2 弹性 IP 地址,但是 我希望我不必这样做。
我还看到这里有一个关于这个主题的当前讨论,https://github.com/spring-cloud/spring-cloud-netflix/issues/432
有没有人设法让这种类型的设置工作,如果有,他们是如何配置 Eureka 属性的?
【问题讨论】:
-
我现在正在处理完全相同的问题。目前不确定答案或解决方法。如果您发现了什么,请在此处更新。我也会这样做。
标签: spring amazon-web-services spring-cloud netflix-eureka