dubbo外网连接失败

众所周知,阿里云的续费是最贵的。最近,又到了续费的时候,原来是两台服务器都是阿里云,使用内网链接,服务运行的并没有问题。最近为了省钱,准备把一台过期的服务器迁移到腾讯云。即下图的服务器B。

迁移的很顺利,但是服务器跑起来就不对了,consumer始终链接不上B的dubbo。

刚开始的配置如下:

服务器A的zookeeper配置IP为B外网IP;

服务器B的zookeeper配置IP为B内网IP。

运行报错,A的consumer连接不上。

dubbo外网连接失败_第1张图片

首先,这样两台服务器肯定是可以跑如下架构的,所以没跑起来肯定是我配置的原因,这一点我是始终坚信的。接下去就是debug时刻。

仔细查看报错,A的consumer报错信息里出现了B内网IP:端口链接失败的信息,这说明dubbo链接的IP是有问题的,从而证实了服务器B的配置IP错误,于是开始第一次尝试,更改服务器B的zookeeper配置IP

满心以为这次修改肯定没问题了,没想到还是报错,当然报错的IP并没问题,想到可能是zookeeper的问题,因为之前一直是内网链接,是不是zookeeper也有相应的配置,于是查询了解到zookeeper需要配置文件修改,在zoo.cfg配置文件中需要加上 quorumListenOnAllIPs=true

于是开始了第二次尝试,更改配置并重启服务,运行之。结果问题依旧。

为什么还是链接不上,zookeeper的问题都得到了排除,那肯定是dubbo的问题了。于是查询dubbo的链接,发现原来dubbo链接默认是内网,而A链接B是外网链接。如果A要连接到B,需要更改B的hosts配置。最终修改如下:

服务器B执行:hostname

这一步查看服务器B的主机名

服务器B执行:vim /etc/hosts

在最前面加上 服务器B的外网IP 服务器B的主机名

重启zookeeper,问题解决,dubbo顺利外网链接。

你可能感兴趣的:(dubbo,java,java-zookeeper)