nacos集群和持久化配置

在使用nacos的时候我们有用过nacos作为配置中心,也就是在nacos上创建的yml配置文件。
会发现关闭nacos然后后面再次启动nacos时,这些yml配置信息并没有消失。

为什么yml配置信息没有消失?

原因在于nacos带有一个嵌入式的小型数据库derby,哪些配置信息都被持久化到derby数据库中。因此当nacos启动的时候就会将持久化的数据再次读取出来。
derby存的数据路径在
在这里插入图片描述

由此引发思考,如果要做nacos的集群,那么首要的目的就是这些持久化数据在每一台nacos实例上都要一致。

而nacos每一台实例启动的时候就会使用derby作为数据源(相当于是本地的数据源),因此每一台nacos实例的持久化数据是不一样的!

也就是说要想做nacos集群,得将数据源提取出来(相当于是远程的数据源)到MySQL(目前只支持MySQL),所有nacos实例使用得数据源都是同一个数据源!

解决方案 第一步、使用MySQL替代derby作为数据源

第1步、在MySQL上创建对应的表

首先创建一个数据库名字可以自定义例如nacos_config
然后在conf目录下找到执行sql脚本nacos-mysql.sql就是
在这里插入图片描述
执行完成后检查一下数据库是否创建成功了

在这里插入图片描述

第2步、修改nacos的conf/application.properties文件

因为nacos也是用java编写的springboot项目,因此修改application.properties将数据源配置为MySQL作为数据源

和以前MySQL配置差不多要填用户名、密码、数据库链接的URL、使用的数据源驱动

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

在这里插入图片描述

然后保存,启动nacos即可,依此启动多个nacos实例即可,因为数据源是一致的(最后MySQL也做集群),所以就不用担心数据不一致。

引发第二个问题:不同实例的nacos他们的主机ip不同,如何让我们的微服务使用nacos作为配置中心和注册中心?难不成填多个nacos地址?

nacos官网推荐的方式是:
在这里插入图片描述
其中VIP指的是虚拟ip,全称Virtual ip
我们可以怎么理解这张图呢?
一种方式是让3台nacos使用keepalived进行争抢虚拟ip(这种方式我认为不能充分利用服务器,推荐使用下面一种)

个人比较推荐的方式:

使用nginx进行代理,nginx我们可以做集群,然后通过域名访问nginx集群,然后nginx代理多台nacos实例进行流量分发,我们可以可以使用负载均衡算法(轮询、权重、最快响应时间等)进行负载均衡。

第二步、添加nacos集群节点地址到配置文件中

将 conf下的新建一个cluster.conf并且填入nacos的地址
ip:端口
这里就以一台服务器ip为192.168.117.210 不同端口模拟集群

192.168.117.210:8847
192.168.117.210:8848
192.168.117.210:8849

第三步、修改启动脚步,添加端口参数选项

nacos本质是springboot项目,所以端口信息以及启动配置文件都在conf下的application.properties文件中定义的server.port定义服务器端口(可以直接修改源文件中的server.port值)然后运行启动脚本
可以通过-Dserver.port=8847来依次启动jar

vim ./startup.sh

在这里插入图片描述
在这里插入图片描述

./startup.sh -P 8847
./startup.sh -P 8848
./startup.sh -P 8849

第四步、使用Nginx代理3台nacos

如果对Nginx还不熟悉看我的nginx专栏的一些案例

Nginx专栏

快速使用请借鉴这篇文章:

Nginx的安装、使用、负载均衡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诗水人间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值