初识Springcloud Alibaba nacos遇到的坑

最近下班回到,想着最近两年Springcloud Alibaba巨火,就自己敲一个简单的demo,没想到第一步玩nacos就遇到一些问题,和大家分享一下,希望别的小伙伴遇到了可以避免。

首先下载了nacos官方的文件,然后解压,解压成功之后,很自然的打开startup.cmd,想着应该就能开始学习了,没想到,上来就报错!!!

org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat

nacos ribbonLoadBalancer 报错_数据库


当时就蒙蔽了,是环境问题吗?可是我电脑经常用来写代码,jdk,mysql,tomcat,maven应该都是没有问题的啊。难道第一次学习还得重新装一套环境?

然后想想应该不至于,所以就去解决问题。。。

看见报错信息,tomcat无法打开?第一想法就是是不是我tomcat端口被占用了,毕竟自己有的项目测试就是8080,看了一下,发现并没有,看来不是这个问题。

然后继续找错误,把错误拉到最下面,出来了这个错误:

Caused by: java.lang.RuntimeException: java.lang.RuntimeException: [db-load-error]load jdbc.properties error

nacos ribbonLoadBalancer 报错_spring cloud_02


这就出来问题了,db-load-error数据库加载错误,难道还要导入数据库?就在nacos下载文件里面找,果然,在conf文件夹里面找到了nacos-mysql.sql文件!

那行,先导入本地看看,新建一个nacos数据库,然后导入nacos-mysql.sql。

既然有数据库文件,应该也有相关配置把,在application.properties中找到了

nacos ribbonLoadBalancer 报错_spring cloud_03


找到了数据库配置,将账号密码改成本地数据库的账号密码,数据库名字创建的时候就叫nacos,所以就不用改了,然后重新启动。然后又报错

nacos ribbonLoadBalancer 报错_后端_04


我吐了啊,咋回事? 没法,去瞅瞅日志文件把。。。

然后日志文件第一行就是 java.lang.IllegalArgumentException: db.num is null

nacos ribbonLoadBalancer 报错_后端_05


db.num是空?然后去配置文件里面瞅一眼,果然,配置文件里有个

nacos ribbonLoadBalancer 报错_spring cloud_06


db.num本来是注释掉了,咱们给打开,然后看了一下,应该没有和数据库相关的配置了,保存,重新运行。。。然后 Caused by: java.net.UnknownHostException: jmenv.tbsite.net

nacos ribbonLoadBalancer 报错_后端_07


我都吐血了,啥玩意啊?是我下载的版本问题吗?怎么这么多错误。

然后看了日志,这次没有拿到有用的东西。难道解决不了了?

我又认真的看了一遍启动过程,发现了一个问题

在启动刚开始,第一行出现了 “nacos is starting with cluster”,nacos集群开始启动。

nacos ribbonLoadBalancer 报错_数据库_08


不对把?我就下载了一个单机,不应该是集群启动啊。然后去配置文件里面找启动相关,看有没有把集群改成单机的配置,很遗憾,没找到。

想到这里,我已经要放弃了,不准备学了,真的是完全劝退萌新啊。

但仔细想了一下,配置问题如果不是在配置文件中,那就应该是在程序中,然后我打开了startup.cmd,

nacos ribbonLoadBalancer 报错_数据库_09

真的是没想到,在这里找到了!!!
然后把最上边的 set MODE=“cluster” 改成 set MODE=“standalone”,保存。

果然,启动的时候提示便变成了单机模式。而且,没有再报错,启动成功了!!!

nacos ribbonLoadBalancer 报错_配置文件_10


然后访问8848端口,也成功进入了系统。

nacos ribbonLoadBalancer 报错_java_11

总结一下

  1. 首先导入数据库:
    在初次使用nacos时,第一步应该先导入conf/nacos-mysql.sql这个sql文件,在本地数据库创建nacos数据库,然后导入数据库文件。
  2. 修改配置文件
    在conf/application.properties配置文件中,找到数据库相关的配置,就是下面这两段,把原先的注释去掉,改成本地的数据库账号密码。
### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

3.## 更改启动模式
使用记事本打开 bin/startup.cmd 启动文件,将其中的 set MODE=“cluster” 改成 set MODE=“standalone”。

做完这些,我的就正常启动了,如果你的还是有问题,可以去log下查看一下日志。
如果仍有别的不能解决的问题出现,希望大家共同交流。避免踩坑!!!!!