环境信息
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端口
Comments | NOTHING