时间:2021-05-20
背景
使用Dubbo的时候发现当Zookeeper、Dubbo-admin、生产者和消费者都在内网中的时候,生产者的生产和消费是没有问题的,但是当它Zookeeper、生产者放到远程服务器上,然后消费者在访问消费就出现了无法找到找到服务的问题。
内网环境使用情况
上述的图是在同一个内网中,使用的代码如下:
1、生产者配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://.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端口即可。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
先看解决方案#------------mysqlroot用户无法赋权问题解决--------1,登录mysql-uroot-p2,usemysql;选择mysq
问题在本地启动dubbo时,服务注册在本地的zookeeper,但是注册IP却不是本地的iP。产生问题,导致consumer找不到provider,访问不了服务
pythonsocket.error:[Errno10054]远程主机强迫关闭了一个现有的连接。问题解决方案:前几天使用python读取网页。因为对一个网站大量
前言本文主要探讨集群后不同Web服务器获取Session数据的问题解决方案。SessionStickSessionStick方案即将客户端的每次请求都转发至同一
问题:使用keep-alive标签后部分安卓机返回缓存页位置不精确问题解决方案:constrouter=newRouter({scrollBehavior(to