weibocom / motan

A cross-language remote procedure call(RPC) framework for rapid development of high performance distributed services.
Other
5.88k stars 1.78k forks source link

rpc服务启动后注册到zk里面的ip地址不是当前应用服务器的内网ip #1041

Open showsmall opened 1 year ago

showsmall commented 1 year ago

rpc服务启动后注册到zk里面的ip地址不是当前应用服务器的内网ip 比如:测试环境app1应用,网卡绑定的内网ip是:172.16.10.1 但是app1启动后,在zk里面注册的ip不是这个本地Ip,而是获取到了/etc/resolv.conf 文件里面的域名的Ip:10086.cn这个域名对应的ip os:Centos 7.6 内容如下:/etc/resolv.conf search 10086.cn nameserver 223.5.5.5 nameserver 223.6.6.6

rayzhang0603 commented 1 year ago

可以通过下面三个方式来控制导出服务所使用的ip:

  1. 可以通过MOTAN_IP_PREFIX环境变量指定期望使用的ip前缀。比如设置环境变量MOTAN_IP_PREFIX为172.16,则会优先使用172.16开头的ip地址。
  2. 可以通过设置服务器的hostname来指定ip。根据你的问题描述,有可能是服务器设置了hostname为10086.cn,所以获取到了这个域名对应的ip。
  3. 可以在basicService或者service配置中设置host属性来指定要使用的ip,比如<motan:basicService host="172.16.10.1" ... >

如果不能调整hostname的话,建议通过设置环境变量方式指定要使用的ip的前缀。

Motan获取本机ip的代码逻辑可以参考这里