使用KeepAlived搭建MySQL高可用环境

使用KeepAlived搭建MySQL高可用环境

使用KeepAlived搭建MySQL的高可用环境。
 首先搭建MySQL的主从复制
 在Master开启binlog,创建复制帐号,
 然后在Slave输入命令
 

change master to
master_host='192.168.1.70',
master_port=3306,
master_user='xx',
master_password='xx';
 然后使用start slave开启复制。
 
然后编译安装KeepAlived
 进入keepalived-1.2.12目录
 然后使用
 ./configure
 make && make install
 
然后在Master服务器编辑KeepAlived的配置文件
 vim /etc/keepalived/keepalived.conf
 

! Configuration File for keepalived


global_defs {
 
    router_id HA_MySQL
}


vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.199
    }
}


virtual_server 192.168.1.199 3306 {
    delay_loop 2
    lb_algo wrr
    lb_kind DR
    persistence_timeout 60
    protocol TCP
    real_server 192.168.1.70 3306 {
        weight 3
        notify_down /root/shutdown.sh
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        } 
    }
}
 然后编辑Slave的配置文件
 vim /etc/keepalived/keepalived.conf
 
! Configuration File for keepalived
global_defs {
    router_id HA_MySQL
 }


vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.199
    }
 }


virtual_server 192.168.1.199 3306 {
    delay_loop 2
    lb_algo wrr
    lb_kind DR
    persistence_timeout 60
    protocol TCP
    real_server 192.168.1.80 3306 {
        weight 3
        notify_down /root/shutdown.sh
        TCP_CHECK {
            connect_timeout 10
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }
 }
 其中
 priority                      表示优先级
 virtual_ipaddress      虚拟的IP地址(VIP)
 delay_loop                每个2秒检查一次real_server状态
 notify_down              检测到服务down后执行的脚本
connect_timeout      连接超时时间
 nb_get_retry            重连次数
 delay_before_retry  重连间隔时间
 connect_port            健康检查端口
 
shutdown.sh 可以考虑加入邮件告警的功能。
 

#!/bin/bash
pkill keepalived
 
在两个服务器上启动MySQL和KeepAlived服务
 service mysql start
 service keepalived start
 
Master的server_id为1
 Slave的server_id为2
 
然后 连接VIP的MySQL,可以看到已经连接到了Master服务器(server_id为1)

使用KeepAlived搭建MySQL高可用环境

如果kill掉Master的MySQL,KeepAlived会自动转移到Slave
 
在Master服务器上执行
 killall mysqld
 
然后再次查看server_id,
 短暂的失去连接之后,再次连接上VIP,server_id已经变为2,说明VIP已经指向了Slave
 

使用KeepAlived搭建MySQL高可用环境

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e29949e44f44451ca0459dd0c998e712.html