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端口即可。

转载于:https://my.oschina.net/zipu888/blog/549544

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值