安装与配置
本章节介绍 Nacos 的安装方式和基础配置,帮助你快速搭建 Nacos 环境。
环境要求
在安装 Nacos 之前,请确保你的系统满足以下要求:
| 要求 | 说明 |
|---|---|
| 操作系统 | Linux/Unix/Mac/Windows,推荐 Linux |
| JDK | 64 位 JDK 1.8+ |
| Maven | 3.2.x+(从源码编译时需要) |
| 内存 | 至少 2GB 可用内存 |
下载安装包
方式一:下载编译后的安装包
从 GitHub Releases 页面下载最新稳定版本:
# 下载(以 2.3.0 版本为例)
wget https://github.com/alibaba/nacos/releases/download/2.3.0/nacos-server-2.3.0.tar.gz
# 解压
tar -xzf nacos-server-2.3.0.tar.gz
# 进入目录
cd nacos/bin
方式二:从源码编译
# 克隆仓库
git clone https://github.com/alibaba/nacos.git
# 进入目录
cd nacos
# 编译
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
# 进入编译产物目录
cd distribution/target/nacos-server-2.3.0/nacos/bin
启动模式
Nacos 支持两种启动模式:
- 单机模式:适用于开发和测试环境
- 集群模式:适用于生产环境
单机模式启动
单机模式使用内置数据库存储数据,无需额外配置:
# Linux/Unix/Mac
sh startup.sh -m standalone
# Windows
startup.cmd -m standalone
启动成功后,控制台会输出类似以下信息:
,--.
,--.'|
,--,: : | Nacos 2.3.0
,`--.'`| ' : ,--. Version: 2.3.0
| : : | | ,--.,--. / / _ Server
: | \ | : ,--.--. | || : / / / \ Mode: Standalone
| : ' '; | / \ ' '| | / / / \ Port: 8848
' ' ;. ;.--. .-. | ' ' ; / / \ Web: http://localhost:8848/nacos
访问控制台
启动成功后,访问 http://localhost:8848/nacos 进入控制台。
默认用户名和密码都是 nacos。
Docker 安装
使用 Docker 可以更便捷地部署 Nacos:
快速启动(单机模式)
docker run -d \
--name nacos-standalone \
-e MODE=standalone \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
nacos/nacos-server:v2.3.0
使用外部 MySQL
docker run -d \
--name nacos-standalone \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=your-mysql-host \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=nacos \
-e MYSQL_SERVICE_PASSWORD=nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
nacos/nacos-server:v2.3.0
Docker Compose 部署
创建 docker-compose.yml 文件:
version: '3.8'
services:
nacos:
image: nacos/nacos-server:v2.3.0
container_name: nacos-standalone
environment:
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=mysql
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_DB_NAME=nacos
- MYSQL_SERVICE_USER=nacos
- MYSQL_SERVICE_PASSWORD=nacos
ports:
- "8848:8848"
- "9848:9848"
- "9849:9849"
depends_on:
- mysql
restart: always
mysql:
image: mysql:8.0
container_name: nacos-mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=nacos
- MYSQL_USER=nacos
- MYSQL_PASSWORD=nacos
volumes:
- ./mysql-data:/var/lib/mysql
- ./nacos-mysql.sql:/docker-entrypoint-initdb.d/nacos-mysql.sql
restart: always
启动服务:
docker-compose up -d
配置外部数据库
生产环境建议使用外部数据库(MySQL)存储数据,确保数据持久化和高可用。
1. 创建数据库
CREATE DATABASE nacos CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
2. 初始化数据库表
Nacos 提供了 SQL 脚本,位于 conf/mysql-schema.sql。执行该脚本创建所需的表:
mysql -u root -p nacos < conf/mysql-schema.sql
3. 修改配置文件
编辑 conf/application.properties 文件:
# 数据库配置
spring.datasource.platform=mysql
# 数据库连接信息
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&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 的主要配置文件是 conf/application.properties,以下是一些常用配置:
服务端口配置
# 主端口
server.port=8848
# 上下文路径
server.servlet.contextPath=/nacos
认证配置
Nacos 2.x 默认开启认证,需要配置以下参数:
# 开启认证
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
默认的 secret.key 是公开的,仅适合临时测试。生产环境务必使用自定义的密钥,且确保所有节点配置一致。
日志配置
# 日志级别
logging.level.com.alibaba.nacos=info
# 日志路径
nacos.logging.path=${user.home}/nacos/logs
关闭服务
# Linux/Unix/Mac
sh shutdown.sh
# Windows
shutdown.cmd
Spring Cloud 集成
添加依赖
在 Spring Cloud 项目中集成 Nacos,首先添加依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2022.0.0.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2022.0.0.0</version>
</dependency>
版本兼容性
| 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 |
| 2.2.10-RC1 | Hoxton.SR12 | 2.3.x / 2.4.x |
配置文件
在 bootstrap.yml 中配置 Nacos 连接信息:
spring:
application:
name: my-service
cloud:
nacos:
# 服务发现配置
discovery:
server-addr: 127.0.0.1:8848
namespace: dev
group: DEFAULT_GROUP
# 配置中心配置
config:
server-addr: 127.0.0.1:8848
namespace: dev
group: DEFAULT_GROUP
file-extension: yaml
# 共享配置
shared-configs:
- data-id: common.yaml
group: DEFAULT_GROUP
refresh: true
启用服务发现
在启动类上添加 @EnableDiscoveryClient 注解:
@SpringBootApplication
@EnableDiscoveryClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
验证安装
检查服务状态
# 检查服务是否启动
curl http://localhost:8848/nacos/v1/ns/operator/metrics
注册测试服务
# 注册一个测试服务实例
curl -X POST 'http://localhost:8848/nacos/v1/ns/instance?serviceName=test-service&ip=127.0.0.1&port=8080'
查询服务列表
# 查询服务列表
curl 'http://localhost:8848/nacos/v1/ns/service/list?pageNo=1&pageSize=10'
发布配置
# 发布配置
curl -X POST "http://localhost:8848/nacos/v1/cs/configs?dataId=test.properties&group=DEFAULT_GROUP&content=test.value=hello"
获取配置
# 获取配置
curl "http://localhost:8848/nacos/v1/cs/configs?dataId=test.properties&group=DEFAULT_GROUP"
常见问题
1. 端口被占用
如果 8848 端口被占用,可以修改 application.properties 中的端口配置:
server.port=8849
注意:修改主端口后,gRPC 端口会自动调整(主端口 + 1000 和 + 1001)。
2. 内存不足
如果启动时内存不足,可以修改启动脚本中的 JVM 参数:
# 修改 startup.sh 中的 JVM 参数
JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
3. 连接 MySQL 失败
检查以下几点:
- MySQL 服务是否启动
- 数据库是否已创建
- 用户名密码是否正确
- 防火墙是否开放端口
4. 控制台无法访问
检查以下几点:
- Nacos 服务是否正常启动
- 防火墙是否开放端口
- 浏览器是否使用正确的地址