Nacos的集群与持久化
快速上手Nacos的集群与持久化
1.Nacos为什么要持久化
Nacos默认有自带嵌入式数据库derby,但是如果做集群模式的话,就不能使用自己的数据库不然每个 节点一个数据库,那么数据就不统一了,需要使用外部的mysql
修改nacos/conf目录下的application.properties文件
spring.datasource.platform=mysql ,告诉Nacos要切换数据库为Mysql
数据库数量为1
配置数据库的URL,用户名,密码,这里可以给connectTimeout和socketTimeout的超时时间加个0,防止因为限制时间太短连接不上数据库
此时我们已经配置完成application.properties,保存并关闭,接着我们打开nacos-mysql.sql文件,由于我们还没有存放nacos内容的数据库,需要新建数据库
打开之后,复制建表语句,新建一个数据库
建表成功之后数据库是这样的
,可以打开nacos的主页测试以下能否存储成功
连接上数据库并打开表config_info,可以看到新增的配置文件说明Nacos持久化完成
2.Nacos的集群如何部署
只玩一台Nacos服务器没什么意思,还不如用Dubbo,所以我们接下来要部署Nacos的集群,其中NGINX的作用是分发请求到各个Nacos服务器,做到负载均衡
什么是集群,集群的作用是什么?
集群就是多台服务器组成的一组计算机,作为一个整体存在,向用户提供一组网络资源,这些单个的服务器就是集群的节点。
集群的作用和意义:可扩展性、高可用性、负载均衡、错误恢复等。
多个请求通过NGINX平均分发到多台Nacos服务器上(至少是三台),这三台服务器有一个共同的leader,是通过多台服务器投票选出来的,投票机制是按启动顺序先投自己一票,由于票数过半才能当leader,所以第一轮投票没选出leader,第二轮的投票机制是投自己下个服务器一票,由于这里搭建了三台服务器,所以第二轮第一票的时候票数已过半,选举出了leader
关于leader可以在Nacos主页集群管理/节点列表的节点元数据看到leader,以服务器1为leader来说,leader的作用就是比如有一个请求此刻进入到了服务器2,服务器2会跟leader说有一个请求进来了,而leader则会通知服务器3去拉取这个请求,这样一来,所有服务器保存的数据都是同步的.
集群搭建
可以先规划一下节点,由于Nacos的默认端口为8848,我们以搭建三台服务器为例,节点可以规划为,这里的节点是服务器的Ip,三个需要一样
节点 | 端口 |
---|---|
服务器的Ip地址三个是统一的 | 8848 |
服务器的Ip地址三个是统一的 | 8849 |
服务器的Ip地址三个是统一的 | 8850 |
之后修改nacos/conf下的cluster.conf文件
把将要搭建集群的地址和端口号添加进去
之后在命令窗口新建nacos_cluster文件夹,并复制三份进去
[root@localhost bin]# cd /usr/local
[root@localhost java]# mkdir nacos_cluster
[root@localhost java]# cp -r nacos nacos_cluster/nacos_8848
[root@localhost java]# cp -r nacos nacos_cluster/nacos_8849
[root@localhost java]# cp -r nacos nacos_cluster/nacos_8850
此时集群已经配置成功,但是并不能使用,因为我们需要用到Nginx,Nginx是C语言编写的,所以我们这里还需要安装C语言的环境,这个指令不用记,复制粘贴即可
安装nginx的依赖库
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
打开nginx/conf目录下的nginx.conf文件,配置代理Nacos
upstream nacos {
server 192.168.209.129:8848;
server 192.168.209.129:8849;
server 192.168.209.129:8850;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://nacos;
}
}
配置完成,测试一下集群
启动Nacos集群
[root@localhost upload]# cd /usr/local/nacos_cluster/nacos_8848/bin
[root@localhost bin]# ./startup.sh
[root@localhost bin]# cd /usr/local/nacos_cluster/nacos_8849/bin
[root@localhost bin]# ./startup.sh
[root@localhost bin]# cd /usr/local/nacos_cluster/nacos_8850/bin
[root@localhost bin]# ./startup.sh
启动Nginx
[root@localhost nginx]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx
在后端注册一个微服务到Nacos集群
在Nacos主页的服务列表我们发现三台服务器都已经注册成功了,此时Nacos集群搭建成功