nacos1.1.4源码集群启动步骤及其遇到的问题解决

问题描述:org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not create connection to database server. Attempted reconnect 3 times. Giving up.)
nacos1.1.4源码集群启动步骤及其遇到的问题解决_第1张图片

出现问题的当时的环境信息:
nacos:1.1.4
mysql-connector-java: 默认5.1.34 我使用的8.0.27

cluster.conf文件配置

10.0.234.217:8848
10.0.234.217:8849
10.0.234.217:8850

注意本文章后面部分的ip可能不一致,因为我在家里公司的IP不一致,所以大家截图上IP,看成是一样的即可。

application.properties添加了以下配置:

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
db.user.0=root
db.password.0=123456

重新编译命令

mvn -Prelease-nacos -DskipTests clean install -U

nacos1.1.4源码集群启动步骤及其遇到的问题解决_第2张图片
编译过程中,应该不会出现太大问题,我这边看了源码写了很多行末注释,在编译过程就会failed ,原因就是引入maven的pmd插件。

  
	org.apache.maven.plugins</groupId>
    maven-pmd-plugin</artifactId>
    3.8</version>
  </plugin>

PMD 插件:允许您在项目的源代码上自动运行PMD代码分析工具,并生成带有结果的站点报告。它还支持与 PMD 一起分发的单独的复制/粘贴检测器工具(或 CPD)。
这个就是规范我们的代码,规范我们的注释,不运行行末注释和单行注释给类的成员变量;建议使用java doc注释
nacos1.1.4源码集群启动步骤及其遇到的问题解决_第3张图片
nacos1.1.4源码集群启动步骤及其遇到的问题解决_第4张图片

尝试调试看看连接信息是否正确?【此步一台都不能启动】

编译通过,启动失败,数据库连接失败,通过调试,发现使用的不是我们配置的mysql信息,最终发现是使用的nacos的默认的配置。
解决方法:换成自己本地的即可,
反思:我们把数据的连接信息配置路径搞错了,
nacos-1.1.4\distribution\conf\application.properties
正确配置位置:
nacos-1.1.4\console\src\main\resources\application.properties
或者
nacos-1.1.4\console\src\main\resources\META-INF\nacos-default.properties(nacos默认的也在这里)

调试发现,nacos有对高版本mysql的支持。
nacos1.1.4源码集群启动步骤及其遇到的问题解决_第5张图片nacos1.1.4源码集群启动步骤及其遇到的问题解决_第6张图片
nacos1.1.4源码集群启动步骤及其遇到的问题解决_第7张图片

nacos1.1.4源码集群启动步骤及其遇到的问题解决_第8张图片
nacos1.1.4源码集群启动步骤及其遇到的问题解决_第9张图片

问题1: 为啥3台只能启动1台?

nacos1.1.4源码集群启动步骤及其遇到的问题解决_第10张图片
启动不了第二台原因:因为我三台的配置的nacos.home都是一个目录,所以启动出现数据库连接不上的情况。
nacos1.1.4源码集群启动步骤及其遇到的问题解决_第11张图片

解决办法
需要增加启动vm参数端口号和实例运行路径nacos.home(对应的目录需要自己提前创建好),每台server的nacos.home目录里需要创建一个conf文件夹,里面放一个cluster.conf文件,文件里需要把所有集群机器ip和端口写入进去。
nacos1.1.4源码集群启动步骤及其遇到的问题解决_第12张图片

nacos1.1.4源码集群启动步骤及其遇到的问题解决_第13张图片)

感谢这位朋友的文章 Nacos源码启动

问题2:为啥3台只能启动2台?

nacos1.1.4源码集群启动步骤及其遇到的问题解决_第14张图片
这个不一定每个人都遇得到,我公司电脑使用的MySQL8.0.27是解压版的,自己自定义的my.ini,自己最开始设置的最大连接数是20,所以会出现此问题,启动不第3台。
这里面感觉nacos存在多个连接数据库的情况,下来再看看,一共建立多少次连接,可以优化数据库最大连接的设置。
然而,我家里电脑也进行了测试,配置完成,直接就可以启动三台,原因是我家里使用的Mysql5.7.20安装版,默认最大连接数量是151,所以不会出现问题

nacos1.1.4源码集群启动步骤及其遇到的问题解决_第15张图片

启动第三台,看到控制台输出 Too many Connection。
尝试修改数据连接的数量

# 允许最大连接数
max_connections=200

重启mysql服务

#停止mysql服务
net stop mysql
#启动mysql服务
net start mysql 

查询是否生效

mysql> show global variables like 'max_conn%';

nacos1.1.4源码集群启动步骤及其遇到的问题解决_第16张图片

成功启动nacos集群3台。走到此步时,感觉相当的nice。
nacos1.1.4源码集群启动步骤及其遇到的问题解决_第17张图片
在nacos管理端http://192.168.3.78:8849/nacos/index.html#/login 下的节点列表可以看到3个节点,一个leader,2个follower。
nacos1.1.4源码集群启动步骤及其遇到的问题解决_第18张图片

参考

Nacos源码启动 https://www.cnblogs.com/leijisong/p/14940369.html

idea配置dashboard并源码启动集群运行nacos https://blog.csdn.net/qq_40634846/article/details/111466233

谢谢认真阅读完的你!

感谢以上2位老师的文章指点!!!

感谢

如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【点赞】支持,或请我喝杯咖啡【赞赏】,这将是我继续写作,分享的最大动力!
作者:勤快的小蚂蚁
声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!

大家一起为原创 加油!!!拒绝复制别人的。

你可能感兴趣的:(JAVA,mysql,spring,nacos,nacos集群,nacos源码集群启动)