nacos配置集群
下载Nacos最新版本并解压到/usr/local/nacos目录
1. 设置开机自启动
# vim /lib/systemd/system/nacos.service 【注】:集群模式请删除红色字体部分
[Unit]
Description=nacos
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nacos/bin/startup.sh -m standalone
ExecReload=/usr/local/nacos/bin/shutdown.sh
ExecStop=/usr/local/nacos/bin/shutdown.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# systemctl daemon-reload
2. 导入/usr/local/nacos/conf/mysql-schema.sql

3. 创建cluser.conf配置文件,内容如下:
#example
192.168.1.71:8871
192.168.1.75:8848
192.168.1.76:8848
4. 修改application.properties配置文件,内容如下:
spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://myqlserverIP:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=nacos db.password.0=**password**

【注】:考虑到access_log日志量过大,建议修改 server.tomcat.accesslog.enabled=false
5. 创建nginx代理配置,内容如下:
upstream nacos-cluster{
server 192.168.1.71:8871;
server 192.168.1.75:8848;
server 192.168.1.76:8848;
}
server {
listen 8848;
server_name localhost;
location / {
proxy_pass http://nacos-cluster;
}
}

6. 代码中application.yml配置文件内容参考如下:
spring:
cloud:
nacos:
server-addr: localhost:8848 # Nacos地址
7. 启动各节点Nacos服务,控制台访问:http://192.168.1.71:8848/nacos
【常见问题】
1. 日志提示数据库无法正常连接
2024-11-24 12:00:23,401 ERROR Startup errors :
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'namespaceControllerV2' defined in URL [jar:file:/usr/local/nacos/target/nacos-server.jar!/BOOT-INF/classes!/com/alibaba/nacos/console/controller/v2/NamespaceControllerV2.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'namespaceOperationService' defined in URL [jar:file:/usr/local/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-core-2.4.3.jar!/com/alibaba/nacos/core/service/NamespaceOperationService.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'externalOtherPersistServiceImpl' defined in URL [jar:file:/usr/local/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-core-2.4.3.jar!/com/alibaba/nacos/core/namespace/repository/ExternalNamespacePersistServiceImpl.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.core.namespace.repository.ExternalNamespacePersistServiceImpl]: Constructor threw exception; nested exception is java.lang.RuntimeException: java.lang.RuntimeException: [db-load-error]load jdbc.properties error
步骤1:如果之前有启动过单机standalone模式,请备份并删除/usr/local/nacos/data 和 work目录

步骤2:核实/usr/local/nacos/conf/application.properties配置文件中的dbname、dbuser、dbpassword参数是否正确,避免使用空密码
步骤3:检查/usr/local/nacos/target/nacos-server.jar 中的mysql-connector版本是否与MySQL数据库版本适配,建议部署最新版本nacos-2.4.3和MySQL 8.x

2. 日志提示数据库连接错误
Caused by: com.mysql.cj.exceptions.CJException: Public Key Retrieval is not allowed
原因:MySQL 8 默认启用了 caching_sha2_password 认证插件,该插件要求客户端在连接时使用公钥进行加密。如果客户端没有配置公钥,连接时会报 Public Key Retrieval is not allowed 错误。
allowPublicKeyRetrieval=true 参数,允许客户端从服务器获取公钥。
编辑conf/application.properties文件,在数据库连接串后加上: &allowPublicKeyRetrieval=true 如下面红字部分所示。
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
3. 通过systemctl启动nacos服务报错

vim /usr/local/nacos/bin/startup.sh JAVA_HOME=/usr/local/jdk1.8.0_281 增加该行内容

浙公网安备 33010602011771号