程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Dubbo無法訪問遠程Zookeeper已注冊服務的問題

Dubbo無法訪問遠程Zookeeper已注冊服務的問題

編輯:C++入門知識

Dubbo無法訪問遠程Zookeeper已注冊服務的問題


背景

使用Dubbo的時候發現當Zookeeper、Dubbo-admin、生產者和消費者都在
內網中的時候,生產者的生產和消費是沒有問題的,但是當它Zookeeper、生產者放到遠程服務器上,然後消費者在訪問消費就出現了無法找到找到服務的問題。

內網環境使用情況

這裡寫圖片描述

上述的圖是在同一個內網中,使用的代碼如下:

1、生產者配置

<code class=" hljs xml"><!--{cke_protected}{C}%3C!%2D%2D%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%2D%2D%3E-->
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemalocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <dubbo:application name="Jhd_Security" owner="allen.xu" organization="MyJhd">

    <dubbo:registry address="zookeeper://172.16.61.101:2181" timeout="500000" group="JhdGroup" id="myjhd_id">

    <!--{cke_protected}{C}%3C!%2D%2D%20%E6%9A%B4%E9%9C%B2%E5%87%BA%E5%8E%BB%E7%9A%84%E6%8E%A5%E5%8F%A3%2D%2D%3E-->
    <bean id="dubboDemoFacade" class="com.dubbo.demo.facade.impl.DubboDemoFacade">

    <dubbo:service ref="dubboDemoFacade" interface="com.dubbo.demo.facade.IDubboDemoFacade" version="1.0.0" cluster="failfast" executes="10" timeout="500000" registry="myjhd_id">
    </dubbo:service>

</bean></dubbo:registry></dubbo:application></beans></code>

2、消費者配置

<code class=" hljs xml"><!--{cke_protected}{C}%3C!%2D%2D%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%2D%2D%3E-->
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemalocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <dubbo:application name="consumer-of-sayHello-app" owner="allen.xu" organization="MyJhd">

    <dubbo:registry address="zookeeper://172.16.61.101:2181" timeout="500000" group="JhdGroup" id="myjhd_id">

   <dubbo:reference id="dubboDemoFacade" interface="com.dubbo.demo.facade.IDubboDemoFacade" version="1.0.0" cluster="failfast" timeout="500000" registry="myjhd_id">
</dubbo:reference></dubbo:registry></dubbo:application></beans></code>

3、演示效果

這裡寫圖片描述

這裡寫圖片描述vcn6svrV37rNz/u30dXftcRpcMrH0rvR+bXEo6y8yMrH1NqxvrXYyc/Kx7/J0tTUy9DQtcShozwvcD4NCjxoMiBpZD0="多網環境使用情況">多網環境使用情況

這裡寫圖片描述

如果根據相關的Zookeeper修改上述中的IP地址,其他不用修改的情況下,使用上邊的代碼,則會出現生產者可以注冊到注冊中心,但是消費者無法消費到該服務。

在Dubbo-admin上可以看到生產者信息,但是消費者確無法使用該服務,這是因為防火牆的問題。

這裡寫圖片描述

可以看到上邊的端口是20880,這是dubbo默認的,消費者在消費該服務的時候也會通過該端口去使用服務,因此修改防火牆名單。

在 /etc/sysconfig/iptables中添加下邊內容:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 20880 -j ACCEPT

表示開啟20880端口

這裡寫圖片描述

然後:service iptables restart 重啟防火牆即可。

另外的一種方式是:我們可以指定生產者消費者的端口,可以通過

這樣的話,同樣開啟8889端口即可。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved