阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

320次阅读
没有评论

共计 3089 个字符,预计需要花费 8 分钟才能阅读完成。

背景

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

内网环境使用情况

Dubbo 无法访问远程 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、演示效果

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

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

可以看到生产者和消费者的 ip 是一样的,既是在本地上是可以运行的。

多网环境使用情况

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

如果根据相关的 Zookeeper 修改上述中的 IP 地址,其他不用修改的情况下,使用上边的代码,则会出现生产者可以注册到注册中心,但是消费者无法消费到该服务。

在 Dubbo-admin 上可以看到生产者信息,但是消费者确无法使用该服务,这是因为防火墙的问题。

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

可以看到上边的端口是 20880,这是 dubbo 默认的,消费者在消费该服务的时候也会通过该端口去使用服务,因此修改防火墙名单。

在 /etc/sysconfig/iptables 中添加下边内容:

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

表示开启 20880 端口

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

然后:service iptables restart 重启防火墙即可。

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

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

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

————————————– 分割线 ————————————–

Ubuntu 14.04 安装分布式存储 Sheepdog+ZooKeeper  http://www.linuxidc.com/Linux/2014-12/110352.htm

CentOS 6 安装 sheepdog 虚拟机分布式储存  http://www.linuxidc.com/Linux/2013-08/89109.htm

ZooKeeper 集群配置 http://www.linuxidc.com/Linux/2013-06/86348.htm

使用 ZooKeeper 实现分布式共享锁 http://www.linuxidc.com/Linux/2013-06/85550.htm

分布式服务框架 ZooKeeper — 管理分布式环境中的数据 http://www.linuxidc.com/Linux/2013-06/85549.htm

ZooKeeper 集群环境搭建实践 http://www.linuxidc.com/Linux/2013-04/83562.htm

ZooKeeper 服务器集群环境配置实测 http://www.linuxidc.com/Linux/2013-04/83559.htm

ZooKeeper 集群安装 http://www.linuxidc.com/Linux/2012-10/72906.htm

Zookeeper3.4.6 的安装 http://www.linuxidc.com/Linux/2015-05/117697.htm

————————————– 分割线 ————————————–

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-02/128640.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3089字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中