当前位置:首页 > MySQL
MySQL 结合 lvs、keepalived 实现高可用
来源:靑龍一笑的博客  作者:靑龍一笑  发布时间:2018-03-05 14:23:12  点击量:1032  评论:0

    我准备三台虚拟机做测试,其中,调度器 IP 为:192.168.233.131,MySQL 的两个 SQL 节点:192.168.233.132、192.168.233.133,打算使用的虚拟 IP 为:192.168.233.201。
    首先,在两个 SQL 节点上配置虚拟 IP。为了操作方便,这里配置成系统服务,服务脚本代码如下:

[root@dbSlave01 ~]# vi /etc/rc.d/init.d/realserver

    内容如下:

#!/bin/sh
# chkconfig: 35 58 89
# description: realServer
VIP=192.168.233.201
case "$1" in
start)
    ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
    route add -host $VIP dev lo:0
    echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
    echo "RealServer Start OK"
    ;;
stop)
    ifconfig lo:0 down
    route del $VIP >/dev/null 2>&1
    echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
    echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
    echo "RealServer Stoped"
    ;;
*)
    echo "Usage: $0 {start|stop}"
    exit 1
esac
exit 0
[root@dbSlave01 ~]# chmod +x /etc/rc.d/init.d/realserver
[root@dbSlave01 ~]# chkconfig --level 35 realserver on

    接着,在调度器 192.168.233.131 上安装 ipvsadm 和 keepalived。
    在安装 ipvsadm 之前,需要先安装 libnl-devel、popt-devel、popt-static 这三个软件包,为了简单起见,这里直接使用 yum 安装:

[root@dbMaster ~]# yum install libnl-devel
[root@dbMaster ~]# yum install popt-devel
[root@dbMaster ~]# yum install popt-static

    安装 ipvsadm:

[root@dbMaster ~]# tar xvf ipvsadm-1.26.tar.gz 
[root@dbMaster ~]# cd ipvsadm-1.26
[root@dbMaster ipvsadm-1.26]# make
[root@dbMaster ipvsadm-1.26]# make install
[root@dbMaster ipvsadm-1.26]# cd ..

    在安装 keepalived 之前,需要先安装 openssl-devel、libnfnetlink-devel 这两个软件包:

[root@dbMaster ~]# yum install openssl-devel
[root@dbMaster ~]# yum install libnfnetlink-devel

    安装 keepalived:

[root@dbMaster ~]# tar xvf keepalived-1.4.2.tar.gz 
[root@dbMaster ~]# cd keepalived-1.4.2
[root@dbMaster keepalived-1.4.2]# ./configure --prefix=/usr/local/keepalived
[root@dbMaster keepalived-1.4.2]# make
[root@dbMaster keepalived-1.4.2]# make install
[root@dbMaster keepalived-1.4.2]# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
[root@dbMaster keepalived-1.4.2]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@dbMaster keepalived-1.4.2]# mkdir -pv /etc/keepalived

    创建 keepalived 配置文件:

[root@dbMaster keepalived-1.4.2]# vi /etc/keepalived/keepalived.conf 

    内容如下:

global_defs {
    router_id HaMySQL
}  
vrrp_sync_group VGM {
    group {
        VI_MYSQL
    }
}
vrrp_instance VI_MYSQL {
    state MASTER
    interface eth0
    virtual_router_id 100
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.233.201/24  eth0 label eth0:1
    }
}

virtual_server 192.168.233.201 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    protocol TCP

    real_server 192.168.233.132 3306 {
        weight 3
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }
    real_server 192.168.233.133 3306 {
        weight 3
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 3306
        }
    }
}

    配置 keepalived 系统服务:

[root@dbMaster keepalived-1.4.2]# vi /etc/rc.d/init.d/keepalived 

    内容如下:

#!/bin/bash
# chkconfig: 35 86 14
# description: keepalived Server

. /etc/init.d/functions

exec="/usr/sbin/keepalived"
prog="keepalived"
config="/etc/keepalived/keepalived.conf"

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/keepalived

start() {
    [ -x $exec ] || exit 5
    [ -e $config ] || exit 6
    echo -n $"Starting $prog: "
    daemon $exec $KEEPALIVED_OPTIONS
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
stop() {
    echo -n $"Stopping $prog: "
    killproc $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
restart() {
    stop
    start
}
rh_status() {
    status $prog
}
rh_status_q() {
    rh_status &>/dev/null
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart)
        $1
        ;;
    status)
        rh_status
        ;;
    *)
    echo $"Usage: $0 {start|stop|status|restart}"
    exit 2
esac
exit $?
[root@dbMaster keepalived-1.4.2]# chmod +x /etc/rc.d/init.d/keepalived
[root@dbMaster keepalived-1.4.2]# chkconfig --level 35 keepalived on

    开启两个 SQL 节点上的虚拟 IP:

[root@dbSlave01 ~]# service realserver start
[root@dbSlave02 ~]# service realserver start

    启动调度器:

[root@dbMaster ~]# service keepalived start

    在调度器上查看相关信息:

[root@dbMaster ~]# ipvsadm

    或者:

[root@dbMaster ~]# tail -f /var/log/messages
版权所有 © 2005-2023 靑龍一笑的博客  Powered by C.S.Ricen
Copyright © 2005-2023 by www.ricensoftwares.com.cn  All Rights Reserved.

欢迎光临本站,这里是靑龍一笑的博客。

因资金匮乏,本站已迁到国外的免费空间,可能导致本站的访问速度较慢,由此给您带来的不便,敬请谅解。

您可以通过下方的“支持本站建设”链接,给本站提供资金支持。

Free Web Hosting