在不同私网云服务器部署Docker微服务(dubbo)遇到的注册IP问题

问题发生在我做实验项目的时候,背景:
1.拥有两台云服务器,分别是轻量级服务器,ECS
2.在两台服务器上使用docker容器运行两个dubbo微服务,使用zookeeper作为注册中心
3.两台云服务私网IP是不互通的

服务的报错:
No provider available from registry 1XX.XX.XX.XX:2181 for service org.apache.dubbo.monitor.MonitorService on consumer 172.XX.XX.XX use dubbo version 2.7.8, please check status of providers(disabled, not registered or in blacklist).

开始其实是retries 3 times,timeout=3000 epl…的报错,然后发现timeout调大了还是一样,然后发现都不是这个问题,而是ip的问题,ECS的微服务访问不到轻量服务器的私网IP,也就无法得到相应的微服务.

然后仔细看了报错确实也有,connect refused的问题.而且注册中心显示的确实也是轻量服务器的私网IP,而且还有一个额外的问题就是,docker本身的网络问题,docker使用命令创建容器的时候会使用默认的桥接模式,得到一个虚拟IP.如果你使用了docker容器运行微服务,而且使用默认桥接网络,给到注册中心的就是一个虚拟ip.

解决的办法简洁的来说就是环境参数和更改网络方式
使用host宿主机网络,然后设置环境参数DUBBO_IP_TO_REGISTRY为公网IP.这样给注册中心的公网IP另外一个服务器就能访问到了.

但是云服务器的话你还需要打开Dubbo服务的20880或者你设定的端口,才行.我是使用这个命令打开内部防火墙,然后去安全组或者轻量级服务器的防护墙打开20880端口

firewall-cmd --add-port=20880/tcp --zone=public --permane
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值