Dubbo暴露外网IP

  • dubbo + zookeeper本地发布服务调用时正常

  • 将dubbo服务发布到服务器上,本地应用启动时报错:
    client reconnect to 192.168.30.110:20880 find error . url: dubbo://192.168.30.110:20880/xxxxxxxxxx

  • 类似错误,大致意思是无法连接,或者找不到对应的服务

  • 服务配置信息如下:
    <dubbo:protocol name="dubbo" port="6347" host="127.0.0.1" />

  • 解决方案:
    1.发现ip为192.168.30.110,说明暴露的是服务器本地ip,本地上如果不能直接和服务器内网通信则无法连接
    2.查找相应资料,博客解释dubbo会默认根据主机名称获取ip
    3.将hosts文件配置映射,新加一行 :外网ip 主机名称,将主机名称映射到外网ip
    4.windows下可通过计算机右键属性查看计算机全名就是主机名称,linux下可通过hostname命令查看主机名称
    5.修改完成后重新启动dubbo服务,打开dubbo控制台查看发现此时暴露的已经是外网ip,再启动消费端应用发现可以正常访问
    6.一般情况物理机这样设置之后可以直接访问,由于我部署的服务器是虚拟机,访问的端口是外网端口再映射到内网,所以这里我需要运维将内网端口和外网端口保存一致才可以访问,比如原来是服务器的内网端口20880对应外网端口20888,实际上我调用dubbo接口需要访问20888,这里需要统一,比如将内外网端口都统一为20880