一、Nacos持久化
1. 什么是Nacos持久化?为什么要进行Nacos持久化?
Nacos持久化是指集群中的多个Nacos将数据持久化到一个第三方的数据库(比如MySQL)中。
Nacos持久化的目的是使集群中每个节点的数据保持一致。Nacos默认将数据保存在自带的数据库Derby中,搭建集群的时候就会出现一个问题,每个节点Nacos中的数据无法保持一致。解决方法是:集群中所有的节点Nacos不在将数据保存在自带的数据库Derby中,而是保存在一个共同的第三方数据库(MySQL)中,这样就保证了集群中所有节点的数据一致性。
2. 如何进行Nacos持久化?
2.1 切换数据库
修改Nacos安装目录中nacos/conf/application.properties
的配置文件,增加支持mysql数据源配置(目前只支持mysql,版本要求:5.6.5+)
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
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=1111
2.2 初始化数据库
创建nacos数据库并导入sql
2.3 测试
重启nacos测试nacos所有写到嵌入式数据库的数据是否都写到了mysql:
二、搭建Nacos集群
1. 集群结构图
2. 节点规划
节点 | 端口 |
---|---|
192.168.52.131 | 8848 |
192.168.52.131 | 8849 |
192.168.52.131 | 8850 |
3. 集群搭建
3.1 找到Nacos安装目录中nacos/conf/cluster.conf.example
,将其复制并改名为 conf/cluster.conf
,并将内容改为如下:
# ip:port
192.168.52.131:8848
192.168.52.131:8849
192.168.52.131:8850
3.2 新建nacos_cluster文件夹,将Nacos安装目录复制三份到nacos_cluster文件夹中
mkdir nacos_cluster
cp -r nacos nacos_cluster/nacos_8848
cp -r nacos nacos_cluster/nacos_8849
cp -r nacos nacos_cluster/nacos_8850
3.3 分别在目录nacos_cluster/nacos_xxxx/conf/application.properties
中修改端口号为:
server.port=8848
server.port=8849
server.port=8850
3.4 配置代理服务
3.4.1 安装Nginx
- 安装C语言环境依赖,Nginx基于C语言开发,所以要先安装C语言环境依赖。
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
- 下载Nginx
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
- 解压安装包
tar -zxvf nginx-1.12.0.tar.gz
- 进入加压后的目录,配置Nginx安装目录
cd nginx-1.12.0
./configure --prefix=/usr/local/nginx
- 编译并安装
make && make install
3.4.2 使用Nginx配置Nacos集群
编辑Nginx配置文件nginx/conf/nginx.conf
upstream nacos {
server 192.168.52.131:8848;
server 192.168.52.131:8849;
server 192.168.52.131:8850;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://nacos;
}
}
4. 测试
4.1启动Nacos集群
cd /usr/local/nacos_cluster/nacos_8848/bin
./startup.sh
cd /usr/local/nacos_cluster/nacos_8849/bin
./startup.sh
cd /usr/local/nacos_cluster/nacos_8850/bin
./startup.sh
4.2 启动Nginx
cd /usr/local/nginx/sbin/
./nginx
4.3 将微服务注册到Nacos集群
nacos-config:
spring:
cloud:
nacos:
config:
server-addr: 192.168.52.131
file-extension: yaml #后缀名,只支持 properties 和 yaml 类型
prefix: nacos-config #文件名,如果没有配置则默认为 ${spring.appliction.name}
group: NACOS_GROUP
nacos-provider:
server:
port: 9090
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.52.131
application:
name: nacos-provider #向注册中心注册的名字
nacos-consumer:
server:
port: 8080
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.52.131
application:
name: nacos-consumer #向注册中心注册的名字
4.4 访问nacos集群
启动nacos微服务,并通过nginx访问nacos集群:http://192.168.52.131/nacos