一、说明

众所周知,Spring Cloud+Docker能够实现微服务集群的快速部署,但是在第一次尝试的时候发现一个问题,docker默认是一个内部的局域网,和宿主机不属于一个网段。这导致就算在Spring Cloud中配置了eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port},其他服务器也访问不到(我们这边是使用feign实现的负载均衡访问模式,方法详见:)。所以我们在这里要做两步操作:1.将容器以host模式运行 2.在Spring Cloud中配置IP访问

二、配置

1. 将容器以host模式运行

在docker run的命令中加入--net="host"(Docker网络配置)

2. 在Spring Cloud中配置IP访问

#注册时使用ip而不是主机名
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}
eureka.instance.hostname=${spring.cloud.client.ipAddress}
这样Spring Cloud在配置的时候,就会以IP+端口注册

3. 多网卡的情况

指定IP在某些场景下很有用,如某台服务器有eth0、eth1和eth2三块网卡,但是eth1可以被其它的服务器访问;如果Eureka Client将eth0或者eth2注册到Eureka Server上,其它微服务就无法通过这个IP调用该微服务的接口。
#忽略eth0,支持正则表达式
spring.cloud.inetutils.ignored-interfaces[0]=eth0


赞助本站,网站的持续发展离不开你们的支持!一分也是爱ヾ(◍°∇°◍)ノ゙
 本文链接: ,花了好多脑细胞写的,转载请注明链接喔~~
登陆
      正在加载评论