一、现象
这个问题困扰了笔者很久,终于找到解决方案。服务提供端代码:
<dubbo:registry address="zookeeper://120.25.252.145:2181"/>
但是服务消费端却无法访问。
二、原因
一般Dubbo服务都是通过内网调用,Dubbo服务启动时默认会将服务注册到内网IP,dubbo-admin也显示服务提供者为内网ip,消费端就无法从外网访问。
三、解决过程
1、Linux的hosts中设置外网IP
a) 通过hostname命令得到机器名
b) 通过vim /etc/hosts设置机器名对应的外网IP
127.0.0.1 localhost localhost.localdomain
外网IP 主机名
2、然后依次重新启动以下内容
Zookeeper服务–>重启Dubbo服务生产者–>重启Dubbo服务消费者,既可以成功运行。