nacos2.X版本无法注册的几个原因以及解决方案(踩坑避雷!)

nacos2,版本,无法,注册,几个,原因,以及,解决方案,避雷 · 浏览次数 : 152

小编点评

1. nacos和dubbo版本不匹配这是可能性最高的,首先nacos目前已经有2.X的版本了,如果使用低版本的nacos比如1.4可能会和dubbo版本产生冲突,第一次引入版本的时候也是发现了这个问题,关于版本匹配可以到官网上查询版本对应信息。dubbo中文官网:http://dubbo.apache.org/zh-cn/dubbo整合nacos流程:https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/registry/nacos/nacos中文官网:https://nacos.io/zh-cn/index.html 2. nacos2.X版本需额外开放端口由于nacos2.X版本之后新增了gRPC的通信方式,因此需要增加2个端口!大坑!如果你使用的是1.X的nacos,那只需要开放8848就行了,如果你使用的是2.X版本,那就必须额外开放9848,9849端口。如果你用的是docker部署nacos,那你在拉取容器做端口映射的时候就要额外映射两个端口号,这也是我之前遇到的问题。 3. nacos2.X版本需额外开放端口由于nacos2.X版本之后新增了gRPC的通信方式,因此需要增加2个端口!大坑!如果你使用的是1.X的nacos,那只需要开放8848就行了,如果你使用的是2.X版本,那就必须额外开放9848,9849端口。如果你用的是docker部署nacos,那你在拉取容器做端口映射的时候就要额外映射两个端口号,这也是我之前遇到的问题。

正文

在使用nacos+dubbo 注册服务的时候 遇到了无法注册的问题
记录一下踩的坑以及解决方案
在这里插入图片描述

com.alibaba.nacos.api.exception.NacosException: Request nacos server failed: 
	at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.requestToServer(NamingGrpcClientProxy.java:288) ~[nacos-client-2.1.0.jar:na]
	at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.doRegisterService(NamingGrpcClientProxy.java:128) ~[nacos-client-2.1.0.jar:na]
	at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.registerService(NamingGrpcClientProxy.java:114) ~[nacos-client-2.1.0.jar:na]
	at com.alibaba.nacos.client.naming.remote.NamingClientProxyDelegate.registerService(NamingClientProxyDelegate.java:94) ~[nacos-client-2.1.0.jar:na]
	at com.alibaba.nacos.client.naming.NacosNamingService.registerInstance(NacosNamingService.java:145) ~[nacos-client-2.1.0.jar:na]
	at com.alibaba.cloud.nacos.registry.NacosServiceRegistry.register(NacosServiceRegistry.java:74) ~[spring-cloud-starter-alibaba-nacos-discovery-2021.1.jar:2021.1]
	at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.register(AbstractAutoServiceRegistration.java:232) [spring-cloud-commons-3.0.2.jar:3.0.2]
	at com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration.register(NacosAutoServiceRegistration.java:78) [spring-cloud-starter-alibaba-nacos-discovery-2021.1.jar:2021.1]
	at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.start(AbstractAutoServiceRegistration.java:133) [spring-cloud-commons-3.0.2.jar:3.0.2]
	at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.bind(AbstractAutoServiceRegistration.java:98) [spring-cloud-commons-3.0.2.jar:3.0.2]
	at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.onApplicationEvent(AbstractAutoServiceRegistration.java:86) [spring-cloud-commons-3.0.2.jar:3.0.2]
	at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.onApplicationEvent(AbstractAutoServiceRegistration.java:47) [spring-cloud-commons-3.0.2.jar:3.0.2]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) [spring-context-5.3.12.jar:5.3.12]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) [spring-context-5.3.12.jar:5.3.12]
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) [spring-context-5.3.12.jar:5.3.12]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:421) [spring-context-5.3.12.jar:5.3.12]
	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) [spring-context-5.3.12.jar:5.3.12]
	at org.springframework.boot.web.servlet.context.WebServerStartStopLifecycle.start(WebServerStartStopLifecycle.java:46) [spring-boot-2.5.6.jar:2.5.6]
	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178) [spring-context-5.3.12.jar:5.3.12]
	at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54) [spring-context-5.3.12.jar:5.3.12]
	at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356) [spring-context-5.3.12.jar:5.3.12]
	at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_333]
	at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155) [spring-context-5.3.12.jar:5.3.12]
	at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123) [spring-context-5.3.12.jar:5.3.12]
	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:935) [spring-context-5.3.12.jar:5.3.12]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) [spring-context-5.3.12.jar:5.3.12]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.5.6.jar:2.5.6]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-2.5.6.jar:2.5.6]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-2.5.6.jar:2.5.6]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:338) ~[spring-boot-2.5.6.jar:2.5.6]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-2.5.6.jar:2.5.6]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1332) ~[spring-boot-2.5.6.jar:2.5.6]
	at com.hdg.user.HdgServerUserApplication.main(HdgServerUserApplication.java:13) ~[classes/:na]
Caused by: com.alibaba.nacos.api.exception.NacosException: Client not connected, current status:STARTING
	at com.alibaba.nacos.common.remote.client.RpcClient.request(RpcClient.java:651) ~[nacos-client-2.1.0.jar:na]
	at com.alibaba.nacos.common.remote.client.RpcClient.request(RpcClient.java:631) ~[nacos-client-2.1.0.jar:na]
	at com.alibaba.nacos.client.naming.remote.gprc.NamingGrpcClientProxy.requestToServer(NamingGrpcClientProxy.java:278) ~[nacos-client-2.1.0.jar:na]
	... 32 common frames omitted

首先无法注册可能有以下几个原因:

1. nacos和dubbo版本不匹配

这是可能性最高的,首先nacos目前已经有2.X的版本了,如果使用低版本的nacos比如1.4可能会和dubbo版本产生冲突,第一次引入版本的时候我也是发现了这个问题,关于版本匹配可以到官网上查询版本对应信息。
dubbo中文官网:http://dubbo.apache.org/zh-cn/
dubbo整合nacos流程:https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/registry/nacos/
nacos中文官网:https://nacos.io/zh-cn/index.html

这里我用的是dubbo3.0.9和nacos2.1.0,亲测是可以稳定使用的

2.开启了防火墙

如果你启动了nacos之后,nacos客户端http://部署的ip地址:8848/nacos/无法访问
那可能是开了防火墙
正常访问界面:
在这里插入图片描述
如果有防火墙,则需要开放相关端口(例如tcp 8848)才能使用nacos服务。

3. nacos2.X版本需额外开放端口

由于nacos2.X版本之后新增了gRPC的通信方式,因此需要增加2个端口!大坑!
在这里插入图片描述
如果你使用的是1.X的nacos,那只需要开放8848就行了,如果你使用的是2.X版本,那就必须要额外开放9848,9849端口。
如果你用的是docker部署nacos,那你在拉取容器做端口映射的时候就要额外映射两个端口号,这也是我之前遇到的问题。

产生错误的容器nacos启动命令(1.X版本可用):

docker run -d --name nacos -p 8848:8848 --privileged=true --restart=always -e MODE=standalone -d nacos/nacos-server:v2.1.1

2.X版本后nacos容器启动命令:

docker run -d --name nacos -p 8848:8848 -p 9848:9848 -p 9849:9849 --privileged=true --restart=always -e MODE=standalone -d nacos/nacos-server:v2.1.1

如果你是在服务器上部署的则要去服务器上开放这两个端口
在这里插入图片描述

注册成功界面:

在这里插入图片描述

nacos客户端界面显示注册成功<(^-^)>√:
在这里插入图片描述

与nacos2.X版本无法注册的几个原因以及解决方案(踩坑避雷!)相似的内容:

nacos2.X版本无法注册的几个原因以及解决方案(踩坑避雷!)

nacos2.X版本无法注册的几个原因以及解决方案(踩坑避雷!)

[转帖]nacos discovery和config

微服务和nacos版本都在2.x及之后。 1、discovery用于服务注册,将想要注册的服务注册到nacos中,被naocs发现。 pom引入的依赖是: yml配置文件中: 2、config用于获取nacos配置管理->配置列表下配置文件中的内容 pom引入的依赖是: 获取nacos的配置有三种方

Springcloud2021+Nacos2.2+Dubbo3+Seata1.6实现分布式事务

> 示例代码地址:https://gitee.com/gtnotgod/Springcloud-alibaba.git 更详细参考Gitee完整的项目:https://gitee.com/gtnotgod/Springcloud-alibaba.git # 官网下载Nacos > https://n

[转帖]记一次使用nacos2踩到的坑

https://cloud.tencent.com/developer/article/2077110?areaSource=104001.26&traceId=7WZNP412yK3vh7ebw4th0 前言 本文素材来源朋友学习nacos2.1.1踩到的坑。直接上正菜 坑点一:出现端口被占用 因

聊聊Nacos框架功能与原理

Nacos的设计有两点很值得参考;首先是注册中心模块,服务状态动态感知是基于HTTP短链接+UDB通信来实现,其实正确来说,应该是基于UDP通信实现客户端与服务端的服务实例列表数据同步,利用http定时任务来做补偿。其次配置中心模块的配置信息动态监听基于HTTP长轮询实现,最大限度的保证了实时性,在

[转帖]Nacos和Eureka的区别

Eureka架构图: Eureka架构图 1.服务注册(register):Eureka Client会通过发送REST请求的方式,向Eureka Server注册自己的服务。注册时,提供自身的元数据,比如ip地址、端口、运行状况指标、主页地址等信息。Eureka Server接收到注册请求后,就会

Nacos集群启动注意事项

简介 Nacos是阿里巴巴开源的一套服务注册发现的应用 使用简单灵活, 是spring Cloud Alibaba的组成部分 现在拆分微服务的部署情况下,极大的需求nacos服务作为支撑 单点情况下存在宕机的危险, 所以最近为了进行测试验证. 所以准备启用一套集群版本的nacos集群进行测试兼容性验

[转帖]nacos修改密码

https://www.cnblogs.com/cherish-code/p/14765862.html nacos修改默认的用户名密码 修改配置文件, vim nacos/conf/application.properties 在配置文件加入如下: spring.datasource.platfo

[转帖]Nacos 是什么?

https://my.oschina.net/u/4526289/blog/5605693 摘要:Nacos 是 Dynamic Naming and Configuration Service 的首字母简称,相较之下,它更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 本文分享自华为云

[转帖]nacos开启强鉴权

注意 Nacos是一个内部微服务组件,需要在可信的内部网络中运行,不可暴露在公网环境,防止带来安全风险。 Nacos提供简单的鉴权实现,为防止业务错用的弱鉴权体系,不是防止恶意攻击的强鉴权体系。 如果运行在不可信的网络环境或者有强鉴权诉求,请参考官方简单实现做替换增强。 鉴权 服务端如何开启鉴权 非