38、springcloud虚拟机网卡导致docker集群通信问题
在项目实战部署过程中,发现docker服务跑起来后,会遇到如下两个问题:(1)docker集群中运行的每一个容器一般会有3个网段(10.0段、10.255段和172段),在服务部署后,我们希望服务选择的网卡(注册到注册中心的网卡)与docker之间所在的网卡一直,也就是服务选择的网卡使我们创建的跨主机的网卡,那么服务与服务之间通信就没有问题,否则注册到注册中心的网卡不是我们创建的集群...
在项目实战部署过程中,发现docker服务跑起来后,会遇到如下两个问题:
(1)docker集群中运行的每一个容器一般会有3个网段(10.0段、10.255段和172段),在服务部署后,我们希望服务选择的网卡(注册到注册中心的网卡)与docker之间所在的网卡一直,也就是服务选择的网卡使我们创建的跨主机的网卡,那么服务与服务之间通信就没有问题,否则注册到注册中心的网卡不是我们创建的集群的network,就导致服务与服务之间无法通信(服务调用另一个服务前提是从注册中心拿到对应的ip和端口,然后通过ip和端口进行http通信)
(2)即便解决了(1)中存在的问题,在WMWare当中都可能存在问题,表现在所有服务之间注册的网段地址与创建的自定义overlay网络是一直的,进入容器(docker exec -it 容器id /bin/bash)后发现服务之间是可以ping的,注册服务上所有的服务注册也正常!但是问题来了,就是通过外部浏览器访问docker内部的服务是访问不了的!这是一个棘手的问题,无法通过查看服务信息解决。其实这个问题的根本原因是VMWare无法暴露docker集群环境给外部,所以外部无法通过VMWare的网卡与docker集群机器通信!!
解决方法:
(1)针对改问题,就是就是对应本地有多个网卡,服务如何选择本地网卡注册到注册服务的问题。这个springcloud也考虑到了这个问题,解决方式就是使用preferred-networks,也就是优先选用哪些网卡:
spring:
cloud:
inetutils:
preferred-networks:
- 10.10
上面的配置就是写死在配置文件中,当然我们也可以在运行过程中添加对应参数,例如,我的脚本如下:
--mode replicated \
--replicas 1 \
--name eureka1 \
--network springcloud \
--publish 7002:7002 \
--env spring.profiles.active=eureka1 \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_register_server:latest
(2)针对这个问题,解决的就是虚拟机网卡导致docker集群无法暴露的问题,起始还是docker集群容器关联到了VM的网卡不同导致的,我们可以使用忽略VM相关的网卡即可解决:
spring:
cloud:
inetutils:
ignoredInterfaces:
- VMware.*
动态运行指定参数:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name eureka1 \
--network springcloud \
--publish 7002:7002 \
--env spring.profiles.active=eureka1 \
--env spring.cloud.inetutils.ignored-interfaces[0]=VMware.* \
images.dondown.com:5000/dys_register_server:latest
正常情况下,为了避免以上两个问题同时出现,我们最好都忽略即可:
docker service create --with-registry-auth \
--mode replicated \
--replicas 1 \
--name eureka1 \
--network springcloud \
--publish 7002:7002 \
--env spring.profiles.active=eureka1 \
--env spring.cloud.inetutils.ignored-interfaces[0]=VMware.* \
--env spring.cloud.inetutils.preferred-networks[0]=^10\.0 \
images.dondown.com:5000/dys_register_server:latest
快来成为我的朋友或合作伙伴,一起交流,一起进步!
QQ群:961179337
微信:lixiang6153
邮箱:lixx2048@163.com
公众号:IT技术快餐
更多资料等你来拿!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)