Nacos2.X报错“Client not connected, current status:STARTING”


环境信息

Nacos v2.2.3
spring-boot v2.7.6
spring-cloud v2021.0.5
spring-cloud-alibaba v2021.0.5.0

错误

已开放8848端口,可以正常通过控制台面板管理配置中心,在命令中端中也可以通过下面的命令手动注册服务

curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'

但是IDE中通过代码的形式无法注册到服务中心,报错”Client not connected, current status:STARTING“

解决

通过查询官方文档,官方文档中已经明确给出了解决方案

Nacos2.0版本相比1.X新增了gRPC的通信方式,因此需要增加2个端口。新增端口是在配置的主端口(server.port)基础上,进行一定偏移量自动生成。

使用VIP/nginx请求时,需要配置成TCP转发,不能配置http2转发,否则连接会被nginx断开。 9849和7848端口为服务端之间的通信端口,请勿暴露到外部网络环境和客户端测。

启动时报错Connection is unregistered.或Client not connected,current status:STARTING.
原因是客户端gRPC无法和服务端创建连接,请先使用telnet ${nacos.server.address}:${nacos.server.grpc.port}进行测试,查看网络是否畅通,服务端端口是否已经正确监听。

若服务端没有问题,查看配置是否有误,服务端和客户端的所配置的端口应一致。

若配置也没有问题,查看是否有防火墙或VIP端口转发问题,Nacos2.0的gRPC端口均通过主端口的偏移量计算产生,因此端口转发也需要满足该偏移量。

Nacos2.0增加了9848,9849端口来进行GRPC通信,我需要在application.properties中额外配置吗?
不需要,这两个端口在Nacos2.0内部是通过8848+1000以及8848+1001这种偏移量方式计算出来的,不需要用户额外在配置文件中配置。但如果使用的是docker或存在端口转发方式启动,需要把这两个端口进行配置。

启动nacos2.0时希望用nginx 代理,9848这个端口怎样处理,要通过nginx暴露出来么?以及docker是否需要映射?
如果存在防火墙或者nginx端口转发问题,需要进行相应的端口暴露配置。如在nginx中,在已经暴露8848(x)的基础上,需要额外暴露9848(x+1000)。

端口转发例子

以我本地举例,我本地是用docker-compose进行部署,如果我使用30045暴露8848端口,同时也要用31045(x+1000)来暴露9848端口

声明:初心|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - Nacos2.X报错“Client not connected, current status:STARTING”


愿你勿忘初心,并从一而终