首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

Dubbo 遠程 Zookeeper 服務無法訪問問題排查(防火牆/端口)

     編輯:關於C++

一、問題背景

內網環境下 Dubbo 生產者/消費者/Zookeeper 通訊正常。將 Zookeeper 和生產者部署到遠程服務器後,消費者雖能在 Dubbo-admin 看到服務,但調用失敗。

二、原因分析

Dubbo 默認通訊端口為 20880。生產者向 Zookeeper 註冊時暴露此端口,消費者需連接此端口調用服務。遠程部署時,服務器防火牆攔截了 20880 端口,導致消費者無法建立連接。

三、解決方案

方法一:開放防火牆端口(推薦)

編輯 /etc/sysconfig/iptables,添加:

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

重啟防火牆:service iptables restart

方法二:自定義 Dubbo 端口

在生產者配置中指定端口:

<dubbo:protocol name="dubbo" port="8889"/>

同樣需在防火牆開放 8889 端口。

四、配置示例(生產者/消費者)

生產者

<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"/>
<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: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"/>

五、驗證

開放端口後,消費者即可正常調用遠程服務。建議生產環境使用安全組/防火牆策略限制來源 IP。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved