跳到主要内容

Nacos 速查表

本页面提供 Nacos 常用配置、命令和 API 的快速参考。

服务端配置

核心配置项

配置项默认值说明
server.port8848主端口
nacos.modestandalone启动模式:standalone/cluster
nacos.standalonetrue是否单机模式
spring.datasource.platform数据库类型:mysql/empty

数据库配置

# MySQL 配置
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai
db.user.0=nacos
db.password.0=nacos

# 连接池配置
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2

认证配置

# 开启认证
nacos.core.auth.enabled=true
nacos.core.auth.system.type=nacos

# Token 密钥(生产环境必须修改)
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

# 服务端身份识别
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security

# 默认 token(仅测试用)
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789

集群配置

# cluster.conf 文件内容
# 格式:ip:port
192.168.1.101:8848
192.168.1.102:8848
192.168.1.103:8848

客户端配置

Spring Cloud 服务发现

spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
namespace: dev # 命名空间 ID
group: DEFAULT_GROUP # 分组
service: ${spring.application.name} # 服务名
weight: 1 # 权重
ephemeral: true # 是否临时实例
cluster-name: DEFAULT # 集群名
heart-beat-interval: 5000 # 心跳间隔(毫秒)
heart-beat-timeout: 15000 # 心跳超时(毫秒)
ip-delete-timeout: 30000 # IP 删除超时(毫秒)
metadata: # 元数据
version: 1.0.0
region: cn-east

Spring Cloud 配置管理

spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
namespace: dev # 命名空间 ID
group: DEFAULT_GROUP # 分组
file-extension: yaml # 配置文件扩展名
prefix: ${spring.application.name} # 配置前缀
refresh-enabled: true # 是否自动刷新
shared-configs: # 共享配置
- data-id: common.yaml
group: DEFAULT_GROUP
refresh: true
extension-configs: # 扩展配置
- data-id: redis.yaml
group: DATABASE_GROUP
refresh: true

完整配置示例

spring:
application:
name: user-service
profiles:
active: dev
cloud:
nacos:
# 服务发现配置
discovery:
server-addr: ${NACOS_SERVER:127.0.0.1:8848}
namespace: ${NACOS_NAMESPACE:dev}
group: DEFAULT_GROUP
weight: 1
ephemeral: true
metadata:
version: 1.0.0
preserved.register.source: SPRING_CLOUD
# 配置中心配置
config:
server-addr: ${NACOS_SERVER:127.0.0.1:8848}
namespace: ${NACOS_NAMESPACE:dev}
group: DEFAULT_GROUP
file-extension: yaml
refresh-enabled: true
shared-configs:
- data-id: common.yaml
group: DEFAULT_GROUP
refresh: true

常用命令

服务端命令

# 单机模式启动
sh startup.sh -m standalone

# 集群模式启动
sh startup.sh

# 关闭服务
sh shutdown.sh

# 查看日志
tail -f logs/start.out
tail -f logs/nacos.log

Docker 命令

# 单机模式
docker run -d \
--name nacos \
-e MODE=standalone \
-p 8848:8848 \
nacos/nacos-server:v2.3.0

# 集群模式
docker run -d \
--name nacos \
-e MODE=cluster \
-e NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=mysql \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=nacos \
-e MYSQL_SERVICE_PASSWORD=nacos \
-p 8848:8848 \
nacos/nacos-server:v2.3.0

Open API

服务注册与发现

# 注册服务实例
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance' \
-d 'serviceName=user-service' \
-d 'ip=192.168.1.100' \
-d 'port=8080' \
-d 'weight=1.0' \
-d 'ephemeral=true'

# 注销服务实例
curl -X DELETE 'http://127.0.0.1:8848/nacos/v1/ns/instance' \
-d 'serviceName=user-service' \
-d 'ip=192.168.1.100' \
-d 'port=8080'

# 查询服务实例列表
curl 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=user-service'

# 查询服务详情
curl 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=user-service&ip=192.168.1.100&port=8080'

# 发送心跳
curl -X PUT 'http://127.0.0.1:8848/nacos/v1/ns/instance/beat' \
-d 'serviceName=user-service' \
-d 'ip=192.168.1.100' \
-d 'port=8080' \
-d 'beat={"cluster":"DEFAULT","ip":"192.168.1.100","port":8080,"serviceName":"user-service"}'

# 查询服务列表
curl 'http://127.0.0.1:8848/nacos/v1/ns/service/list?pageNo=1&pageSize=10'

配置管理

# 发布配置
curl -X POST 'http://127.0.0.1:8848/nacos/v1/cs/configs' \
-d 'dataId=user-service.yaml' \
-d 'group=DEFAULT_GROUP' \
-d 'content=spring:\n datasource:\n url: jdbc:mysql://localhost:3306/user_db'

# 获取配置
curl 'http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=user-service.yaml&group=DEFAULT_GROUP'

# 删除配置
curl -X DELETE 'http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=user-service.yaml&group=DEFAULT_GROUP'

# 监听配置(长轮询)
curl -X POST 'http://127.0.0.1:8848/nacos/v1/cs/configs/listener' \
-d 'Listening-Configs=user-service.yaml\u0002DEFAULT_GROUP\u0002dev\u0002'

# 查询配置历史
curl 'http://127.0.0.1:8848/nacos/v1/cs/history?dataId=user-service.yaml&group=DEFAULT_GROUP&pageNo=1&pageSize=10'

# 导出配置
curl 'http://127.0.0.1:8848/nacos/v1/cs/configs?export=true&dataId=&group=&tenant=dev' -o config.zip

# 导入配置
curl -X POST 'http://127.0.0.1:8848/nacos/v1/cs/configs?import=true&tenant=dev' \
-F '[email protected]'

命名空间管理

# 创建命名空间
curl -X POST 'http://127.0.0.1:8848/nacos/v1/console/namespaces' \
-d 'customNamespaceId=dev' \
-d 'namespaceName=开发环境' \
-d 'namespaceDesc=开发环境命名空间'

# 查询命名空间列表
curl 'http://127.0.0.1:8848/nacos/v1/console/namespaces'

# 删除命名空间
curl -X DELETE 'http://127.0.0.1:8848/nacos/v1/console/namespaces?namespaceId=dev'

集群管理

# 查询集群状态
curl 'http://127.0.0.1:8848/nacos/v1/ns/operator/metrics'

# 查询集群节点
curl 'http://127.0.0.1:8848/nacos/v1/core/cluster/nodes'

# 查询 Raft 状态
curl 'http://127.0.0.1:8848/nacos/v1/core/cluster/raft/leader'

Maven 依赖

Spring Cloud Alibaba BOM

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2022.0.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

服务发现依赖

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

配置管理依赖

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

完整依赖

<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- Nacos 服务发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

<!-- Nacos 配置管理 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

<!-- Spring Cloud LoadBalancer -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

<!-- OpenFeign(可选) -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>

版本兼容性

Spring Cloud Alibaba 版本对应关系

Spring Cloud AlibabaSpring CloudSpring Boot
2022.0.0.02022.0.03.0.x
2021.0.5.02021.0.x2.6.x / 2.7.x
2021.0.4.02021.0.x2.6.x
2021.0.1.02021.0.x2.6.x
2.2.10-RC1Hoxton.SR122.3.x / 2.4.x

Nacos 版本推荐

Nacos 版本说明
2.3.x推荐生产使用,支持 gRPC
2.2.x稳定版本
2.1.x支持 gRPC
1.x旧版本,仅 HTTP

端口说明

端口用途计算方式
8848主端口默认
9848gRPC 客户端端口8848 + 1000
9849gRPC 服务端端口8848 + 1001
7848Raft 协议端口8848 - 100

常见错误码

错误码说明
200成功
400请求参数错误
403权限不足
404资源不存在
500服务器内部错误

默认账号密码

用户名密码说明
nacosnacos默认管理员账号
安全警告

生产环境务必修改默认账号密码!

配置文件路径

文件路径说明
主配置文件conf/application.propertiesNacos 服务端配置
集群配置conf/cluster.conf集群节点列表
日志文件logs/nacos.log运行日志
启动日志logs/start.out启动日志
访问日志logs/access.logHTTP 访问日志

参考链接