1. Nacos简介与版本说明
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的服务发现和配置管理平台,致力于帮助用户发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助用户快速实现动态服务发现、服务配置、服务元数据及流量管理。更多学习教程www.fgedu.net.cn。
Nacos从3.0版本开始全面拥抱AI,支持MCP Registry、Agent Registry和Skills Registry,成为AI时代的服务治理平台。学习交流加群风哥微信: itpux-com。Nacos已经在阿里巴巴的生产环境中经过10年验证,支持具有数百万服务的大规模场景。
Nacos核心功能:
– 服务发现与管理:支持DNS-Based和RPC-Based模式的服务发现
– 动态DNS服务:支持权重路由、流量控制的DNS解析服务
– AI Registry:支持MCP、Agent、Prompt、Skills等AI资源管理
– 多租户支持:命名空间隔离,多环境管理
– 高可用集群:支持主从复制和集群部署
– 安全认证:支持用户认证、权限控制和SSL加密
2. Nacos版本选择与下载地址
Nacos提供多个版本供用户选择,生产环境建议使用稳定版本。
Nacos版本状态:
3.2.x Latest 3.2.0 2026-03-27 Java 17+ AI Registry增强版
3.0.x Stable 3.0.1 2025-XX-XX Java 17+ AI支持版本
2.5.x Stable 2.5.2 2025-11-26 Java 8+ 传统微服务版本
2.4.x Stable 2.4.3 2024-10-12 Java 8+ 长期支持版本
2.3.x Stable 2.3.2 2024-04-03 Java 8+ 稳定版本
1.x Legacy 1.4.6 2023-XX-XX Java 8+ 已停止维护
版本选择建议:
– 新项目推荐:Nacos 2.5.2(稳定版,Java 8+兼容)
– 生产环境:使用Stable版本,避免使用Beta版本
– 传统微服务:Nacos 2.4.x或2.3.x系列
– Java 8环境:必须使用2.x系列
官方下载地址:
GitHub发布页:https://github.com/alibaba/nacos/releases
下载页面:https://nacos.io/en/download/release-history/
3. Nacos下载方式详解
方式一:GitHub直接下载
$ wget https://github.com/alibaba/nacos/releases/download/3.2.0/nacos-server-3.2.0.tar.gz
输出示例如下:
–2026-04-04 10:00:00– https://github.com/alibaba/nacos/releases/download/3.2.0/nacos-server-3.2.0.tar.gz
Resolving github.com (github.com)… 140.82.121.3
Connecting to github.com (github.com)|140.82.121.3|:443… connected.
HTTP request sent, awaiting response… 302 Found
Location: https://objects.githubusercontent.com/… [following]
–2026-04-04 10:00:01– https://objects.githubusercontent.com/…
Length: 156789012 (150M) [application/octet-stream]
Saving to: ‘nacos-server-3.2.0.tar.gz’
nacos-server-3.2.0.tar.gz 100%[======================================================================>] 149.52M 8.5MB/s in 18s
2026-04-04 10:00:19 (8.5 MB/s) – ‘nacos-server-3.2.0.tar.gz’ saved [156789012/156789012]
方式二:使用nacos-setup一键安装
$ curl -fsSL https://nacos.io/nacos-installer.sh | sudo bash
输出示例如下:
Downloading nacos-installer…
Installing Nacos…
Downloading Nacos server 3.2.0…
Extracting files…
Configuring environment…
Nacos installed successfully!
Installation path: /usr/local/nacos
Windows PowerShell安装:
> powershell -NoProfile -ExecutionPolicy Bypass -Command “iwr -UseBasicParsing https://nacos.io/nacos-installer.ps1 | iex”
输出示例如下:
Downloading nacos-installer…
Installing Nacos…
Nacos installed successfully!
方式三:下载Nacos 2.5.x稳定版
$ wget https://github.com/alibaba/nacos/releases/download/2.5.2/nacos-server-2.5.2.tar.gz
输出示例如下:
–2026-04-04 10:01:00– https://github.com/alibaba/nacos/releases/download/2.5.2/nacos-server-2.5.2.tar.gz
Resolving github.com (github.com)… 140.82.121.3
Connecting to github.com (github.com)|140.82.121.3|:443… connected.
HTTP request sent, awaiting response… 302 Found
Length: 145678901 (139M) [application/octet-stream]
Saving to: ‘nacos-server-2.5.2.tar.gz’
nacos-server-2.5.2.tar.gz 100%[======================================================================>] 138.93M 7.2MB/s in 19s
2026-04-04 10:01:19 (7.2 MB/s) – ‘nacos-server-2.5.2.tar.gz’ saved [145678901/145678901]
方式四:使用Docker镜像部署
$ docker pull nacos/nacos-server:latest
输出示例如下:
latest: Pulling from nacos/nacos-server
Digest: sha256:abc123def456…
Status: Downloaded newer image for nacos/nacos-server:latest
拉取指定版本镜像:
$ docker pull nacos/nacos-server:v3.2.0
启动单机模式容器:
$ docker run –name nacos-standalone \
-e MODE=standalone \
-e NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 \
-e NACOS_AUTH_IDENTITY_KEY=serverIdentity \
-e NACOS_AUTH_IDENTITY_VALUE=security \
-p 8080:8080 \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-d nacos/nacos-server:v3.2.0
输出示例如下:
abc123def456789…
查看容器状态:
$ docker ps | grep nacos
输出示例如下:
abc123def456 nacos/nacos-server:v3.2.0 “bin/docker-startup.…” 10 seconds ago Up 9 seconds 0.0.0.0:8080->8080/tcp, 0.0.0.0:8848->8848/tcp, 0.0.0.0:9848->9848/tcp, 0.0.0.0:9849->9849/tcp nacos-standalone
方式五:源码编译安装
$ git clone https://github.com/alibaba/nacos.git
$ cd nacos/
切换到指定版本分支:
$ git checkout 3.2.0
编译打包:
$ mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
输出示例如下:
[INFO] Scanning for projects…
[INFO] ————————————————————————
[INFO] Building Nacos 3.2.0
[INFO] ————————————————————————
…
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 05:23 min
[INFO] Finished at: 2026-04-04T10:05:00+08:00
查看编译结果:
$ ls -la distribution/target/
输出示例如下:
total 156789
drwxr-xr-x 2 root root 4096 Apr 4 10:05 .
drwxr-xr-x 3 root root 4096 Apr 4 10:05 ..
-rw-r–r– 1 root root 156789012 Apr 4 10:05 nacos-server-3.2.0.tar.gz
-rw-r–r– 1 root root 145678901 Apr 4 10:05 nacos-server-3.2.0.zip
4. Nacos安装部署实战
步骤1:环境准备
$ java -version
输出示例如下(Nacos 3.x需要Java 17+):
openjdk version “17.0.13” 2026-01-21
OpenJDK Runtime Environment (build 17.0.13+11-Ubunt-1)
OpenJDK 64-Bit Server VM (build 17.0.13+11-Ubunt-1, mixed mode, sharing)
设置JAVA_HOME环境变量:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
$ echo “export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64” >> ~/.bashrc
$ source ~/.bashrc
检查Maven版本(源码编译需要):
$ mvn -version
输出示例如下:
Apache Maven 3.9.6 (bc78907ecb5e5e5c6e5f5e5e5e5e5e5e5e5e5e5e)
Maven home: /usr/share/maven
Java version: 17.0.13, vendor: Oracle Corporation
步骤2:解压安装
# mkdir -p /fgeudb/nacos
解压安装包:
$ cd /fgeudb/software
$ tar -zxvf nacos-server-3.2.0.tar.gz -C /fgeudb/nacos/
输出示例如下:
nacos/
nacos/LICENSE
nacos/NOTICE
nacos/target/
nacos/target/nacos-server.jar
nacos/conf/
nacos/conf/application.properties
nacos/conf/application.properties.example
nacos/conf/cluster.conf.example
nacos/conf/nacos-logback.xml
nacos/conf/schema.sql
nacos/conf/1.4.0-ipv6_support-update.sql
nacos/bin/
nacos/bin/startup.sh
nacos/bin/shutdown.sh
nacos/bin/startup.cmd
nacos/bin/shutdown.cmd
查看安装目录结构:
$ ls -la /fgeudb/nacos/nacos/
输出示例如下:
total 32
drwxr-xr-x 5 root root 4096 Apr 4 10:03 .
drwxr-xr-x 3 root root 4096 Apr 4 10:03 ..
drwxr-xr-x 2 root root 4096 Apr 4 10:03 bin
drwxr-xr-x 2 root root 4096 Apr 4 10:03 conf
-rw-r–r– 1 root root 11358 Mar 27 10:00 LICENSE
-rw-r–r– 1 root root 3215 Mar 27 10:00 NOTICE
drwxr-xr-x 2 root root 4096 Apr 4 10:03 target
步骤3:配置单机模式
# vi /fgeudb/nacos/nacos/conf/application.properties
单机模式核心配置:
server.port=8848
nacos.server-addr=192.168.1.51:8848
spring.datasource.platform=mysql
数据库配置(生产环境必须使用外部数据库):
db.num=1
db.url.0=jdbc:mysql://192.168.1.51:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
db.user.0=nacos
db.password.0=nacos123
鉴权配置(生产环境必须开启):
nacos.core.auth.enabled=true
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
步骤4:初始化数据库
$ mysql -u root -p
输出示例如下:
Enter password:
Welcome to the MySQL monitor.
mysql> CREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Query OK, 1 row affected (0.01 sec)
mysql> CREATE USER ‘nacos’@’%’ IDENTIFIED BY ‘nacos123’;
Query OK, 0 rows affected (0.02 sec)
mysql> GRANT ALL PRIVILEGES ON nacos.* TO ‘nacos’@’%’;
Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
mysql> exit
Bye
导入数据库表结构:
$ mysql -u nacos -p nacos < /fgeudb/nacos/nacos/conf/schema.sql
输出示例如下:
Enter password:
步骤5:启动Nacos服务
$ cd /fgeudb/nacos/nacos/bin
$ sh startup.sh -m standalone
输出示例如下:
,–.,–.,–. ,–.,–. ,–. ,–.,–. ,–. ,–.
| ‘–‘ | `–‘ | | | | | ‘–‘ | `–‘ | | | |
| .–. | ,–. | | | | | .–. | ,–. | | | |
| | | | | | | | | | | | | | | | | | | |
`–‘ `–‘ `–‘ `–‘ `–‘ `–‘ `–‘ `–‘ `–‘ `–‘
Nacos 3.2.0
Nacos is starting, you can check the /fgeudb/nacos/nacos/logs/start.out
查看启动日志:
$ tail -f /fgeudb/nacos/nacos/logs/start.out
输出示例如下:
2026-04-04 10:05:00,000 INFO Nacos is starting…
2026-04-04 10:05:05,000 INFO Nacos started successfully in standalone mode. Externalize configuration storage is used.
2026-04-04 10:05:05,000 INFO Nacos is ready to serve requests on port 8848
2026-04-04 10:05:05,000 INFO Nacos Console is available at http://192.168.1.51:8848/nacos
5. Nacos生产环境配置优化
步骤1:配置JVM内存参数
# vi /fgeudb/nacos/nacos/bin/startup.sh
修改JVM参数:
JAVA_OPT=”${JAVA_OPT} -server -Xms4g -Xmx8g -Xmn2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m”
JAVA_OPT=”${JAVA_OPT} -XX:+UseG1GC -XX:MaxGCPauseMillis=200″
JAVA_OPT=”${JAVA_OPT} -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/fgeudb/nacos/logs/heapdump.hprof”
生产环境JVM参数说明:
-Xms4g 初始堆内存4GB
-Xmx8g 最大堆内存8GB
-Xmn2g 年轻代内存2GB
-XX:MetaspaceSize 元空间初始大小
-XX:MaxMetaspaceSize 元空间最大大小
-XX:+UseG1GC 使用G1垃圾收集器,学习交流加群风哥QQ113257174
-XX:MaxGCPauseMillis 最大GC停顿时间200ms
步骤2:配置数据库连接池
# vi /fgeudb/nacos/nacos/conf/application.properties
数据库连接池配置:
spring.sql.init.platform=mysql
db.pool.config.driverClassName=com.mysql.cj.jdbc.Driver
db.pool.config.initialSize=10
db.pool.config.maxActive=100
db.pool.config.maxIdle=50
db.pool.config.minIdle=10
db.pool.config.maxWait=30000
db.pool.config.timeBetweenEvictionRunsMillis=60000
db.pool.config.minEvictableIdleTimeMillis=300000
db.pool.config.validationQuery=SELECT 1
db.pool.config.testWhileIdle=true
db.pool.config.testOnBorrow=false
db.pool.config.testOnReturn=false
步骤3:配置日志和监控
# vi /fgeudb/nacos/nacos/conf/application.properties
日志配置:
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t “%r” %s %b %D
server.tomcat.accesslog.directory=/fgeudb/nacos/logs
监控配置:
management.endpoints.web.exposure.include=*
management.metrics.export.prometheus.enabled=true
nacos.monitor.trace.enabled=true
步骤4:配置系统限制
# vi /etc/security/limits.conf
添加以下内容:
nacos soft nofile 65536
nacos hard nofile 65536
nacos soft nproc 65536
nacos hard nproc 65536
查看当前限制:
$ ulimit -n
输出示例如下:
65536
设置内核参数:
# vi /etc/sysctl.conf
添加以下内容:
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
使配置生效:
# sysctl -p
6. Nacos集群配置方案
集群架构说明
– 最少3个节点组成集群
– 使用外部MySQL数据库存储数据
– 前端使用Nginx负载均衡
– 节点间通过Raft协议同步数据
集群节点规划示例:
节点1:192.168.1.51:8848
节点2:192.168.1.52:8848
节点3:192.168.1.53:8848
步骤1:配置集群节点
# vi /fgeudb/nacos/nacos/conf/cluster.conf
添加集群节点列表:
192.168.1.51:8848
192.168.1.52:8848
192.168.1.53:8848
编辑application.properties配置文件:
# vi /fgeudb/nacos/nacos/conf/application.properties
集群模式配置:
nacos.inetutils.ip-address=192.168.1.51
nacos.server-addr=192.168.1.51:8848
数据库配置(所有节点使用相同数据库):
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.1.51:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
db.user.0=nacos
db.password.0=nacos123
步骤2:启动集群节点
$ cd /fgeudb/nacos/nacos/bin
$ sh startup.sh
输出示例如下:
,–.,–.,–. ,–.,–. ,–. ,–.,–. ,–. ,–.
| ‘–‘ | `–‘ | | | | | ‘–‘ | `–‘ | | | |
| .–. | ,–. | | | | | .–. | ,–. | | | |
| | | | | | | | | | | | | | | | | | | |
`–‘ `–‘ `–‘ `–‘ `–‘ `–‘ `–‘ `–‘ `–‘ `–‘
Nacos 3.2.0
Nacos is starting in cluster mode…
查看集群状态:
$ curl -X GET “http://192.168.1.51:8848/nacos/v1/ns/operator/servers”
输出示例如下:
{
“servers”: [
{
“ip”: “192.168.1.51”,
“port”: 8848,
“state”: “UP”,
“extendInfo”: {
“lastRefreshTime”: 1712217600000,
“raftMetaData”: {
“leader”: “192.168.1.51:7848”
}
}
},
{
“ip”: “192.168.1.52”,
“port”: 8848,
“state”: “UP”
},
{
“ip”: “192.168.1.53”,
“port”: 8848,
“state”: “UP”
}
]
}
步骤3:配置Nginx负载均衡
# vi /etc/nginx/conf.d/nacos.conf
upstream nacos-cluster {
server 192.168.1.51:8848 weight=1;
server 192.168.1.52:8848 weight=1;
server 192.168.1.53:8848 weight=1;
}
server {
listen 8848;
server_name nacos.fgedu.net.cn;
location /nacos/ {
proxy_pass http://nacos-cluster/nacos/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}
}
重启Nginx:
# nginx -t
# nginx -s reload
7. Nacos安全配置
步骤1:开启鉴权认证
# vi /fgeudb/nacos/nacos/conf/application.properties
开启鉴权:
nacos.core.auth.enabled=true
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
配置说明:
– nacos.core.auth.enabled:开启鉴权认证
– nacos.core.auth.server.identity.key/value:服务端身份标识
– nacos.core.auth.plugin.nacos.token.secret.key:JWT Token密钥,必须大于32字符
步骤2:创建用户和角色
http://192.168.1.51:8848/nacos
默认用户名:nacos
默认密码:nacos
创建新用户(通过API):
$ curl -X POST “http://192.168.1.51:8848/nacos/v1/auth/users” \
-d “username=admin&password=admin123”
输出示例如下:
ok
创建角色:
$ curl -X POST “http://192.168.1.51:8848/nacos/v1/auth/roles” \
-d “role=ADMIN&username=admin”
输出示例如下:
ok
授权角色:
$ curl -X POST “http://192.168.1.51:8848/nacos/v1/auth/permissions” \
-d “role=ADMIN&resource=*:*&action=*”
输出示例如下:
ok
步骤3:配置SSL/HTTPS
$ keytool -genkeypair -alias nacos -keyalg RSA -keysize 2048 -validity 365 \
-keystore /fgeudb/nacos/conf/nacos.keystore \
-storepass changeit \
-dname “CN=nacos.fgedu.net.cn, OU=IT, O=, L=Beijing, ST=Beijing, C=CN”
编辑application.properties配置文件:
# vi /fgeudb/nacos/nacos/conf/application.properties
SSL配置:
server.ssl.enabled=true
server.ssl.key-store=/fgeudb/nacos/conf/nacos.keystore
server.ssl.key-store-password=changeit
server.ssl.key-store-type=JKS
server.ssl.key-alias=nacos
步骤4:配置命名空间隔离
$ curl -X POST “http://192.168.1.51:8848/nacos/v1/console/namespaces” \
-d “customNamespaceId=dev&namespaceName=开发环境&namespaceDesc=开发环境命名空间”
输出示例如下:
true
创建测试环境命名空间:
$ curl -X POST “http://192.168.1.51:8848/nacos/v1/console/namespaces” \
-d “customNamespaceId=test&namespaceName=测试环境&namespaceDesc=测试环境命名空间”
输出示例如下:
true
创建生产环境命名空间:
$ curl -X POST “http://192.168.1.51:8848/nacos/v1/console/namespaces” \
-d “customNamespaceId=prod&namespaceName=生产环境&namespaceDesc=生产环境命名空间”
输出示例如下:
true
查看命名空间列表:
$ curl -X GET “http://192.168.1.51:8848/nacos/v1/console/namespaces”
输出示例如下:
[
{
“namespace”: “public”,
“namespaceShowName”: “公共命名空间”,
“namespaceDesc”: “公共命名空间”,
“quota”: 200,
“configCount”: 0
},
{
“namespace”: “dev”,
“namespaceShowName”: “开发环境”,
“namespaceDesc”: “开发环境命名空间”,
“quota”: 200,
“configCount”: 0
},
{
“namespace”: “test”,
“namespaceShowName”: “测试环境”,
“namespaceDesc”: “测试环境命名空间”,
“quota”: 200,
“configCount”: 0
},
{
“namespace”: “prod”,
“namespaceShowName”: “生产环境”,
“namespaceDesc”: “生产环境命名空间”,
“quota”: 200,
“configCount”: 0
}
]
8. 安装验证与测试
查看Nacos状态
$ ps -ef | grep nacos
输出示例如下:
nacos 12345 1 5 10:05 ? 00:00:30 /usr/lib/jvm/java-17-openjdk-amd64/bin/java -server -Xms4g -Xmx8g -Dnacos.home=/fgeudb/nacos/nacos -jar /fgeudb/nacos/nacos/target/nacos-server.jar
查看端口监听:
$ netstat -tlnp | grep java
输出示例如下:
tcp6 0 0 :::8848 :::* LISTEN 12345/java
tcp6 0 0 :::9848 :::* LISTEN 12345/java
tcp6 0 0 :::9849 :::* LISTEN 12345/java
访问Web管理控制台
http://192.168.1.51:8848/nacos
默认用户名:nacos
默认密码:nacos
控制台首页显示:
– 命名空间列表
– 配置管理
– 服务管理
– AI Registry(3.x版本)
测试配置管理功能
$ curl -X POST “http://192.168.1.51:8848/nacos/v1/cs/configs” \
-d “dataId=application.properties&group=DEFAULT_GROUP&content=server.port=8080\nspring.application.name=demo-service”
输出示例如下:
true
获取配置:
$ curl -X GET “http://192.168.1.51:8848/nacos/v1/cs/configs?dataId=application.properties&group=DEFAULT_GROUP”
输出示例如下:
server.port=8080
spring.application.name=demo-service
监听配置变化:
$ curl -X POST “http://192.168.1.51:8848/nacos/v1/cs/configs/listener” \
-d “dataId=application.properties&group=DEFAULT_GROUP”
输出示例如下(配置变化时会返回新内容):
测试服务注册与发现
$ curl -X POST “http://192.168.1.51:8848/nacos/v1/ns/instance” \
-d “serviceName=demo-service&ip=192.168.1.100&port=8080”
输出示例如下:
ok
查询服务实例列表:
$ curl -X GET “http://192.168.1.51:8848/nacos/v1/ns/instance/list?serviceName=demo-service”
输出示例如下:
{
“name”: “DEFAULT_GROUP@@demo-service”,
“groupName”: “DEFAULT_GROUP”,
“clusters”: “”,
“cacheMillis”: 10000,
“hosts”: [
{
“instanceId”: “192.168.1.100#8080#DEFAULT#DEFAULT_GROUP@@demo-service”,
“ip”: “192.168.1.100”,
“port”: 8080,
“weight”: 1.0,
“healthy”: true,
“enabled”: true,
“ephemeral”: true,
“clusterName”: “DEFAULT”,
“serviceName”: “DEFAULT_GROUP@@demo-service”,
“metadata”: {}
}
],
“checksum”: “”,
“lastRefTime”: 1712217600000
}
9. 客户端连接与使用
Spring Cloud集成配置
bootstrap.yml配置:
spring:
application:
name: demo-service
cloud:
nacos:
server-addr: 192.168.1.51:8848
username: nacos
password: nacos
config:
namespace: dev
group: DEFAULT_GROUP
file-extension: yaml
shared-configs:
– data-id: common.yaml
group: DEFAULT_GROUP
refresh: true
discovery:
namespace: dev
group: DEFAULT_GROUP
service: ${spring.application.name}
Dubbo集成配置
application.yml配置:
dubbo:
application:
name: demo-service
registry:
address: nacos://192.168.1.51:8848
username: nacos
password: nacos
parameters:
namespace: dev
group: DEFAULT_GROUP
protocol:
name: dubbo
port: 20880
配置动态刷新
@RestController
@RefreshScope
public class ConfigController {
@Value(“${app.config.value:default}”)
private String configValue;
@GetMapping(“/config”)
public String getConfig() {
return “Current config value: ” + configValue;
}
}
在Nacos控制台修改配置后,应用会自动刷新配置值。
10. 常见问题与解决方案
问题1:Nacos启动失败-数据库连接错误
Nacos Server did not start because the database is not ready
解决方案:
1. 检查数据库连接配置:
db.url.0=jdbc:mysql://192.168.1.51:3306/nacos?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
db.user.0=nacos
db.password.0=nacos123
2. 检查数据库是否可连接:
$ mysql -h 192.168.1.51 -u nacos -p nacos
3. 检查数据库表是否初始化:
$ mysql -u nacos -p nacos -e “SHOW TABLES;”
输出示例如下:
+————————+
| Tables_in_nacos |
+————————+
| config_info |
| config_info_aggr |
| config_info_beta |
| config_info_tag |
| config_tags_relation |
| group_capacity |
| his_config_info |
| permissions |
| roles |
| tenant_capacity |
| tenant_info |
| users |
+————————+
问题2:集群节点无法加入
Cluster node join failed
解决方案:
1. 检查cluster.conf配置:
$ cat /fgeudb/nacos/nacos/conf/cluster.conf
输出示例如下:
192.168.1.51:8848
192.168.1.52:8848
192.168.1.53:8848
2. 检查防火墙端口:
# firewall-cmd –add-port=8848/tcp –permanent
# firewall-cmd –add-port=9848/tcp –permanent
# firewall-cmd –add-port=9849/tcp –permanent
# firewall-cmd –reload
3. 检查节点间网络连通性:
$ ping 192.168.1.52
$ telnet 192.168.1.52 8848
问题3:鉴权失败-403 Forbidden
403 Forbidden – Authorization failed
解决方案:
1. 检查鉴权配置:
nacos.core.auth.enabled=true
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
2. 检查用户名密码是否正确:
$ curl -X POST “http://192.168.1.51:8848/nacos/v1/auth/login” \
-d “username=nacos&password=nacos”
输出示例如下:
{“accessToken”:”eyJhbGciOiJIUzI1NiJ9…”,”tokenTtl”:36000}
3. 使用正确的Token访问:
$ curl -X GET “http://192.168.1.51:8848/nacos/v1/cs/configs?dataId=test&group=DEFAULT_GROUP” \
-H “accessToken: eyJhbGciOiJIUzI1NiJ9…”
问题4:配置无法动态刷新
解决方案:
1. 检查是否添加了@RefreshScope注解:
@RestController
@RefreshScope
public class ConfigController {
@Value(“${app.config.value}”)
private String configValue;
}
2. 检查配置的data-id和group是否正确:
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.group=DEFAULT_GROUP
3. 检查是否开启了配置刷新:
spring.cloud.nacos.config.refresh-enabled=true
4. 查看Nacos客户端日志:
$ tail -f /var/log/app.log | grep Nacos
Nacos服务管理命令
$ sh /fgeudb/nacos/nacos/bin/startup.sh -m standalone
停止服务:
$ sh /fgeudb/nacos/nacos/bin/shutdown.sh
查看服务状态:
$ curl -X GET “http://192.168.1.51:8848/nacos/v1/ns/operator/metrics”
输出示例如下:
{
“status”: “UP”,
“serviceCount”: 10,
“instanceCount”: 25,
“subscribeCount”: 15,
“raftNotifyTaskQueueSize”: 0
}
配置系统服务:
# vi /etc/systemd/system/nacos.service
[Unit]
Description=Nacos Server
After=network.target
[Service]
Type=forking
User=nacos
Group=nacos
ExecStart=/fgeudb/nacos/nacos/bin/startup.sh -m standalone
ExecStop=/fgeudb/nacos/nacos/bin/shutdown.sh
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
启用服务:
# systemctl daemon-reload
# systemctl enable nacos
# systemctl start nacos
1. 使用Nacos 2.5.x或3.2.x稳定版本;2. 生产环境必须使用外部MySQL数据库;3. 开启鉴权认证并配置强密码;4. 部署至少3节点集群实现高可用;5. 配置命名空间实现环境隔离;6. 使用Nginx负载均衡客户端请求;7. 配置JVM内存参数(建议8GB以上);8. 开启配置和服务的监控告警;9. 定期备份配置数据;10. 配置系统服务实现自动重启。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
