centos7使用keepalived和mysql配置mysql主主自动切换

1.keepalived安装

参考centos7下keepalived1.4.0安装启动卸载章节:https://www.jianshu.com/p/f987f7e449ab

2.mysql主主配置

参考centos7下mysql5.7主主复制章节:https://www.jianshu.com/p/ed10e4162c68

3.keepalived配置

VIP:192.168.133.142,centos7

IP1:192.168.133.140,centos7

IP2:192.168.133.141,centos7

其中IP1的keepalived配置(本人配置文件在/etc/keepalived/keepalived.conf中)内容如下:

! Configuration File for keepalived

global_defs {

  router_id mysql-1

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.133.142//VIP地址

    }

}

virtual_server 192.168.133.142 3306 {

    delay_loop 6

    lb_algo rr

    lb_kind NAT

    persistence_timeout 50

    protocol TCP

    real_server 192.168.133.140 3306 {

        weight 3

        notify_down /etc/keepalived/bin/mysql.sh  //这个配置在keepalived1.4.0中好像有点问题,后续会说

        TCP_CHECK {

                 connect_timeout 3

                 retry 3

                 delay_before_retry 3

                 connect_port 3306

        }

    }

}

IP2的keepalived配置内容如下:

! Configuration File for keepalived

global_defs {

  router_id mysql-2

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 50

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.133.142//VIP地址

    }

}

virtual_server 192.168.133.142 3306 {

    delay_loop 6

    lb_algo rr

    lb_kind NAT

    persistence_timeout 50

    protocol TCP

    real_server 192.168.133.141 3306 {

        weight 3

        notify_down /etc/keepalived/bin/mysql.sh

        TCP_CHECK {

                      connect_timeout 3

                      retry 3

                      delay_before_retry 3

                      connect_port 3306

        }

    }

}

上述配置配好后,重启keepalived:service keepalived restart

(4)验证

本人的VIP地址所属服务器是centos7,每次也需要开启这个服务器才能够使用这个IP,好像也有其他方式不需要开启这个服务器,具体就没去了解了。

开启后首先在宿主机win7下使用navicate分别使用VIP、IP1、IP2连接数据库,如果连接不同请考虑是否是网络或者防火墙问题。

连接成功后,可以看到VIP默认是在IP1上,这时停止IP1上的mysql服务:service mysqld stop。

网上说停止后keepalived本应该能通过notify_down监测到mysql停止事件,执行对应notify_dowm设置的mysql.sh脚本,停止keepalived运行,只有停止IP1上的keepalived运行,VIP才能自动切换到IP2上。(也有说是当real server宕掉或启动时才会执行这里的脚本)

但本人这里并没有执行该脚本,可能因为keepalived的版本原因,本人是直接通过命令:service keepalived stop方式停止的,停止后,在win7的navicate上重新用VIP地址连接,连接成功说明已经切换到IP2上了。

附注:

mysql.sh内容

#!/bin/bash

pkill keepalived

/sbin/ifdown eth0 && /sbin/ifup eth0

即杀死keepalived线程,然后重新启动网络。但是本人使用时,当mysql服务停止,并未执行该脚本。这个最新版本的keepalived里面有些属性有点变动,比如TCP_CHECK 里的retry关键字,在低版本是nb_get_retry。由于未找到新版本的配置属性说明,这里就没有太多深入去了解。

你可能感兴趣的:(centos7使用keepalived和mysql配置mysql主主自动切换)