Dubbo无法访问远程Zookeeper已注册服务的问题

背景

使用Dubbo的时候发现当Zookeeper、Dubbo-admin、生产者和消费者都在 内网中的时候,生产者的生产和消费是没有问题的,但是当它Zookeeper、生产者放到远程服务器上,然后消费者在访问消费就出现了无法找到找到服务的问题。

内网环境使用情况

上述的图是在同一个内网中,使用的代码如下:

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是一样的,既是在本地上是可以运行的。

多网环境使用情况

如果根据相关的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 重启防火墙即可。

另外的一种方式是:我们可以指定生产者消费者的端口,可以通过

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

这样的话,同样开启8889端口即可。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏黑泽君的专栏

linux基本命令学习01

============================================================================= Un...

15210
来自专栏静下来

discuz论坛修改注册页面增加提示的教程方法

其实discuz关于在注册页面增加相关提示,在后台也能设置一点点。 但是太局限性了,可能就不太适合有的站长。 那我们就可以通过修改注册页面的文件代码来实现了。 ...

43270
来自专栏猿说1024

JDK 安装

21760
来自专栏pangguoming

CentOS 7 开放防火墙端口命令

CentOS 7 开放防火墙端口 命令         最近公司新的server要求用CentOS7, 发现以前CentOS 6 系列中的 iptables 相...

995130
来自专栏一枝花算不算浪漫

[Linux基础]Linux基础知识入门及常见命令.

41670
来自专栏Seebug漏洞平台

Wordpress <= 4.6.1 使用语言文件任意代码执行 漏洞分析

Author: p0wd3r (知道创宇404安全实验室) 0x00 漏洞概述 1.漏洞简介 WordPress是一个以PHP和MySQL为平台的自由开源的博...

32640
来自专栏编程语言

Python:VScode 设置Python不同版本运行环境

1.首先本地安装有不同的Python的版本,比如2.7和3.5.mac下一般默认自带2.7版本。  终端输入侧  python -V 则显示默认版本号。而p...

13920
来自专栏前端大白专栏

关于roadhogrc 新版本问题

15850
来自专栏Youngxj

网站打包成app 博客打包成手机软件教程

39340
来自专栏闵开慧

eclipse中执行程序显示找不到主类

eclipse中执行程序显示找不到主类 这种情况一般出现在工程中已编译有class文件的java文件,而后面新建的java则不会出现问题。这种情况说明工程bin...

37150

扫码关注云+社区

领取腾讯云代金券