使用 LVS+Keepalived 实现 MySQL 双主复制负载均衡高可用


准备工作:

主机名操作系统IP地址担任角色
master1CentOS7192.168.1.1MySQL-主
master2192.168.1.2MySQL-主
keep1192.168.1.3Keepalived-主,LVS
keep2192.168.1.4Keepalived-备,LVS

一、 部署 MySQL 双主复制

  • 注意:未安装 MySQL 数据库的可以通过:传送门 来进行安装。

1.配置时间同步

master1 上操作

[root@master1 ~]# yum -y install ntp
[root@master1 ~]# sed -i '/^server/s/^/#/g' /etc/ntp.conf 
[root@master1 ~]# cat <<END >> /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 8
END
[root@master1 ~]# systemctl restart ntpd
[root@master1 ~]# systemctl enable ntpd         							# 配置开机自启
[root@master1 ~]# netstat -anpu | grep ntp      							# 查看状态

在这里插入图片描述
master 2上操作

[root@master2 ~]# yum -y install ntpdate
[root@master2 ~]# /usr/sbin/ntpdate 192.168.1.1

在这里插入图片描述

2.配置双主复制

1)master1 上操作

[root@master1 ~]# cat <<END >> /etc/my.cnf
log-bin=mysql-master1
server-id=1
log_slave_updates=1
auto_increment_offset=1
auto_increment_increment=2
END
[root@master1 ~]# systemctl restart mysqld
[root@master1 ~]# mysql -uroot -p123456
mysql> grant replication slave on *.* to repl@'192.168.1.%' identified by '123456';
mysql> flush privileges;
mysql> exit

在这里插入图片描述

2)master2 上操作

[root@master2 ~]# cat <<END >> /etc/my.cnf
log-bin=mysql-master2
server-id=2
log_slave_updates=1
auto_increment_offset=1
auto_increment_increment=2
END
[root@master2 ~]# systemctl restart mysqld
[root@master2 ~]# mysql -uroot -p123456
mysql> grant replication slave on *.* to repl@'192.168.1.%' identified by '123456';
mysql> flush privileges;
mysql> exit

在这里插入图片描述

3)建立双主复制

master1 上操作

[root@master1 ~]# mysql -uroot -p123456
mysql> change master to
master_host='192.168.1.2',
master_user='repl',
master_password='123456';
mysql> start slave;
mysql> show slave status\G;

在这里插入图片描述

master2 上操作

[root@master2 ~]# mysql -uroot -p123456
mysql> change master to
master_host='192.168.1.1',
master_user='repl',
master_password='123456';
mysql> start slave;
mysql> show slave status\G;

在这里插入图片描述

二、部署 LVS+Keepalived 实现 MySQL 双主复制高可用

1.配置主调度器

[root@keep1 ~]# yum -y install keepalived ipvsadm
[root@keep1 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
   router_id 1
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.188
    }
}

virtual_server 192.168.1.188 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 192.168.1.1 3306 {
        weight 1
        TCP_CHECK {
            connect_port 3306
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.1.2 3306 {
        weight 1
        TCP_CHECK {
            connect_port 3306
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
[root@keep1 ~]# systemctl start keepalived
[root@keep2 ~]# ip a

在这里插入图片描述

2.配置备调度器

[root@keep2 ~]# yum -y install keepalived ipvsadm
[root@keep2 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
   router_id 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.188
    }
}

virtual_server 192.168.1.188 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 192.168.1.1 3306 {
        weight 1
        TCP_CHECK {
            connect_port 3306
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.1.2 3306 {
        weight 1
        TCP_CHECK {
            connect_port 3306
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
[root@keep2 ~]# systemctl start keepalived

查看 LVS 集群状态

[root@keep1 ~]# ipvsadm -ln

在这里插入图片描述

3.编写 LVS 启动脚本

在 master1 master2 上操作

[root@master1 ~]# vim /etc/init.d/realserver
#!/bin/bash
VIP=192.168.1.188
. /etc/rc.d/init.d/functions

case "$1" in
start)
    /sbin/ifconfig lo down
    /sbin/ifconfig lo up
    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
    /sbin/sysctl -p >/dev/null 2>&1
    /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 up
    /sbin/route add -host $VIP dev lo:0
    echo "LVS-DR real server starts successfully.\n"
    ;;
stop)
    /sbin/ifconfig lo:0 down
    /sbin/route del $VIP >/dev/null 2>&1
    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 "LVS-DR real server stopped.\n"
    ;;
status)
    isLoOn=`/sbin/ifconfig lo:0 | grep "$VIP"`
    isRoOn=`/bin/netstat -rn | grep "$VIP"`
    if [ "$isLoON" == "" -a "$isRoOn" == "" ]; then
        echo "LVS-DR real server has run yet."
    else
        echo "LVS-DR real server is running."
    fi
    exit 3
    ;;
*)
    echo "Usage: $0 {start|stop|status}"
    exit 1
esac
exit 0
[root@master1 ~]# chmod +x /etc/init.d/realserver
[root@master1 ~]# /etc/init.d/realserver start										# 启动脚本
[root@master1 ~]# echo "/etc/init.d/realserver" >> /etc/rc.d/rc.local				# 配置开启自启动
[root@master1 ~]# ifconfig lo:0

在这里插入图片描述

三、验证

在任意一台 master 添加一个测试用户

[root@master1 ~]# mysql -uroot -p123456
mysql> grant all on *.* to test@'%' identified by '123123';
mysql> flush privileges;

1.验证 LVS 负载均衡是否正常

[root@client ~]# yum -y install mariadb
[root@client ~]# mysql -utest -p123123 -h192.168.1.188 -e "show variables like 'server_id'"
[root@client ~]# mysql -utest -p123123 -h192.168.1.188 -e "show variables like 'server_id'"

在这里插入图片描述

2.验证 Keepalived 双机热备是否正常

  • 关闭 LVS 主调度器,查看客户机是否能够正常访问数据库。

在这里插入图片描述
在这里插入图片描述

3.验证 MySQL 数据库可用性

[root@master1 ~]# systemctl stop mysqld

在这里插入图片描述

  • 16
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愿许浪尽天涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值