文章目录
Nacos 配置
一、Nacos服务配置数据模型
1.1 命名空间
用于配置隔离,不同命名空间下,可以存在相同的Group或Data ID配置,Namespace的常用场景之一是不同环境的配置进行区分隔离,例如开发环境、测试环境和生产环境的资源(如配置、服务)隔离等
1.2 Group
Nacos中的一组配置集合,是组织配置的维度之一,通过一个有意义的字符串(如 Buy 或 Trade)对一组配置集合进行分组,从而区分Data ID相同的配置集合,当在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP
,配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url配置和MQ_topic配置
1.3 Data Id
Nacos中的某个配置集合的ID,配置集合ID是组织划分配置的维度之一,Data ID通常用于组织划分系统的配置集合,一个系统或者应用可以包含多个配置集合,每个配置集都可以被一个有意义的名称标识
1.4 配置方案
1.4.1 方案一
默认命名空间(public) + 默认Group分组(DEFAULT_GROUP) + 自定义Data Id(没有默认值)
默认命名空间:public
默认Group:DEFAULT_GROUP
自定义Data Id:
${spring.application.name}-${profile}.${file-extension:properties}
比如:nacos-config-dev.yaml
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.group=DEFAULT_GROUP
spring.profiles.active=dev
1.4.2 方案二
默认命名空间 + 自定义Group分组 + 自定义的Data Id(没有默认值)
默认命名空间:public
默认Group:DEV_GROUP
自定义Data Id:
${spring.application.name}-${profile}.${file-extension:properties}
比如:nacos-config-dev.yaml
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.group=DEV_GROUP
spring.profiles.active=dev
1.4.3 方案三
自定义命名空间 + 自定义Group分组 + 自定义的Data Id(没有默认值)
默认命名空间:dev
默认Group:DEV_GROUP
自定义Data Id:
${spring.application.name}-${profile}.${file-extension:properties}
比如:nacos-config-dev.yaml
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.group=DEV_GROUP
spring.profiles.active=dev
spring.cloud.nacos.discovery.namespace=3dba4b54-7395-4cd0-8026-1dc62f353f09
二、Nacos数据持久化
Nacos默认情况下是采用 apache derby
内嵌数据库进行数据存储,在单机模式时可以使用nacos嵌入式数据库实现数据存储,但是derby数据库不方便观察数据存储的基本情况,从 nacos 0.7 版本开始增加了支持mysql数据源能力;
2.1 操作步骤
2.1.1 启动数据库
安装数据库
service mysql start
mysql -uroot -padmin
2.1.2 数据库文件
初始化MySQL数据库,数据库初始化文件: nacos-mysql.sql,该文件可以在Nacos程序包下的 conf目录下获得;
2.1.3 application.properties 文件
修改 conf/application.properties
文件,增加支持MySQL数据源配置,添加(目前只支持mysql)数据源的url、用户名和密码
#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=admin
然后启动nacos(还是单机启动),此时发现nacos所有写嵌入式数据库的数据都写到了mysql
三、Ncaos集群部署
3.1 具体步骤
1、准备三个nacos,3个或3个以上Nacos节点才能构成集群;
2、在Nacos的conf目录下有一个 cluster.conf.example
,可以直接把 example
扩展名去掉来使用,也可以单独创建一个 cluster.conf
文件,然后在该文件中每行配置一个ip:port;
192.168.106.128:8848
192.168.106.129:8848
192.168.106.130:8848
3、按照上面nacos持久化的方式配置好数据持久化到MySQL,生产使用建议至少主备模式,或者采用高可用数据库
4、启动测试;
3.2 集群连接
第一种:可以在单机的基础上加多个IP和端口中间用逗号隔开
spring.cloud.nacos.discovery.server-addr=192.168.106.128:8848,192.168.106.129:8848,192.168.106.130:8848
第二种:配合 Nginx 代理我们的 Nacos 集群,配置里就直接写 Nginx 的 IP和端口即可;
upstream nacos {
server 192.168.106.128:8848;
server 192.168.106.129:8848;
server 192.168.106.130:8848;
}
location /nacos {
proxy_pass http://nacos; # 代理的端口
}