一、Nacos 配置管理模型与隔离
1.1 Nacos 三层配置隔离模型
Nacos 使用 Namespace + Group + Data ID 定位唯一配置集,实现多环境、多项目、多服务隔离:
- Namespace:环境隔离(开发、测试、生产)
- Group:项目 / 业务组隔离(电商项目、支付项目)
- Data ID:具体服务配置文件名
1.2 Namespace 环境隔离
1.2.1 创建 Namespace
- 打开 Nacos 控制台 → 命名空间 → 新建命名空间
- 填写名称(dev/test/prod)与描述,自动生成命名空间 ID
1.2.2 配置克隆(跨环境迁移)
配置列表 → 选中配置 → 克隆 → 选择目标 Namespace,快速复制配置。
1.2.3 微服务指定 Namespace 读取配置
在 bootstrap.yml 中配置:
spring:
cloud:
nacos:
config:
server-addr: 192.168.209.129:8848
file-extension: yaml
prefix: nacos-config
namespace: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # 命名空间ID
1.3 Group 项目隔离
1.3.1 创建配置并指定 Group
新建配置时自定义 Group 名称,例如:ORDER_GROUP、PAY_GROUP。不同 Group 下可存在相同 Data ID,互不干扰。
1.3.2 微服务指定 Group 读取配置
spring:
cloud:
nacos:
config:
server-addr: 192.168.209.129:8848
file-extension: yaml
prefix: nacos-config
group: ORDER_GROUP # 自定义分组
二、Nacos 服务隔离
服务隔离基于 Namespace 实现,不同 Namespace 下的服务互相不可见,避免环境互相污染。
2.1 服务指定 Namespace 注册
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.209.129:8848
namespace: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # 命名空间ID
application:
name: nacos-provider
2.2 服务隔离测试
启动服务后,在 Nacos 控制台切换 Namespace,仅当前空间服务可见。
三、Nacos MySQL 持久化
Nacos 默认使用嵌入式 Derby 数据库,集群必须改用 MySQL 统一存储。
3.1 环境要求
- MySQL 5.6.5+
- Nacos 1.4.x 稳定版
3.2 修改 application.properties
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.31.19:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456
3.3 初始化数据库
- 创建数据库:
nacos - 执行 SQL:
conf/nacos-mysql.sql
3.4 验证持久化
重启 Nacos,服务注册信息、配置信息均写入 MySQL,重启不丢失。
四、Nacos 高可用集群搭建
4.1 集群架构
- 3 个 Nacos 节点
- 共享同一 MySQL
- Nginx 负载均衡
4.2 节点规划
| IP | 端口 |
|---|---|
| 192.168.209.129 | 8850 |
| 192.168.209.129 | 8851 |
| 192.168.209.129 | 8852 |
4.3 配置集群节点
-
复制
conf/cluster.conf.example为cluster.conf -
添加节点信息:
192.168.209.129:8850
192.168.209.129:8851
192.168.209.129:8852
4.4 修改端口
分别修改 3 个实例的 application.properties 端口:
server.port=8850
server.port=8851
server.port=8852
4.5 启动集群
./startup.sh # 集群模式不加 -m standalone
五、Nginx 代理 Nacos 集群
5.1 安装 Nginx
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
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
5.2 Nginx 配置
upstream nacos {
server 192.168.209.129:8850;
server 192.168.209.129:8851;
server 192.168.209.129:8852;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://nacos;
}
}
5.3 启动 Nginx
cd /usr/local/nginx/sbin
./nginx
5.4 微服务连接集群
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.209.129:80
六、Nacos Linux 开机自启
6.1 创建 systemd 服务文件
vim /lib/systemd/system/nacos.service
内容:
[Unit]
Description=nacos
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nacos/bin/startup.sh -m standalone
ExecReload=/usr/local/nacos/bin/shutdown.sh
ExecStop=/usr/local/nacos/bin/shutdown.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
6.2 修改 startup.sh 指定 JDK
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/local/jdk1.8.0_191
# 注释以下三行
# [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
# [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/opt/taobao/java
# [ ! -e "$JAVA_HOME/bin/java" ] && unset JAVA_HOME
6.3 设置开机自启
systemctl daemon-reload
systemctl enable nacos.service
systemctl start nacos.service
systemctl status nacos.service
七、全文总结
- 配置隔离:Namespace(环境)+ Group(项目)+ Data ID(服务)
- 服务隔离:Namespace 实现环境隔离,安全可靠
- 持久化:Derby 切换 MySQL,集群数据统一
- 高可用:3 节点集群 + Nginx 负载均衡,生产标准方案
- 运维优化:systemd 托管开机自启,稳定省心