无法通过

时间:2018-10-15 21:44:20

标签: spring-boot amazon-ecs netflix-eureka spring-cloud-netflix

我最近继承了一个微服务系统,该系统在AWS ECS的spring-boot和netflix堆栈上运行,对于spring-boot和netflix方面我还是很陌生。我试图将其从使用静态定义的端口转移到使用动态端口,以便我们可以更好地使用现有计算机,但是我无法让微服务在Eureka中进行注册。

当这些服务在Spring Boot Admin中被标记为脱机时,它们仍可以正常启动。当我在Spring Boot Admin中单击服务名称时,我会在右上角看到以下链接

http://10.128.83.113:32915/
http://10.128.83.113:18080/actuator
http://10.128.83.113:18080/actuator/health

10.128.83.113是此EC2实例的IP地址,该实例是我的ECS群集的一部分,32915是同一计算机内部正在使用的hostPort号,18080是容器服务绑定到Docker容器内部的端口号。

通过阅读github.com上的对话,我将参数eureka.instance.non-secure-port设置为HostPort,这似乎是将端口设置为三个链接中最上面的端口,并通过阅读medium.com链接自github.com,我也设置

eureka.instance.preferIpAddress=true 
eureka.instance.ip-address=\${HOST_IP} 

当我在ECS / docker和静态定义的端口中使用主机网络模式时,如果没有上面的三个eureka配置项,这一切都可以正常工作,但是在集群中需要的EC2实例比必要的更多。当我更改为使用动态端口和网桥网络模式(由于使用动态端口)时,我只是无法在Eureka上正确注册自己的服务,我想我已经接近了,但是我无法锻炼配置我不见了。有人可以建议如何解决这个问题吗?我怀疑有人在Eureka上注册了Docker容器的IP地址或Docker容器端口号(或两者都有),但是我看不到Eureka的哪个地方可以找到日志来确认/拒绝该日志,我不知道其他什么配置我应该设置。

微服务正在使用Spring Boot v2.0.3.release。 ECS为1.20.3

1 个答案:

答案 0 :(得分:1)

所以我设法成功了,最后我需要设置6个参数:

eureka.instance.non-secure-port=${EXPOSED_PORT}
eureka.instance.preferIpAddress=true
eureka.instance.ip-address=${HOST_IP}
eureka.instance.hostname=${HOST_NAME}
eureka.instance.metadataMap.management.port=${EXPOSED_PORT}
eureka.instance.health-check-url=${HOST_IP}:${EXPOSED_PORT}/actuator/health

所有这些都在Eureka上成功注册了服务。