(五)mysql高可用搭建,keepalived配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a281246240/article/details/83414294

(一)使用主主复制

在前面的文章里我们搭建了mysql主从复制,主主复制,多从节点的负载均衡,下面我们用图来表示出来:

如图,所有的读操作到haproxy,写操作到Master主库,读写库分离,提高性能,同时,多个从库能提高读性能,而且还实现了数据备份。

那么,主主复制在上述架构中体现什么作用呢?为什么要使用两个Master主主同步呢?

是实现数据热备吗?不是,因为主从就实现了热备。

在图中可以看到写操作的目标只有一个库,如果这个库宕机或者出现问题了,那么会导致我们整个项目都瘫痪,直接导致项目的所有写操作不能正常使用,虽然能读数据。

所以可以使用另外一个Master库做备库,如果第一个Master宕机,就实时把所有写操作切换到预备好的Master库,这样,就算其中有一个出问题也能保证整个项目正常运作。

怎么保证出现问题时两个Master之间实现智能切换?实现高可用?

我们使用Keepalived实现。

(二)Keepalived是什么

   Keepalived是Linux下一个轻量级别的高可用解决方案。高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭义的来讲就是之主机的冗余和接管

Keepalived高可用故障切换转移原理:

Keepalived高可用服务对之间的故障切换转移,是通过 VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议)来实现的。

  在 Keepalived服务正常工作时,主 Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活看,当主 Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。

(三)Keepalived搭建

引入keepalived之后,我们重新架构上图:

接下来我们来搭建Keepalived,实现高可用

首先搭建好两Master,Master1和Master2,实现主主复制,之前的文章中有过程。

下载Keepalived,http://www.keepalived.org/download.html,下载keepalived-2.0.8.tar

(由于最新版本2.0.8安装出现问题,改用了1.3.5版本安装)

把tar包传输到Master1和Master2节点linux服务器中,这里都放在/root/soft下:

进行解压:

进入到解压目录,运行configure检测安装环境:

检测,没有c编译器,使用yum安装编译器yum install gcc-c++;

还需要安装openssl:yum install openssl openssl-devel

再次./configure检测发现this build will not support ipvs with ipv6,依次安装:yum -y install libnl libnl-devel,yum install -y libnfnetlink-devel可解决

然后再编译和安装Keepalived:make && make install

安装完查看Keepalived的配置文件和可执行文件:

配置文件:/usr/local/etc/keepalived/keepalived.conf

执行文件:/usr/local/sbin/keepalived

安装完keepalived之后进行配置:

分配ip:Master1的Iip为:192.168.199.166,Master2的ip为192.168.199.167

我们还需要虚拟出一个节点,我们设定它的ip为192.168.199.200

再来编辑keepalived.conf配置文件,先只保以下内容:

激活的节点(主库)配置:

备份的节点配置:

两个节点的happalived的配置有所不同,virtual_ipaddress中的ip为之前指定好的虚拟节点的ip

再启动两keepalived,./keepalived -D -f /usr/local/etc/keepalived/keepalived.conf

启动成功
启动之后查看keepalived进程,有三个进程:

再看主库的ip信息,用命令ip a查看信息,可以看到多了一个inet,这就是之前配置的虚拟节点,而备库节点则没有:

表示启动成功。

接下来我们用虚拟ip来连接mysql,用户名密码为两主节点mysql共同有的用户,即可登陆msyql

我们用一张表的有无来区别两msyql,激活的有product表,备库没有product表:

激活库
​​​​​备库

 我们用另外一个虚拟机的mysql来连接我们在keepalived中设定的ip,连接之后:

连接之后发现有product表,说明正是我们要连接的主库。

(三)验证Keepalived

搭建完成,我们来验证keepalived

我们手动的模拟主库节点出现问题,宕机了,再看连接的是哪个库

把主库的keepalived进程直接关闭:

可以看到把keepalived进程kill之后,ip a中没有了虚拟节点。

再看备库节点:

在备库节点中出现了虚拟节点。

我们再来连接设定的虚拟节点:

可以看到,此时连接到的是备库

当主库宕机时,keepalived自动的连接到了备用库,验证结果为通过。

猜你喜欢

转载自blog.csdn.net/a281246240/article/details/83414294