keepalived搭建详解

注:keepalived可以实现两台主主数据库,其中一台宕机后,可切换至另一台的功能。本章讲解keepalived搭建。数据库主主,查看其他章

安装。(两台机器均需要安装)

tar -zxvfkeepalived-1.2.24.tar.gz

cdkeepalived-1.2.24

./configure--sysconf=/etc --with-kernel-dir=/lib/modules/2.6.32-573.el6.x86_64/   (centos6需要指定内核,7不需要)

Make &&  make install

ln -s/usr/local/sbin/keepalived /sbin/      (创建软连接)

chkconfig --addkeepalived

chkconfig--level 35 keepalived on     (开机自启动)

yum -y installipvsadm            (需要安装lvs)

 

配置keepalived.conf文件。在目录/erc/keepalived/下(第一台数据库服务器)

! ConfigurationFile for keepalived

 global_defs {

        router_id mysql-1        (设置服务器识别标识,以便区分)

}

vrrp_scriptvs_mysql_82 {

        script"/etc/keepalived/bin/mysql.sh"            (脚本路径)

        interval 60

 }

 vrrp_instanceVI_82 {         

    state BACKUP           (这里都要设置BACKUP)

    interface eth0            (这里选择真实ip的网卡,通过ifconfig查看)

    virtual_router_id 51     (两台都相同)

    priority 100                   (用来选举master,第二台设为50)

    advert_int 1                   (发送vrrp包的时间间隔,多久进行一次master选举。可以说是健康检查)

    nopreempt                     (不抢占,即允许一个priority比较低的节点做为master)

    authentication {

        auth_type PASS    (认证区域)

        auth_pass 1111

    }

track_script {

    vs_mysql_82

    }

    virtual_ipaddress {                         (虚拟ip)       

         192.168.31.2

    }

}

 virtual_server192.168.31.2 3306 {              (虚拟ip)

    delay_loop 2                    (设置运行情况检测时间)

    lb_algo wrr                          (轮询算法)

    lb_kind DR                       (lvs负载均衡机制)

    persistence_timeout 60           (会话保持时间)

protocol TCP

 real_server 192.168.31.129 3306 {            (真实ip)

        weight 3            (权值)

        TCP_CHECK {

            connect_timeout 3         (连接超时时间)

            nb_get_retry 3                 (重连次数)

            delay_before_retry3          (重连间隔时间)

            connect_port 3306             (健康检查端口)

        }

    }

}

配置第二台数据库服务器的配置文件:(ip:192.168.31.130)

! ConfigurationFile for keepalived

 global_defs {

        router_id mysql-2

}

vrrp_scriptvs_mysql_82 {

        script"/etc/keepalived/bin/mysql.sh"

        interval 60

}

 

vrrp_instanceVI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 50

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    track_script {

    vs_mysql_82

}

    virtual_ipaddress {                   (VIP)

    192.168.31.2

    }

}

 virtual_server192.168.31.2 3306 {        (vip)   

    delay_loop 2

lb_algo wrr

    lb_kind DR

    persistence_timeout 60

    protocol TCP

 real_server 192.168.31.130 3306 {    (真实ip)

        weight 3

        TCP_CHECK {

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry3

            connect_port 3306

        }

    }

}

 

两台服务器配置好后,进入目录:/etc/keepalived/bin/(原先是没有bin目录,先创建一个),在bin目录下创建一个脚本,mysql.sh(两台服务器都需要)

#! /bin/bash

 echo "enter mysql_check.sh" >>/etc/keepalived/check_mysql.log

 LOG_FILE=/etc/keepalived/check_mysql.log

CHECK_TIME=3

#mysql is working MYSQL_OK is 1,mysql down MYSQL_OK is 0

MYSQL_OK=1

function check_mysql_helth () {

        mysql -uroot -p123 -e"show status;" &> /dev/null

        if [ $? = 0 ];then

                MYSQL_OK=1

        else

                MYSQL_OK=0

        fi

                return$MYSQL_OK

        }

while [ $CHECK_TIME -ne 0 ];do

        let "CHECK_TIME =1"

        check_mysql_helth

        if [ $MYSQL_OK = 1];then

                CHECK_TIME=0

              exit 0

        fi

        if [ $MYSQL_OK = 0];then

               /etc/init.d/keepalived stop

                echo `date--date=today +"%Y-%M-%d %H:%m:%S"` -[INFO] -mysql invaild. keepalivedstop. >> $LOG_FILE

        exit 1

        fi

        sleep 1

        done

 

之后保存退出,运行一下脚本,没有显示什么,echo $? 为0。

停止MYSQL服务器,再执行一边脚本,若出现keepalived被关闭,则OK

可以去/etc/keepalived/目录下查看脚本日志

可以ip addr 查看现在vip被哪台服务器使用

可以tail  -f /var/log/message 查看keepalived日志

可以使用第三台服务器登录数据库测试(需授权第三台数据库的登录权限)

需要设置一个重启mysql 和keepalived脚本

 在上面的keepalived.conf配置中,有些网站的脚本只是pkill keepalived一句话而已,然后配置文件中有一句

notify_down  脚本路径.

一开始我也是这种方法,但一直失败。

改用这种即可。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值