Py学习  »  docker

dubbo+docker踩雷记录: dubbo注册ip为内网IP,无法调用远程服务的坑及解决方法

brezp • 4 年前 • 275 次点击  
阅读 19

dubbo+docker踩雷记录: dubbo注册ip为内网IP,无法调用远程服务的坑及解决方法

在平时的开发过程中,当涉及到两个中心之间相互调用,比如:服务A和服务B,服务A调用服务B,为了不影响每个人的开发进度,服务B开发完成后,应该把服务部署到开发环境,服务A配置直接调用服务B,而不是服务A的开发者拉取两个项目到本地启动进行联调。

dubbo如何本地调用线上服务

dubbo开发时本地调用线上服务,有以下几个步骤:

(1)被服务提供者注册到注册中心的ip地址必须要外网IP,否则本地开发无法调用。

(2)更改本地application.properties配置文件zookeeper地址

dubbo.registry.address = zookeeper://${公网ip}:2181

重启服务即可

重点 问题来了

服务提供者没有注册正确的ip到zookeeper?

一般来说,服务是采用docker进行部署的,根据dubbo获取IP的策略,很有可能获取到局域网ip,因此在开发环境的同一局域网内调用没有问题,但无法进行本地调用远程服务的操作。

查阅dubbo官方文档:

dubbo获取服务ip的源码:

官方提供的解决方法:

Docker环境中的解决方法

在docker的环境配置中添加 DUBBO_IP_TO_REGISTRY={服务所在服务器的外网IP} 即可解决问题。

让你的本地开发如丝般顺滑!!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55303
 
275 次点击