4. Nacos 安装与启动:单机模式、集群模式、Docker 部署
好,咱们进入实战环节。Nacos 的安装,说实话没那么复杂,但坑也不少。我见过不少团队,配置中心都跑起来了,结果因为启动模式选错,或者端口没放开,线上出了大问题。
今天我就把单机、集群、Docker 这三种方式,掰开揉碎了讲清楚。你跟着走一遍,基本就能应付绝大多数场景了。
4.1 环境准备:先把地基打好
在动手之前,先确认几件事。我个人习惯用 Linux 服务器,CentOS 7 或 Ubuntu 20.04 都行。Windows 也能跑,但生产环境我强烈不建议。
- JDK 1.8+:Nacos 依赖 Java 环境。记得配好
JAVA_HOME。 - MySQL 5.7+(集群模式必需):单机模式可以用内嵌 Derby 数据库,但集群必须用 MySQL。
- Nacos 安装包:去 GitHub 下载最新稳定版,我一般用
nacos-server-2.x.x.tar.gz。
nacos/plugins/mysql/ 目录下。不然启动时会报找不到驱动的错,我曾经在这上面浪费过半小时。
4.2 单机模式:快速上手
单机模式最简单,适合开发测试。说白了就是一个人干活,不需要跟别人商量。
解压安装包,进入目录,直接执行:
# Linux/Mac
sh startup.sh -m standalone
# Windows
startup.cmd -m standalone
启动后,访问 http://localhost:8848/nacos,默认账号密码都是 nacos。
data/ 目录删了,配置就全丢了。所以,别在生产环境用单机模式。
如果你想用 MySQL 跑单机模式,也可以。修改 conf/application.properties:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=your_password
然后执行 conf/mysql-schema.sql 初始化数据库表结构。嗯,这一步别忘了,我刚开始就吃过这个亏。
4.3 集群模式:高可用的关键
生产环境必须上集群。你想想看,如果配置中心挂了,所有服务都拿不到配置,那不就全瘫了吗?
集群模式至少需要 3 个节点。我一般用 3 台机器,或者在同一台机器上开 3 个不同端口。
4.3.1 配置集群文件
在 conf/cluster.conf 里写上所有节点的地址:
192.168.1.10:8848
192.168.1.11:8848
192.168.1.12:8848
注意,这里写的是真实 IP,别用 localhost。我曾经在测试环境用了 localhost,结果节点之间互相找不到,折腾了半天才发现是这个问题。
4.3.2 配置 MySQL 数据源
所有节点必须连接同一个 MySQL 数据库。修改每个节点的 application.properties:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.1.100:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=your_password
4.3.3 启动集群
每个节点执行:
sh startup.sh
默认就是集群模式。启动后,访问任意一个节点的管理界面,都能看到所有节点的状态。
server-addr 时,可以写多个地址,用逗号隔开。
4.4 Docker 部署:容器化时代的标配
现在大家都用容器了。Docker 部署 Nacos 其实更简单,而且便于管理。
4.4.1 单机 Docker 部署
docker run -d \
--name nacos-server \
-p 8848:8848 \
-e MODE=standalone \
nacos/nacos-server:2.2.0
就这么一行命令,搞定。不过,数据是存在容器里的,容器一删就没了。所以,我建议挂载外部卷:
docker run -d \
--name nacos-server \
-p 8848:8848 \
-e MODE=standalone \
-v /data/nacos/logs:/home/nacos/logs \
-v /data/nacos/data:/home/nacos/data \
nacos/nacos-server:2.2.0
4.4.2 集群 Docker 部署
集群用 Docker Compose 最方便。写一个 docker-compose.yml:
version: '3'
services:
nacos1:
image: nacos/nacos-server:2.2.0
container_name: nacos1
ports:
- "8848:8848"
environment:
- MODE=cluster
- NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
- MYSQL_SERVICE_HOST=mysql
- MYSQL_SERVICE_DB_NAME=nacos_config
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=your_password
volumes:
- /data/nacos1/logs:/home/nacos/logs
- /data/nacos1/data:/home/nacos/data
nacos2:
image: nacos/nacos-server:2.2.0
container_name: nacos2
ports:
- "8849:8848"
environment:
- MODE=cluster
- NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
- MYSQL_SERVICE_HOST=mysql
- MYSQL_SERVICE_DB_NAME=nacos_config
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=your_password
volumes:
- /data/nacos2/logs:/home/nacos/logs
- /data/nacos2/data:/home/nacos/data
nacos3:
image: nacos/nacos-server:2.2.0
container_name: nacos3
ports:
- "8850:8848"
environment:
- MODE=cluster
- NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
- MYSQL_SERVICE_HOST=mysql
- MYSQL_SERVICE_DB_NAME=nacos_config
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=your_password
volumes:
- /data/nacos3/logs:/home/nacos/logs
- /data/nacos3/data:/home/nacos/data
mysql:
image: mysql:5.7
container_name: mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=your_password
- MYSQL_DATABASE=nacos_config
volumes:
- /data/mysql/data:/var/lib/mysql
- ./mysql-schema.sql:/docker-entrypoint-initdb.d/mysql-schema.sql
然后执行:
docker-compose up -d
等几分钟,三个 Nacos 节点就都起来了。你可以用 docker logs 查看启动日志,确认没有报错。
NACOS_SERVERS 环境变量里写了 IP 而不是容器名。记住,Docker 内部用容器名通信,别写 IP。
4.5 启动后的验证
不管哪种方式启动,都要验证一下:
- 访问管理界面,确认能正常登录。
- 在「集群管理」页面查看节点状态,所有节点都应该是「UP」。
- 创建一个测试配置,看看能不能正常保存和读取。
嗯,到这里,Nacos 的安装启动就讲完了。单机模式适合练手,集群模式保生产,Docker 部署最省心。你根据自己团队的实际情况选就行。
下一节,咱们聊聊 Nacos 的配置管理,那才是真正干活的地方。