1芬首、問題描述
如圖,本地在內(nèi)網(wǎng)的ip為172.27.43.8逼裆,但是服務(wù)注冊到了zk上后郁稍,ip變成了本地的ip:192.168.68.2
1.jpg
2.jpg
2、原因解析
發(fā)布服務(wù)到遠(yuǎn)程zk胜宇,dubbo是調(diào)用ServiceConfig.doExportUrlsFor1Protocol方法耀怜,
在doExportUrlsFor1Protocol方法中,通過以下兩步獲取到host和port兩個值桐愉。
3.png
服務(wù)注冊到zk上所用的ip封寞,正是這個host,這個findConfigedHosts方法仅财,入?yún)⒕桶╬rotocolConfig。
因此我們猜想碗淌,修改protocolConfig中的host配置盏求,是不是就可以改變服務(wù)注冊到zk上所顯示的ip抖锥?
3、解決方法
在dubbo的xml配置文件中碎罚,配置protocol屬性如下:
<dubbo:protocol name="dubbo" id="dubbo" host="172.27.43.8"/>
將host改為本地的ip后磅废,重新嘗試將服務(wù)注冊到zk,發(fā)現(xiàn)zk上的ip已經(jīng)變?yōu)槲覀兯渲玫膆ost荆烈,問題解決~
4.jpg