如何使用Eureka在Docker群中设置服务发现

时间:2018-10-02 16:18:32

标签: spring-boot docker-swarm netflix-zuul netflix-eureka

我在Docker群中设置服务发现有困难。

我在linux机器上创建了一个docker swarm:

docker swarm init --advertise-addr 192.172.123.4

然后创建了一个覆盖网络:

docker network create -d overlay my-overlay

然后添加了三个服务:

docker service create --replicas 1 --name eureka -p 8761:8761 --network my-overlay eureka

docker service create --replicas 1 --name zuul -p 8761:8761 --network my-overlay zuul

docker service create --replicas 1 --name testapp -p 8761:8761 --network my-overlay testapp

'eureka','zuul'和'testapp'都是Docker映像,它们在独立运行时都可以协同工作,并在eureka中注册,我可以通过zuul代理与'testapp'进行交互。

但是...

当我将它们作为服务群运行时,它们不向Eureka注册。当我访问192.172.123.4:8761的尤里卡页面时,我得到了:

  

当前在Eureka注册的实例:

     

无实例

如何完成?


这些是我的配置:

zuul:

server.port=8762
spring.application.name=zuul-server
eureka.instance.preferIpAddress=false
eureka.client.registerWithEureka=true
eureka.client.fetchRegistry=true
eureka.serviceurl.defaultzone=http://192.172.123.4:8761/
management.endpoints.web.exposure.include=*

testapp:

server.port=8799
spring.application.name=duplo
eureka.client.registerWithEureka=true
eureka.instance.preferIpAddress=false
eureka.serviceurl.defaultzone=http://192.172.123.4:8761/

尤里卡:

server:
  port: 8761
eureka:
  client:
    registerWithEureka: false
    preferIpAddress: false
    fetchRegistry: false

2 个答案:

答案 0 :(得分:1)

通过spring-boot运行zuul / eureka时,如果该端口已在使用中,则会出错。

尝试为zuul绑定-p 8762:8762,为testapp绑定-p 8799:8799。

不确定是否正在获取端口占用错误。

答案 1 :(得分:0)

我不确定自己在做什么错,但是我最终遵循了本教程,并且效果很好-对于那些在建立这样的堆栈时遇到问题的人,我建议将其作为一个好的起点:

https://github.com/binblee/springcloud-swarm