设为首页 收藏本站
查看: 1228|回复: 0

[经验分享] Keepalived+mysql实现高可用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-12 08:55:29 | 显示全部楼层 |阅读模式
项目环境:
VIP 192.168.122.100
mysql1 192.168.122.10
mysql2 192.168.122.20


一、mysql 主主同步        (不使用共享存储,数据保存本地存储)1. mysql1         192.168.122.10:
    [iyunv@mysql1 ~]# vim /etc/my.cnf
    log-bin=mysql-bin
    server-id  = 4
    [iyunv@mysql1 ~]# service mysqld start
    [iyunv@mysql1 ~]# mysql
    mysql> reset master;
    mysql> grant replication slave, replication client on *.*
        -> to admin@'%' identified by '123';
    mysql> flush privileges;
    mysql> change master to
        -> master_host='192.168.122.20',
        -> master_user='admin',
        -> master_password='123',
        -> master_log_file='mysql-bin.000001',         //根据个人实际修改
        -> master_log_pos=0;                           //根据个人
    Query OK, 0 rows affected (0.02 sec)
    mysql> show slave status\G
2. mysql2                192.168.122.20:
    [iyunv@mysql2 ~]# vim /etc/my.cnf
    log-bin=mysql-bin
    server-id  = 251
    [iyunv@mysql2 ~]# service mysqld start
    [iyunv@mysql2 ~]# mysql
    mysql> reset master;
    mysql> grant replication slave, replication client on *.*
        -> to admin@'%' identified by '123';
    mysql> flush privileges;
    mysql> change master to
        -> master_host='192.168.122.10',
        -> master_user='admin',
        -> master_password='123',
        -> master_log_file='mysql-bin.000001',
        -> master_log_pos=0;
    Query OK, 0 rows affected (0.02 sec)
    mysql> show slave status\G
二、安装keepalived
[iyunv@root ~]# yum -y install ipvsadm kernel-headers kernel-devel openssl-devel popt-devel
方法一:
源码安装keepalived
[iyunv@root ~]# wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
[iyunv@root ~]# tar zxvf keepalived-1.2.2.tar.gz
[iyunv@root ~]# cd keepalived-1.2.2
[iyunv@root ~]# ./configure --prefix=/                //安装到根下,防止目录太深
[iyunv@root ~]# make
[iyunv@root ~]# make install
方法二:
[iyunv@root ~]# yum -y install keepalived
三、keepalived 主备配置文件
192.168.122.10 Master配置
[iyunv@root ~]# vim /etc/keepalived/keepalived.conf
=====================================================================
! Configuration File for keepalived

global_defs {
   router_id mysql1
}

vrrp_script check_run {
   script "/root/keepalived_check_mysql.sh"
   interval 5
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 88
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass root
    }

    track_script {
        check_run
    }

    virtual_ipaddress {
        192.168.122.100
    }
}

192.168.122.20 Slave配置
[iyunv@root ~]# vim /etc/keepalived/keepalived.conf
=====================================================================
! Configuration File for keepalived

global_defs {
   router_id mysql2
}

vrrp_script check_run {
   script "/root/keepalived_check_mysql.sh"
   interval 5
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 88
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass root
    }

    track_script {
        check_run
    }

    virtual_ipaddress {
        192.168.122.100
    }
}

1. 注意空格
2. 日志查看脚本是否被执行

[iyunv@xen2 ~]# tail -f /var/log/messages
Jun 19 15:20:19 xen1 Keepalived_vrrp[6341]: Using LinkWatch kernel netlink reflector...
Jun 19 15:20:19 xen1 Keepalived_vrrp[6341]: VRRP sockpool: [ifindex(2), proto(112), fd(11,12)]
Jun 19 15:20:19 xen1 Keepalived_vrrp[6341]: VRRP_Script(check_run) succeeded

四、mysql状态检测脚本/root/bin/keepalived_check_mysql.sh
[iyunv@root ~]#  vim  /root/keepalived_check_mysql.sh
#!/bin/bash
MYSQL=/usr/local/mysql/bin/mysql
MYSQL_HOST=localhost
MYSQL_USER=root                      //连接mysql的用户名
MYSQL_PASSWORD=root                  //连接mysql的密码
CHECK_TIME=3

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

check_mysql_helth (){
    $MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p${MYSQL_PASSWORD} -e "show status;" &>/dev/null
    if [ $? -eq 0 ] ;then
            MYSQL_OK=1
    else
            MYSQL_OK=0
    fi
    return $MYSQL_OK
}

while [ $CHECK_TIME -ne 0 ]
do
            check_mysql_helth
        if [ $MYSQL_OK -eq 1 ] ; then
                    exit 0
        fi

        let CHECK_TIME--
        sleep 1
done
/etc/init.d/keepalived stop                                       
exit 1

[iyunv@root ~]# chmod 755 /root/keepalived_check_mysql.sh
两边均启动keepalived
[iyunv@root ~]# /etc/init.d/keepalived start
[iyunv@root ~]# /etc/init.d/keepalived start
[iyunv@root ~]# chkconfig --add keepalived
[iyunv@root ~]# chkconfig keepalived on

五、测试及诊断
keepalived之间使用vrrp组播方式通信使用的IP地址是224.0.0.18

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-97702-1-1.html 上篇帖子: keepalive 原理 下篇帖子: keepalive+LVS-DR配置 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表