swarm部署eureka集群,一些注意点

三节点eureka
在docker  stack 的yml文件中,eureka1  eureka2 eureka3中
environment:
      - eureka.instance.hostname=eureka1 #指定当前启动服务的hostname
      - spring.cloud.inetutils.preferred-networks=10.30
      - eureka.client.register-with-eureka=true
      - eureka.client.fetch-registry=true
      - eureka.instance.prefer-ip-address=false
command: ["--eureka.client.service-url.defaultZone=http://eureka1:8761/eureka/,http://eureka2:8761/eureka/,http://eureka3:8761/eureka/",
          "--eureka.instance.instance-id=$${spring.cloud.client.ip-address}:$${server.port}"]

这里 $ 需要使用 $$ 来表示,否则yml文件报错,

  • spring.cloud.inetutils.preferred-networks=10.30 是为了指定注册到eureka上的网段,因为如果service暴露端口,这个service会有两个vip地址一个是ingress的ip一个自定义overlay网络的ip,这时我们就要指定成自定义overlay网络的ip,否则其他服务feign调用,请求到ingress网络的ip,就会网络不通。

– eureka.client.register-with-eureka=true
- eureka.client.fetch-registry=true
- eureka.instance.prefer-ip-address=false
这三个必须有,否者无法互相注册。

补充:
三个eureka指定overlay网络,并且使用同一个别名:

networks:
      myoverlay:
        aliases:
          - eureka.safebox.com

这样微服务注册到eureka.safebox.com:8761/eureka/ 就能同时注册到三个eureka了。
swarm部署eureka集群,一些注意点_第1张图片

你可能感兴趣的:(swarm部署eureka集群,一些注意点)