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

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

使用 LVS+Keepalived 实现 MySQL双主复制高可用



一、 部署 MySQL 双主复制


1.配置时间同步

2.配置双主复制

1)master1 上操作

2)master2 上操作

3)建立双主复制


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


1.配置主调度器

2.配置备调度器

3.查看 LVS 集群状态

4.编写 LVS 启动脚本


三、验证


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

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

3.验证 MySQL 数据库可用性


准备工作:


image.png


一、 部署 MySQL 双主复制



  • 注意:未部署 MySQL 数据库需看:CentOS7 安装 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          #重启ntpd
[root@master1 ~]# systemctl enable ntpd           #设置开机自启
[root@master1 ~]# netstat -anpu | grep ntp        #查看状态


image.png


master 2上操作


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


image.png


2.配置双主复制


1)master1 上操作


[root@master1 ~]# cat <<END >> /etc/my.cnf
log-bin=mysql-master1
server-id=1
log_slave_update=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


image.png


2)master2 上操作


[root@master2 ~]# cat <<END >> /etc/my.cnf
log-bin=mysql-master2
server-id=2
log_slave_update=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


image.png


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;


image.png


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;


image.png


二、部署 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


image.png


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


3.查看 LVS 集群状态


[root@keep1 ~]# ipvsadm -ln


image.png


4.编写 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


image.png


三、验证



在任意一台 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'"


image.png


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


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


image.png

image.png


3.验证 MySQL 数据库可用性


[root@master1 ~]# systemctl stop mysqld


image.png


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
537 11
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
关系型数据库 MySQL 数据库
RDS用多了,你还知道MySQL主从复制底层原理和实现方案吗?
随着数据量增长和业务扩展,单个数据库难以满足需求,需调整为集群模式以实现负载均衡和读写分离。MySQL主从复制是常见的高可用架构,通过binlog日志同步数据,确保主从数据一致性。本文详细介绍MySQL主从复制原理及配置步骤,包括一主二从集群的搭建过程,帮助读者实现稳定可靠的数据库高可用架构。
1022 9
RDS用多了,你还知道MySQL主从复制底层原理和实现方案吗?
|
SQL 存储 关系型数据库
MySQL主从复制 —— 作用、原理、数据一致性,异步复制、半同步复制、组复制
MySQL主从复制 作用、原理—主库线程、I/O线程、SQL线程;主从同步要求,主从延迟原因及解决方案;数据一致性,异步复制、半同步复制、组复制
2036 11
|
存储 负载均衡 NoSQL
搭建高可用及负载均衡的Redis
通过本文介绍的高可用及负载均衡Redis架构,可以有效提升Redis服务的可靠性和性能。主从复制、哨兵模式、Redis集群以及负载均衡技术的结合,使得Redis系统在应对高并发和数据一致性方面表现出色。这些配置和技术不仅适用于小型应用,也能够支持大规模企业级应用的需求。希望本文能够为您的Redis部署提供实用指导和参考。
1037 9
|
存储 关系型数据库 MySQL
MySQL主从复制原理和使用
本文介绍了MySQL主从复制的基本概念、原理及其实现方法,详细讲解了一主两从的架构设计,以及三种常见的复制模式(全同步、异步、半同步)的特点与适用场景。此外,文章还提供了Spring Boot环境下配置主从复制的具体代码示例,包括数据源配置、上下文切换、路由实现及切面编程等内容,帮助读者理解如何在实际项目中实现数据库的读写分离。
1824 1
MySQL主从复制原理和使用
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
2242 4
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
571 8
LVS+Keepalived 负载均衡
|
SQL 关系型数据库 MySQL
Mysql中搭建主从复制原理和配置
主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。
612 0
Mysql中搭建主从复制原理和配置

推荐镜像

更多