转载

dubbo注册zookeeper服务时候ip错乱问题

  • dubbo注册zookeeper服务错乱

    问题描述:2台内网的服务器上分别跑了A与B 2个dubbo 工程,有天中午A服务器突然访问不到B服务器,排查网络问题,地址端口都是通的,重启dubbo工程也无济于事。

    后续排查发现B工程在启动的时候注册到zookeeper的地址居然是一个169.254. . 的地址,这个问题应该是ip变更导致注册的服务请求不到。

    IP地址169.254. . 实际上是自动私有IP地址。在Windows 2000以前的系统中,如果计算机无法获取IP地址,则自动配置成“IP地址:0.0.0.0”、“子网掩码:0.0.0.0”的形式,导致其不能与其它计算机进行通信。而对于Windows 2000以后的操作系统则在无法获取IP地址时自动配置成“IP地址:169.254. . ”、“子网掩码:255.255.0.0”的形式,这样可以使所有获取不到IP地址的计算机之间能够通信。

  • 解决方式

在dubbo配置文件中配置本机正确的IP地址

在服务提供者 spring-provider.xml 配置文件中配置

<dubbo:protocol id="DUBBOInnerService" name="dubbo" port="${ylzpay.check.service.dubbo.port}" />
    
<dubbo:provider protocol="DUBBOInnerService" host="${host}"/>

官方文档解释也是建议这个参数在多网卡情况下使用 ,如果当前ip无法正确获取的时候,可以先配置该参数解决这个问题。

host-自动查找本机IP    -服务主机名,多网卡选择或指定VIP及域名时使用,为空则自动查找本机IP,-建议不要配置,让Dubbo自动获取本机IP

参考文档:

IP地址为169.254. .

解决dubbo注册zookepper服务IP乱入问题

原文  https://segmentfault.com/a/1190000020082339
正文到此结束
Loading...