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

MYSQL主从同步+keepalived高可用配置

小左的运维之路 2021-07-12
837

1. 环境

master(centos7.4    192.168.253.226  mysql master)  

slave  (centos7.4    192.168.253.214  mysql slave )

keepalived 1.4.2

下载链接:wget http://www.keepalived.org/software/keepalived-1.4.2.tar.gz

2. keepalived原理(摘自搜索)

Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:NginxHaproxyMySQL等)的高可用解决方案软件。

Keepalived采用是模块化设计,不同模块实现不同的功能;

keepalived主要有三个模块,分别是corecheckvrrp

core:是keepalived的核心,负责主进程的启动和维护,全局配置文件的加载解析等

check:负责healthchecker(健康检查),包括了各种健康检查方式,以及对应的配置的解析包括LVS的配置解析;可基于脚本检查对IPVS后端服务器健康状况进行检查。

vrrpVRRPD子进程,VRRPD子进程就是来实现VRRP协议的

keepalived配置文件:

Keepalived配置文件为:keepalived.conf

主要有三个配置区域,分别是:全局配置(Global Configuration)VRRPD配置、LVS配置

全局配置又包括两个子配置: 全局定义(global definition) 静态IP地址/路由配置(static ipaddress/routes)

Keepalived服务VRRP的工作原理:

Keepalived高可用对之间是通过 VRRP进行通信的, VRRP是通过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主宕机的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。

Keepalived服务对之间,只有作为主的服务器会一直发送 VRRP广播包,告诉备它还活着,此时备不会抢占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快;

3. 安装keepalived

tar -zxf keepalived-1.4.2.tar.gz

cd keepalived-1.4.2

./configure  --prefix=/usr/local/keepalived  #--prefix是指定安装目录

如果安装过程中报如下错误,可以执行yum -y install openssl-devel解决:

make && make install

修改配置文件:

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

vim /etc/keepalived/keepalived.conf    #修改keepalived的配置文件

master上的配置文件:

10:57:47 root@master ~ → cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

    router_id master #标识信息,一个名字而已;

}

vrrp_script check {

    script "/usr/local/keepalived/script/check_mysql.sh"

    interval  10

}

vrrp_instance VI_1 {

    state MASTER    #角色是masterslave上的就是BACKUP

    interface ens33  #vip 绑定端口,这个可以用ifconfig查看

    virtual_router_id 50    #master backup在同一个虚拟路由里,id 号必须相同;

    priority 150            #优先级,谁的优先级高谁就是master ;

    advert_int 1            #心跳间隔时间

    authentication {

        auth_type PASS      #认证

        auth_pass 1111      #密码

}

    virtual_ipaddress {

        192.168.253.10            #虚拟ip

    }

}

slave上的配置文件:

[root@slave ~]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

    router_id slave

}

vrrp_script check {

    script "/usr/local/keepalived/script/check_mysql.sh"

    interval  10

}

vrrp_instance VI_1 {

    state BACKUP  #这个和master不一样

    interface ens33

    virtual_router_id 50

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

}

    virtual_ipaddress {

        192.168.253.10

    }

}

检测脚本都一样:

10:57:51 root@master ~ → cat "/usr/local/keepalived/script/check_mysql.sh"

#!/bin/bash

 

nginxpid=$(ps -C mysqld --no-header|wc -l)

if [ $nginxpid -eq 0 ];then

    systemctl start mysqld.service

    sleep 3

    nginxpid=$(ps -C mysqld --no-header|wc -l)

    if [ $nginxpid -eq 0 ];then

        systemctl stop keepalived

    fi

fi

 

keepalived加入开机自启动:

systemctl enable keepalived

启动keepalived

systemctl star keepalived

从其他地方ping 192.168.253.10,发现可以ping通说明keepalived可以起来。

4. 测试keepalived是否正常工作

目前masterslave上都安装MySQL5.7,并且做了主从同步。

masterdatabase

slave库中创建一个作为标识slave库的database,命名为slave_test,用以区别masterslave

mastersalve上配置能登录MySQL数据库的账号test,密码是‘Qw123456@#’:

在第三方服务器上使用mysql -h 192.168.253.10 -utest  -pQw123456@# 登录,成功后关掉master,然后发现MySQL连接会断开一会,过了一会后又恢复连接,这个时候就是keepalived生效,实现了故障自动转移。

 

5. keepalived是个比较简单的高可用方案,安装配置较为简单,合适新手学习使用。

文章转载自小左的运维之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论