跳到主要内容

安装与配置

本章节介绍 Nacos 的安装方式和基础配置,帮助你快速搭建 Nacos 环境。

环境要求

在安装 Nacos 之前,请确保你的系统满足以下要求:

要求说明
操作系统Linux/Unix/Mac/Windows,推荐 Linux
JDK64 位 JDK 1.8+
Maven3.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 AlibabaSpring CloudSpring Boot
2022.0.0.02022.0.03.0.x
2021.0.5.02021.0.x2.6.x / 2.7.x
2.2.10-RC1Hoxton.SR122.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 服务是否正常启动
  • 防火墙是否开放端口
  • 浏览器是否使用正确的地址

下一步