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.)
在这里插入图片描述

出现问题的当时的环境信息:
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

在这里插入图片描述
编译过程中,应该不会出现太大问题,我这边看了源码写了很多行末注释,在编译过程就会failed ,原因就是引入maven的pmd插件。

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

PMD 插件:允许您在项目的源代码上自动运行PMD代码分析工具,并生成带有结果的站点报告。它还支持与 PMD 一起分发的单独的复制/粘贴检测器工具(或 CPD)。
这个就是规范我们的代码,规范我们的注释,不运行行末注释和单行注释给类的成员变量;建议使用java doc注释
在这里插入图片描述
在这里插入图片描述

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

编译通过,启动失败,数据库连接失败,通过调试,发现使用的不是我们配置的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的支持。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
启动不了第二台原因:因为我三台的配置的nacos.home都是一个目录,所以启动出现数据库连接不上的情况。
在这里插入图片描述

解决办法
需要增加启动vm参数端口号和实例运行路径nacos.home(对应的目录需要自己提前创建好),每台server的nacos.home目录里需要创建一个conf文件夹,里面放一个cluster.conf文件,文件里需要把所有集群机器ip和端口写入进去。
在这里插入图片描述

在这里插入图片描述)

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

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

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

家里电脑是5.7.20

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

# 允许最大连接数
max_connections=200

重启mysql服务

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

查询是否生效

mysql> show global variables like 'max_conn%';

在这里插入图片描述

成功启动nacos集群3台。走到此步时,感觉相当的nice。
在这里插入图片描述
在nacos管理端http://192.168.3.78:8849/nacos/index.html#/login 下的节点列表可以看到3个节点,一个leader,2个follower。
在这里插入图片描述

参考

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

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

谢谢认真阅读完的你!

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

感谢

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

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

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
org.springframework.jdbc.CannotGetJdbcConnectionException错误是由于无法获取JDBC连接引起的。具体的嵌套异常是java.sql.SQLException: Access denied for user 'root'@'localhost'的错误。 通常,解决这个问题有几个常见的方法。首先,你可以检查db.properties(或jdbc.properties)文件中数据库配置是否正确,并确保没有任何空格。有时候还需要添加时区信息。 其次,你可能需要检查mysql-connect-java的版本是否正确。如果你使用的是5版本左右的mysql-connect-java,那么jdbc.driver不需要加上"cj"。但是如果你使用的是8版本左右的,则需要加上"cj"。 最后,你可以尝试使用正确的写法来配置jdbc.driver和jdbc.url。例如,正确的写法可能是:jdbc.driver=com.mysql.cj.jdbc.Driver,jdbc.url=jdbc:mysql://localhost:3306/boot_crm?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true。 通过检查配置文件和版本号,以及使用正确的写法,你应该能够解决这个错误并成功获取JDBC连接。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [spring boot整合mybatis连接不上数据库](https://download.csdn.net/download/weixin_38623000/13685882)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [(已解决)org.springframework.jdbc.CannotGetJdbcConnectionException:Could not get JDBC Connection;...](https://blog.csdn.net/qq_50765135/article/details/124728926)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection;](https://blog.csdn.net/m0_64259792/article/details/125134203)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤快的小蚂蚁

奖励下我呗!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值