Dubbo无法访问远程Zookeeper已注册服务的问题解决方案
2019-10-21 18:06
901 查看
背景
使用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端口即可。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接
您可能感兴趣的文章:
相关文章推荐
- Dubbo无法访问远程Zookeeper已注册服务的问题
- NET(C#)接入Dubbo服务,Zookeeper作为Dubbo服务的注册中心,实现thrift协议访问接口(3)
- NET(C#)接入Dubbo服务,Zookeeper作为Dubbo服务的注册中心,实现thrift协议访问接口(2)
- VMware虚拟机无法ping通/分配虚拟IP/远程访问的问题的解决方案:
- centos ssh服务可以使用(能远程访问),SSH命令无法执行的问题
- NET(C#)接入Dubbo服务,Zookeeper作为Dubbo服务的注册中心,实现thrift协议访问接口(2)
- dubbo服务无法注册问题 Failed to subscribe consumer:// 解决方法
- NET(C#)接入Dubbo服务,Zookeeper作为Dubbo服务的注册中心,实现thrift协议访问接口(1)
- NET(C#)接入Dubbo服务,Zookeeper作为Dubbo服务的注册中心,实现thrift协议访问接口(1)
- 使用dubbo注解@Service注册服务后使用aop或者申明式事物导致无法注册的问题解决办法
- springcloud做微服务时,普通服务无法访问Eureka注册中心上的配置中心的问题
- 部署dubbo-admin监控dubbo服务(以zookeeper为注册中心)
- ghost版winxp 远程桌面无法访问的问题
- 解决Centos7开启Django服务不能远程访问的问题
- 【转】SQL2005无法启动SQL Server 请求失败或服务未及时响应等问题的解决方案
- windows server 2003 上“您要访问的网页有问题,无法显示。HTTP 500 - 内部服务器错误。”的问题解决方案!
- reids学习中遇到的一些问题(远程主机无法访问)
- 局域网常见问题解决方案之你可能没有权限使用网络资源无法访问网上邻居
- 针对google 境外服务无法访问的临时解决方案
- 解决WebService本地访问正常,远程无法访问的问题