黑马的springcloud项目用的是旧的nacos,如果使用的是nacos2版本及以上的,需要自己修改,且nacos2新增了两个需要偏移的端口,我们弄端口的时候需要注意一下
首先我们要是自己下载的nacos2版本以上,我们里面的配置需要自己来配置
要是报错这个
EROR Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name basicAuthenticationFilter defined in class path
Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
最新2.2.1版本Nacos单机启动失败-CSDN博客
可以看我的这个内容
第一个常见错误
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memoryMonitor' defined in URL [jar:file:/D:/Nacos-2.2.1/nacos-server-2.2.11/nacos8845/target/nacos-server.jar!/BOOT-INF/lib/nacos-config-2.2.
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'asyncNotifyService': Unsatisfied dependency expressed through field 'dumpService'; nested exception is org.springframework.beans.fa
com.alibaba.nacos.api.exception.NacosException: Nacos Server did not start because dumpservice bean construction failure :
by: java.lang.IllegalStateException: No DataSource set
WARN [ThreadPoolManager] Start destroying ThreadPool
WARN [ThreadPoolManager] Destruction of the end
这个可能可能是我们重启的时候,忘记打开数据库了
反正我打开navicat连接一下数据库就能启动了
然后我补充一下
不仅仅我们要在这个application.properties文件里面配置我们的秘钥token,其他没填的内容我们也要自己填上去发布历史 | Nacos
我们看看我们的nacos的application配置文件
我们会有一些空的东西,这种东西是必须要填的,我们按照官方文档来填写补齐,不然就会报错
Nacos支持三种部署模式
如果我们做的是黑马的项目,那么导入的它的那个sql是旧版本的nacos使用的,新版本的nacos对应的数据库和sql源文件在官方文档里面有,我们要跟着来配置
其实它的那个sql源文件就在nacos的conf文件夹里面
这些也一样
我们的application配置都在我们的权限认证里面,
我们要跟着来配置 Authorization (nacos.io)
这些东西一个一个对着配置到我们的application文件种,然后我们的执行就不会报错了
java程序报错
nacos2和nginx负载均衡报错
【BUG】Nacos2.0报错 “Error creating bean with name ‘grpcSdkServer‘: Invocation of init method failed;”
grpcSdkServer,grpc通信,在nacos2版本以上如果需要做负载均衡,我们就要弄grpc通信,和http通信
下面是我参考的博客
【BUG】Nacos2.0报错 “Error creating bean with name ‘grpcSdkServer‘: Invocation of init method failed;”_error creating bean with name 'grpcsdkserver': inv-CSDN博客
看看文档
这样子可能会看不懂,其实这个的意思是,如果我们配置的是8848端口,那么我们就要为我么的呢grpc通信配置我们的8848+1000端口,不然nacos2就会连接失败
这个是我们的nacos2版本以上才有的错误 此时我们无法监听到9846这个端口,因为被占用了 因为我们要是集群配置的端口是8845 8846 8847 那么我们按照规则端口偏移1000和1001,那么我们相邻的端口就会冲突,我们记住,nacos2版本以上,集群不能配置相邻的端口
而且我们不仅要在nginx配置一个http模块的转发,还要配置一个grpc通信模块的转发
具体可以看这个Nginx + Nacos2.x(集群)部署防踩坑指南_nginx nacos-CSDN博客
你看,一个是http模块配置的端口,一个是grpc通信模块按照规则,偏移1000配置的端口
我们的官方文档也提到过端口偏移
Nacos 2.0.0 兼容性文档
说明了我们需要新增两个端口,而且往下拉也提了一嘴nginx,在这里吐槽一下,nacos2这个东西是真的麻烦,添加了那么多新东西
我们的集群端口不相邻,我们的nginx配置好了http负载均衡,和grpc通信弄的端口偏移的负载均衡,那我们nacos就可以成功启动了
下面博客是我的参考
Nacos2.3.0集群搭建_nacos 2.3.0-CSDN博客
我先把监听端口改成8000然后发现我们的http的负载均衡没问题
如果都配置完成后报错
failed to req API:/nacos/v1/ns/instance after all servers([localhost:80/nacos]) tried:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
http error, code=403,msg=user not found!,dataId=userservice,group=DEFAULT_GROUP,tenant=
这其实是因为我们没有public的访问权限,导致我们一直连接不上我们的nacos,所以我们的日志就一直报错
其实这是因为我们配置的一个地方错误了,那个鉴权的地方错了
没有public的访问权限
看看我们的application文件
这个鉴定权限,我们应该要为false
不然我们负载均衡转发的时候,和直接点开这个网址,我们拿到的权限是不同的,所以我们弄成false就行了,不然我们会连接不到我们的nacos,连接到了我们的public也没有权限
是我们开启了权限认证的原因
推荐文章
发表评论