swarm集群中服务之间的网络通信

avatar 2023年3月6日18:28:28 评论 472 次浏览

swarm集群中部署的微服务集群,原本测试的时候使用的是网上找的测试用例,因为也没有深入的测试,所以认为网络可以,但是换成自己的服务时,发现集群中有些服务可以有些服务不可以,因为在我的集群中我需要我的微服务注册到eureka中,但是config可以注册进去了,但是其他服务无法注册,而且定义的环境变量不通,一直提示的是网络超时的问题。但是我在容器中通过service请求是可以请求的,后来在网上看到说什么阿里云的不支持,因为我的是自己的物理机后期要部署到阿里云的ECS上的,然后问了一下阿里云的售后反馈的是可以,但是必须docker版本在v19.03以上的版本,我看了一下我的版本是18,然后就对docker版本进行升级,升级后发现还是不行。后来谷歌了一下说,UDP监听的250、4789和4790三个端口为系统保留端口,暂时不对外开放。在19.03及之后的版本,docker在swarm init之上增加了–data-path-port uint32 的配置项用于更改docker swarm的VXLAN端口。好吧,我就尝试了修改了一下。在修改之前先让节点退出集群。

 [root@master ~]# docker swarm leave --force
 [root@master ~]# docker swarm init --data-path-port 5789
 [root@node1 ~]# docker swarm leave
 [root@node1 ~]# docker swarm init --data-path-port 5789
 [root@node2 ~]# docker swarm leave
 [root@node2 ~]# docker swarm init --data-path-port 5789

修改后重新创建集群,然后节点加入集群,微服务之间就可以通过service通信了,这个因为前期没有把异常保留,就没有把错误日志贴上去,不过如果遇到docker的日志问题可以使用这个命令查看。

 [root@www.wulaoer.org ~]# journalctl -u docker -n 20 -f 

没有了,swarm集群就可以部署服务了,swarm主要针对saas平台的管理部署,因为是节点少,而且需要问题所以使用swarm部署最合适不过了。没有了,看看其他的吧。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: