Nacos 速查表
本页面提供 Nacos 常用配置、命令和 API 的快速参考。
服务端配置
核心配置项
| 配置项 | 默认值 | 说明 |
|---|---|---|
server.port | 8848 | 主端口 |
nacos.mode | standalone | 启动模式:standalone/cluster |
nacos.standalone | true | 是否单机模式 |
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 Alibaba | Spring Cloud | Spring Boot |
|---|---|---|
| 2022.0.0.0 | 2022.0.0 | 3.0.x |
| 2021.0.5.0 | 2021.0.x | 2.6.x / 2.7.x |
| 2021.0.4.0 | 2021.0.x | 2.6.x |
| 2021.0.1.0 | 2021.0.x | 2.6.x |
| 2.2.10-RC1 | Hoxton.SR12 | 2.3.x / 2.4.x |
Nacos 版本推荐
| Nacos 版本 | 说明 |
|---|---|
| 2.3.x | 推荐生产使用,支持 gRPC |
| 2.2.x | 稳定版本 |
| 2.1.x | 支持 gRPC |
| 1.x | 旧版本,仅 HTTP |
端口说明
| 端口 | 用途 | 计算方式 |
|---|---|---|
| 8848 | 主端口 | 默认 |
| 9848 | gRPC 客户端端口 | 8848 + 1000 |
| 9849 | gRPC 服务端端口 | 8848 + 1001 |
| 7848 | Raft 协议端口 | 8848 - 100 |
常见错误码
| 错误码 | 说明 |
|---|---|
| 200 | 成功 |
| 400 | 请求参数错误 |
| 403 | 权限不足 |
| 404 | 资源不存在 |
| 500 | 服务器内部错误 |
默认账号密码
| 用户名 | 密码 | 说明 |
|---|---|---|
| nacos | nacos | 默认管理员账号 |
安全警告
生产环境务必修改默认账号密码!
配置文件路径
| 文件 | 路径 | 说明 |
|---|---|---|
| 主配置文件 | conf/application.properties | Nacos 服务端配置 |
| 集群配置 | conf/cluster.conf | 集群节点列表 |
| 日志文件 | logs/nacos.log | 运行日志 |
| 启动日志 | logs/start.out | 启动日志 |
| 访问日志 | logs/access.log | HTTP 访问日志 |