Dubbo無法訪問遠程Zookeeper已注冊服務的問題解決方案
背景
使用Dubbo的時候發(fā)現(xiàn)當Zookeeper、Dubbo-admin、生產者和消費者都在內網(wǎng)中的時候,生產者的生產和消費是沒有問題的,但是當它Zookeeper、生產者放到遠程服務器上,然后消費者在訪問消費就出現(xiàn)了無法找到找到服務的問題。
內網(wǎng)環(huán)境使用情況

上述的圖是在同一個內網(wǎng)中,使用的代碼如下:
1、生產者配置
<?xml version="1.0" encoding="UTF-8"?>
<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"/>
<!-- 暴露出去的接口-->
<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>
</beans>
2、消費者配置
<?xml version="1.0" encoding="UTF-8"?>
<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"/>
</beans>
3、演示效果


可以看到生產者和消費者的ip是一樣的,既是在本地上是可以運行的。
多網(wǎng)環(huán)境使用情況

如果根據(jù)相關的Zookeeper修改上述中的IP地址,其他不用修改的情況下,使用上邊的代碼,則會出現(xiàn)生產者可以注冊到注冊中心,但是消費者無法消費到該服務。
在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 重啟防火墻即可。
另外的一種方式是:我們可以指定生產者消費者的端口,可以通過
<dubbo:protocol name="dubbo" port="8889"/>
這樣的話,同樣開啟8889端口即可。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
相關文章
使用feign傳遞參數(shù)類型為MultipartFile的問題
這篇文章主要介紹了使用feign傳遞參數(shù)類型為MultipartFile的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
詳解SpringBoot?Start組件開發(fā)之記錄接口日志信息
這篇文章主要為大家介紹了SpringBoot-Start組件開發(fā)之記錄接口日志信息詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04
詳解Java中用于查找對象哈希碼值的hashCode()函數(shù)
Java中入HashMap等一些鍵值對應的結構,基本上都可以用hashCode()來查找值,接下來我們就來詳解Java中用于查找對象哈希碼值的hashCode()函數(shù):2016-05-05
Java的函數(shù)式接口@FunctionalInterface的使用說明
這篇文章主要介紹了Java的函數(shù)式接口@FunctionalInterface的使用說明,我們常用的一些接口Callable、Runnable、Comparator等在JDK8中都添加了@FunctionalInterface注解,需要的朋友可以參考下2024-01-01
Spring?Cloud?Alibaba實現(xiàn)服務的無損下線功能(案例講解)
這篇文章主要介紹了Spring?Cloud?Alibaba實現(xiàn)服務的無損下線功能?,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03

