歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Dubbo服務主機IP沒有綁定的坑(dubbo注冊時出現主機上沒有的IP的解決方案)

初次使用dubbo,在研發環境和測試環境測試沒有問題,然後將服務上線,上線後,Dubbo服務端啟動正常,客戶端啟動失敗,並提示

 

Caused by: java.lang.IllegalStateException: Failed to check the status of the service com.xxx.xxx.service.LoginService. No provider available for the service com.xxxx.xxxx.service.LoginService:3.0 from the url zookeeper://202.106.199.37:2181/com.alibaba.dubbo.registry.RegistryService?anyhost=true&application=xxx&application.version=3.0&check=false&default.timeout=5000&dubbo=2.5.3&interface=com.xxx.xxx.service.LoginService&methods=aLogin,bPassword,userLogin,modifyPasswordLogin,validate,fVersion,xLogout,userLogout,getTest,getCode,aLogin,aToken,aUser&pid=2200&revision=1.0&side=consumer×tamp=1462534379328&version=3.0 to the consumer 202.106.199.37 use dubbo version 2.5.3

意思是啟動消費者服務的時候,檢查Dubbo提供的服務接口時異常,在消費者服務器上,訪問不了zookeeper://202.106.199.37:2181/com.alibaba.dubbo.registr這個地址提供的服務。

 

排查這個問題時,發現:

1. 202.106.199.37並不是生產者,消費者服務器上設置的IP地址,一個莫名跑出來的IP地址

2. zookeeper的配置是 ,怎麼會變成zookeeper://202.106.199.37:2181/了

3. 在DubboAdmin管理控制台,發現生產者,消費者都有,就是生產者端提示沒有消費者。

4. 生產環境有VPN,測試環境也有VPN,測試環境沒有事,在生產環境卻出問題,所以排除VPN的問題。

通過搜索問題,發現很多人出現類似問題,就是Dubbo在有VPN的機器上需要綁定主機公網IP,但是公網IP是映射過來的,所以解決路徑走不通。

另外一個是說Dubbo使用了一個DNS的地址,通過修改Dubbo服務器上的DNS配置【vim /etc/resolv.conf 】把服務名稱改到DNS上去就可以了。這個我沒有做。覺得太麻煩。

最後還是覺得應該是IP綁定的事。把管理控制台中【dubbo/webapps/ROOT/WEB-INF/dubbo.properties】文件中加入【dubbo.protocol.host=192.168.0.123】,然後在Dubbo服務端spring的dubbo配置文件【】中加入【 host="192.168.0.123"】,在Dubbo消費者端加入【】的配置。然後重啟Dubbo管理員控制台、停止消費者端,停止服務提供端,啟動服務提供端,再啟動消費者端。去管理控制台刷新看看,是不是一切都正常了!

說明:我們線上目前就一台機器,所以服務端和消費者端都是同一個IP地址,如果你是服務器集群,這個僅供參考。

192.168.0.123這個IP地址是VPN給內網映射的IP地址,其他IP地址和本機的IP地址沒有試過行不行,所以需要自行測試。

Copyright © Linux教程網 All Rights Reserved