暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

浅谈MySQL之keepalive+双主架构

原创 张sir 2020-09-04
2330

一、keepalive简介

keepalived是基于VRRP协议(虚拟冗余路由协议),该协议是为了解决静态路由器单点故障的网络失效问题而设计的一套主备协议。在MySQL高可用中两台互为主备的服务器运行keepalived,master会向backup节点发送广播信号,当backup节点接收不到master发送的VRRP包时,会认为master宕机,这时会根据VRRP的优先级来选举出一个backup充当master,这时该master就会持有VIP,从而保证了线上业务的正常运行。keepalived服务启动后由三个进程工作:watch dog、vrrp、Health-check,其中watch dog负责监控vrrp和Health-check进程,vrrp负责master的切换,Health-check则是检测服务器健康状态。
VRRP的优先级决定了由谁来做为新的master,用0~255表示,数字越小表示优先级越低,VRRP优先级取值范围时1到254,当为0时表示放弃持有VIP,为255时表示当前master优先级最高并持有VIP。

二、架构搭建

注意事项:
{1}要完善好切换脚本,切换机制要合理,避免切换失败现象发生
{2}从库配置尽量和主库一致,性能不要太差,防止发生切换后无法支撑业务
{3}该架构不能避免延迟问题,可以改变架构模式为PXC完成实时同步,可以实现基本无延迟
{4}keepalived无法解决脑裂问题
{5}两节点状态均需设置为backup状态且是nopreempt(非抢占模式),通过优先级决定谁为主库

2.1 实验部署

2.1.1 环境介绍

192.168.56.11-主A、192.168.56.12-主B、192.168.56.111-VIP

2.1.2 首先搭建MySQL的双主架构(主从均需执行如下操作)

create user 'bak'@'192168.56.%' identified by '123456';
grant replication slave on *.* to 'bak'@'192.168.56.%';
flush privileges;
change master to master_host='192.168.56.12',master_user='bak',master_password='123456',master_auto_position=1;
start slave;

2.1.3 安装keepalived软件包(主从服务器均需安装)

yum install -y keepalived
rpm -qa |grep keepalived

2.1.4 配置检测MySQL数据库的脚本(主从服务器均需安装)

vim /etc/keepalived/checkmysql.sh

#!/bin/bash
mysqlstr=/usr/local/mysql/bin/mysql
host=192.168.56.11
user=zs
password='123456'
port=3306
##MYSQL服务状态正常为1,否则为0
mysql_status=1
##检测MySQL的状态
$mysqlstr -h $host -u $user -p$password -P $port -e "show status;" >/dev/null 2>&1
if [ $? = 0 ] ;then
   echo "mysql_status=1"
   exit 0
else
/etc/init.d/keepalived stop
fi

chmod +x /etc/keepalived/checkmysql.sh

2.1.5 在两台服务器上修改keepalived配置文件

vi /etc/keepalived/keepalived.conf

##设置一个脚本来检测MySQL状态,脚本执行间隔设置为10s较为合理
vrrp_script vs_mysql_11 {
    script "/etc/keepalived/checkmysql.sh"
    interval 10
}
vrrp_instance VI_11 {  ##集群名称##
    state BACKUP  ##指定keepalived的角色,两台机器需设为backup角色
    nopreempt  ##两台机器均需设为非抢占模式
    interface eth0  ##VIP绑定网卡位置为eth0
    virtual_router_id 100  ##vrid的值为100,两台机器必须一致
    priority 100  ##代表优先级,56.11优先级为100,56.12优先级为90
    advert_int 5  ##主备之间同步检查的时间间隔为5s
    authentication {
        auth_type PASS
        auth_pass 123456  ##验证密码,主备需保持一致
    }
    track_script {
        vs_mysql_11  ##执行监控的服务
    }
    virtual_ipaddress {
        192.168.56.111  ##虚拟IP地址
    }
}

注意:两台服务器的keepalived配置中,state需都为backup且是非抢占模式nopreempt。virtual_router_id 100和虚拟IP要一致。vrrp_script和vrrp_instance可改变

2.1.6 启动keepalived

/etc/init.d/keepalived start
ps -ef|grep keepalived

查看启动日志文件:cat /var/log/messages

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论