重庆幸运农场中奖金额|重庆幸运农场官网
MyException - 我的異常網
當前位置:我的異常網» 軟件架構設計 » 解決dubbo注冊zookepper服務IP亂入有關問題的三種方

解決dubbo注冊zookepper服務IP亂入有關問題的三種方式

www.h0f1.com  網友分享于:2018-06-06  瀏覽:0次
解決dubbo注冊zookepper服務IP亂入問題的三種方式

解決dubbo注冊zookepper服務IP亂入問題的三種方式

最近做一個項目引入了dubbo+zookepper的分布式服務治理框架。在應用的發布的時候出現一個怪問題。zookepper服務是起在開發服務器192.168.23.180上。本機起應用服務提供者注冊到192.168.23.180上的dubbo服務可以注冊成功,用dubbo-admin看也是本機的IP:10.1.24.20。本機起的客戶端程序也可以正常調用。但是服務提供者發布到192.168.23.180服務器上去就不行了。發布到服務器上注冊的服務地址就變成了124.232.132.94:20883,這個地址消費者根本就找不到,所以老是報連接超時。按道理來說應該是192.168.23.180是服務提供者的地址才對。開始以為是代碼里寫了一個124.232.132.94這樣的地址,搜了一遍沒有找到。搜了一遍服務器的配置也沒有這樣一個地址。這個地址不知道是從哪里來的。應為服務提供者和zookepper在一臺機器上,將服務提供者的注冊地址改成127.0.0.1,發現還是一樣的注冊上去后就變成了124.232.132.94。于是懷疑是不是服務器上做了地址轉發什么的。
上網找了一些資料發現原來是由于服務器上配了DNS的問題。
經過測試解決辦法有以下幾個:
1、去掉服務器上的DNS配置
找到服務器上的/etc/resolv.conf 將DNS配置去掉或配置成8.8.8.8或配成192.168.23.180這樣這臺服務器的DNS不可用。
參考配置如下
#nameserver 222.246.129.80
#nameserver 59.51.78.210
#nameserver 8.8.8.8
nameserver 192.168.23.180
#search localdomain
服務啟動的時候會報一個"未知的名稱或服務"的錯誤,但是不要緊,服務可以正常啟動。也可以正常注冊到zookepper,注冊的地址也是真實的服務器地址。客戶端可以正常訪問。

2、在工程duboo注冊服務配置文件里指定IP
把管理控制臺中dubbo/webapps/ROOT/WEB-INF/dubbo.properties文件中加入dubbo.protocol.host=192.168.23.180,然后在Dubbo服務的dubbo配置文件<dubbo:protocol
 name="dubbo" port="20883"  />中加入 host="192.168.23.180",在Dubbo消費者端加入<dubbo:protocol host="192.168.0.123" />的配置。然后重啟Dubbo管理員控制臺、停止消費者端,停止服務提供端,啟動服務提供端,再啟動消費者端。
參考配置如下:
服務提供者provider.xml
<!-- 用dubbo協議在20880端口暴露服務 -->
<dubbo:protocol name="dubbo" host="192.168.23.180" port="20883" />
消費者consumer.xml
<dubbo:protocol host="192.168.23.180" />
配置完了后在dubbo-admin控制臺可以看到服務提供者注冊到zookepper上的dobbo服務已經是正常的192.168.23.180。消費者顯示的還是consumer://124.232.132.94/***** 但不影響調用。

3、在服務器上/etc/hosts,上配置主機名和注冊服務的IP。如:192.168.23.180 host2
沒有配置之前ping 主機名host2 返回的是124.232.132.94
ping host2
PING host2 (124.232.132.94) 56(84) bytes of data.
64 bytes from 124.232.132.94: icmp_seq=1 ttl=55 time=5.67 ms
在/etc/hosts里配置IP和主機名192.168.23.180 host2 后ping主機名host2返回 192.168.23.180
ping host2
PING host2 (192.168.23.180) 56(84) bytes of data.
64 bytes from host2 (192.168.23.180): icmp_seq=1 ttl=64 time=0.024 ms
配置完后,服務注冊IP地址正常,消費者可以正常訪問。

以上三種方式都可以解決問題,但是第3種方式更加直接方便,更好。
?

文章評論

軟件開發程序錯誤異常ExceptionCopyright © 2009-2015 MyException 版權所有
重庆幸运农场中奖金额