Nacos持久化集群搭建

发布于 2022-04-22  2.09k 次阅读


一,Nacos的持久化切换配置

    在0.7版本之前,单机模式下Nacos使用嵌入式数据库Derby存储,不方便观察存储的基本情况,在0.7版本之后Nacos支持mysql数据源能力,可以将数据保存到mysql 

切换数据库的步骤:

  1. 在Linux中安装Mysql,版本要求5.6.5+(安装省略)
  2. 初始化mysql数据库,数据库初始化文件:nacos-mysql.sql(文件在nacos/conf目录下)
  3. 修改conf/application.properties文件,增加支持mysql数据源的配置(目前只支持mysql)

1,初始化数据库(将nacos-mysql.sql脚本导入mysql)

执行sql脚本的方式:

  1. 未连接数据库:mysql -uroot -p123456789 < sql脚本路径
  2. 已连接数据库:source sql脚本路径
  3. 通过Navicat工具连接mysql将sql导入

使用source方式:这种方式需要新建一个数据库,不能直接导入

mysql -uroot -p123456 #连接数据库
create database nacos_config;
use nacos_config;
source /home/nacos/conf/nacos-mysql.sql

导入后查看tables:

2,配置Nacos连接mysql的配置

修改conf/application.properties文件:添加如下配置

spring.datasource.platform=mysql
db.num=1
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=root
db.password=123456789

测试是否成功切换:在nacos服务端新建一个wql用户,看mysql是否存在

二,集群的搭建

一,Nacos集群概述

Nacos的集群模式图:

Nacos集群和Eureka集群有很大的区别:

  1. Eureka集群是相互绑定的,节点和其他节点之间都要心跳检测,假如节点数多相互绑定,性能低
  2. Nacos集群依赖于其他软件进行负载均衡,如:Nginx,HaProxy等,节点之间无需相互绑定,假如节点服务故障,可用通过Nginx负载到其他机器

二,Nacos集群的搭建

搭建前期准备:三台虚拟机

  1. 一个Nginx(不使用keeplive搭建Nginx高可用)
  2. 三台Nacos
  3. 一个Mysql数据库(不使用集群)
192.168.68.152
Nacos1
192.168.68.153
Nacos2
192.168.68.134
Nacos3
Mysql+Nginx

一,集群搭建

三台虚拟操作是一样的

① 上传nacos安装包

② 解压

tar -zxvf nacos-server-2.0.3.tar.gz

③ 配置Mysql源

spring.datasource.platform=mysql
db.num=1
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=root
db.password=123456789

④ 配置cluster.conf集群文件

192.168.68.134:8848
192.168.68.152:8848
192.168.68.153:8848

启动三台集群的服务并查看控制台:

二,配置Nginx

Nginx的安装省略(具体可以看本站博客Nginx,有详细操作)

nginx.conf:以下内容添加在Http块中

upstream cloust{ #负载均衡
        server 192.168.68.134:8848;
        server 192.168.68.152:8848;
        server 192.168.68.153:8848;
        }

    server{ 
        listen 8084; #监听的端口
        server_name localhost;
        location / { 
                proxy_pass http://cloust; #反向代理
        }
        }

测试: