一、Nacos 为什么要做持久化?
- Nacos 默认使用内嵌数据库 Derby,数据存在本地
- 如果搭建集群 ,每个节点数据独立,互不同步,会出现:
- 配置不一致
- 服务注册信息不一致
- 持久化 = 统一使用 MySQL 存储数据,所有 Nacos 节点共用一个 MySQL,数据完全一致。
二、Nacos 持久化配置(切换到 MySQL)
1. 新建 MySQL 数据库
CREATE DATABASE nacos DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2. 执行 Nacos 官方建表语句
/usr/local/nacos/conf/nacos-mysql.sql
直接在 Navicat/DBeaver 中运行,自动创建 Nacos 所需表。
3. 修改 Nacos 配置文件
vim /usr/local/nacos/conf/application.properties
添加 / 修改以下配置:
### 使用 MySQL 数据源
spring.datasource.platform=mysql
### 数据库数量
db.num=1
### MySQL 连接信息(改成你自己的地址/账号密码)
db.url.0=jdbc:mysql://192.168.20.9:3306/nacos?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=1111
4. 重启 Nacos
cd /usr/local/nacos/bin
./shutdown.sh
./startup.sh
5. 测试持久化
发布一条配置 → 去 MySQL 的 nacos.config_info 表中查看,数据已写入即成功。
三、Nacos 集群搭建
1. 为什么集群要 3 台?
- Nacos 集群使用 Raft 算法 选主
- 必须奇数台:3、5、7...
- 3 台可以挂 1 台仍然可用,满足高可用。
2. 集群搭建步骤
① 准备集群配置文件
cd /usr/local/nacos/conf
cp cluster.conf.example cluster.conf
vim cluster.conf
写入 3 个节点地址(本机 IP + 端口):
192.168.61.132:8851
192.168.61.132:8852
192.168.61.132:8853
② 创建集群目录,复制 3 份 Nacos
cd /usr/local
mkdir nacos-cluster
cp -r nacos nacos-cluster/nacos-8851
cp -r nacos nacos-cluster/nacos-8852
cp -r nacos nacos-cluster/nacos-8853
③ 修改每个节点端口
# 8851
vim /usr/local/nacos-cluster/nacos-8851/conf/application.properties
server.port=8851
# 8852
vim /usr/local/nacos-cluster/nacos-8852/conf/application.properties
server.port=8852
# 8853
vim /usr/local/nacos-cluster/nacos-8853/conf/application.properties
server.port=8853
④ 启动 3 个 Nacos 节点(集群模式启动)
# 必须不加 -m standalone,默认就是集群模式
cd /usr/local/nacos-cluster/nacos-8851/bin
./startup.sh
cd /usr/local/nacos-cluster/nacos-8852/bin
./startup.sh
cd /usr/local/nacos-cluster/nacos-8853/bin
./startup.sh
查看集群状态:访问任意节点
plaintext
http://IP:8851/nacos/#/cluster
能看到 3 个节点均为 UP 表示搭建成功。
四、Nginx 代理 Nacos 集群(统一入口)
1. 安装 Nginx 依赖
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
2. 下载并安装 Nginx
cd /usr/local
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
tar -zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
./configure --prefix=/usr/local/nginx
make && make install
3. Nginx 常用命令
# 启动
/usr/local/nginx/sbin/nginx
# 重启
/usr/local/nginx/sbin/nginx -s reload
# 关闭
/usr/local/nginx/sbin/nginx -s stop
4. 配置 Nginx 代理 Nacos 集群
vim /usr/local/nginx/conf/nginx.conf
在 http 块内添加:
upstream nacos {
server 192.168.61.132:8851;
server 192.168.61.132:8852;
server 192.168.61.132:8853;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://nacos;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
重启 Nginx:
/usr/local/nginx/sbin/nginx -s reload
5. 测试访问
直接访问 Nginx 地址即可自动负载均衡到 3 个 Nacos:
http://192.168.61.132/nacos
最终架构(生产标准)
用户/微服务 → Nginx(80) → Nacos集群(8851/8852/8853) → MySQL(统一存储)