一、zookeeper 注册地址和端口 需要能telnet通
例如:zookeeper://80.63.21.29:2191
二、提供者的接口是否指定了版本号
三、dubbo组是否正确
四、提供者dubbo服务的地址是否能正确访问通(重点)
1、命令输入: ./zkCli.sh -server 127.0.0.1:2191 进入zookeeper中心
2、再输入:ls命令 查看对应的组和接口
3、找到对应接口的/providers 和 /consumers
4、查看 provides 的地址和端口,例如:
dubbo://192.168.0.104:20113/
5、在消费者调用服务器中,telnet 该地址和端口
如果相通则为其他原因,检查一、二、三项
不相通可能是因为使用了docker部署服务,或者是因为类似于docker的方式。所以zookeeper中心得到的是内网地址,这样消费者访问提供者时,无法访问该内网地址而导致的提供者不存在问题。
6、解决方式问题
(1). docker 解决方式:
在docker-compose.yml 的 environment 下 配置这两个变量 (必须是大写!)
environment:
- DUBBO_IP_TO_REGISTRY=ip
- DUBBO_PORT_TO_REGISTRY=port
例如:
environment:
- DUBBO_IP_TO_REGISTRY=118.21.130.9
- DUBBO_PORT_TO_REGISTRY=20113
说明:
DUBBO_IP_TO_REGISTRY=<发现IP地址> (是发现地址,对应dubbo.protocol.host主要是填docker宿主机的IP,可用让其他服务器能访问接口)
DUBBO_PORT_TO_REGISTRY=<发现端口> (是发现端口,对应dubbo.protocol.port)
如果docker的compose.yml内有手动分配network,则需要加上
DUBBO_IP_TO_BIND=<容器内IP> (表示绑定容器发现IP)
DUBBO_PORT_TO_BIND=<dubbo.protocol的端口> (表示用于绑定容器发现端口)
docker容器端口映射时,最好是保持一致
(2). jvm方式,直接 java 启动命令里加就行:
java -DDUBBO_IP_TO_REGISTRY="118.21.130.9" -DDUBBO_PORT_TO_REGISTRY="20113" -jar demo.jar
1万+

被折叠的 条评论
为什么被折叠?



