Nacos

一、Nacos 为什么要做持久化?

  1. Nacos 默认使用内嵌数据库 Derby,数据存在本地
  2. 如果搭建集群 ,每个节点数据独立,互不同步,会出现:
    • 配置不一致
    • 服务注册信息不一致
  3. 持久化 = 统一使用 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(统一存储)
相关推荐
KNeeg_16 分钟前
黑马点评完整代码(RabbitMQ优化)+简历编写+面试重点 ⭐
java·redis·后端·spring·面试·职场和发展·黑马点评
萧曵 丶20 分钟前
MySQL 高频面试题(由浅到深 完整版,面试必背)
数据库·mysql·面试
czlczl2002092526 分钟前
MySQL 执行引擎:排序与临时表机制深度解析
数据库·mysql
lifewange1 小时前
DBeaver如何安装
数据库
m0_631529821 小时前
CSS如何利用CSS变量进行渐变色管理_提升渐变配置的灵活性
jvm·数据库·python
2301_818008441 小时前
数据库模型设计实战:如何正向工程从模型建表_规范化项目开发流程
jvm·数据库·python
期待のcode2 小时前
Redis的数据清理机制
数据库·redis·缓存
oradh2 小时前
Oracle数据库服务器端编程介绍
数据库·oracle·oracle基础·oracle数据库基础
2401_846339562 小时前
Vue 3 中集成 Three.js 场景的完整实现指南
jvm·数据库·python
日取其半万世不竭2 小时前
Excalidraw 自建部署指南:白板协作工具完全私有化
服务器·网络·数据库