mysql高可用探究(二)Lvs+Keepalived+Mysql单点写入主主同步高可用方案

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS Agent(兼容OpenClaw),2核4GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:

 http://lansgg.blog.51cto.com/5675165/1180305顺便参照这个博主

 Lvs+Keepalived+Mysql单点写入主主同步高可用方案

 

1.1  方案简介

Lvs+keepalived作为目前比较流行的高可用解决方案,lvs提供负载均衡,keepalived作为故障转移,提高系统的可用性。但是一般的mysql高可用为了实现mysql数据的一致性,一般都是采用单点写入,本方案采用keepalived中的sorry_server来实现写入数据库为单点的需求。本方案实现的功能是当网络有问题、mysql有问题、服务器宕机、keepalived服务停止后,服务器能自动跳转到备用机,当主服务器服务启动起来后会自动切换回来。

1.2  方案架构图

1.3  方案优缺点

优点:

ü  安装配置简单,实现方便,高可用效率好,可以根据服务与系统的可用性多方面进行切换。

ü  可以将写VIP和读VIP分别进行设置,为读写分离做准备。

ü  扩展不是很方便。

ü  可以在后面添加多个从服务器,并做到负载均衡。

缺点:

ü  在启动或者恢复后会立即替换掉定义的sorry_server,因此如果要实现指定条件替换或者不替换需要通过其他方式实现,比如:临时更改mysql的端口等。

ü  切换需要1s左右的时间。

1.4  方案实战

1.4.1 适用场景

这个方案适用于只有两台数据库服务器并且还没有实现数据库的读写分离的情况,读和写都配置VIP。这个方案能够便于单台数据库的管理维护以及切换工作。比如进行大表的表结构更改、数据库的升级等都是非常方便的。

1.4.2 实战环境介绍

服务器名

IP

VIP

系统

Mysql

Master

10.1.1.113

10.1.1.176

Centos 5.5 64bit

5.1.63

Backup

10.1.1.75

10.1.1.176

Centos 5.5 64bit

5.1.63

 

1.4.3 Mysql的安装和配置

Mysql的安装和配置相对来讲非常简单,这里就不做介绍,有兴趣的朋友可以查看我博客中关于mysql 5.1.63版本自动安装的文章http://blog.chinaunix.net/uid-20639775-id-3168737.html

1.4.4 Mysql的主主同步配置

Mysql的主主同步这里也不做介绍了,有兴趣的话可以看一下我博文中关于mysql主从同步管理的介绍,主主同步和主从同步差不多,只是互为主从而已,链接如下:

http://blog.chinaunix.net/uid-20639775-id-3254611.html

1.4.5 Lvs的安装

masterbackup服务器都进行安装:

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz

ln -s /usr/src/kernels/2.6.18-164.el5-i686/ /usr/src/linux

tar zxvf ipvsadm-1.24.tar.gz

cd ipvsadm-1.24

make && make install

1.4.6 Keepalived的安装

masterbackup服务器都进行安装:

wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz
tar zxvf keepalived-1.1.19.tar.gz
cd keepalived-1.1.19
./configure --prefix=/usr/local/keepalived
make 
make install
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived

1.4.7 Keepalived的配置

1.4.7.1   Masterkeepalived的配置

Masterbackup不一样的地方已经标记为红色

vim /etc/keepalived/keepalived.conf

global_defs {

 

notification_email {

               zhangxy@test.com

        }

        notification_email_from jiankong@test.com

        smtp_server mail.test.com

        smtp_connect_timeout 30

        router_id LVS1

}

 

vrrp_sync_group test {

group {

        loadbalance

}

}

 

vrrp_instance loadbalance {

        state MASTER

        interface eth0

        lvs_sync_daemon_inteface eth0

        virtual_router_id 51

        priority 180

        advert_int 1

 

authentication {

        auth_type PASS

        auth_pass 1111

}

 

virtual_ipaddress {

        10.1.1.176 dev eth0 label eth0:1

}

}

 

virtual_server 10.1.1.176 3306 {

        delay_loop 6

        lb_algo rr

        lb_kind DR

        persistence_timeout 20

        protocol TCP

        sorry_server 10.1.1.75 3306

        real_server 10.1.1.113 3306 {

        weight 3

        TCP_CHECK {

        connect_timeout 3

        nb_get_retry 3

        delay_before_retry 3

        connect_port 3306

}

}

}

1.4.7.2   Backupkeepalived的配置

Masterbackup不一样的地方已经标记为红色

vim /etc/keepalived/keepalived.conf

global_defs {

 

notification_email {

               zhangxy@test.com

        }

        notification_email_from jiankong@test.com

        smtp_server mail.test.com

        smtp_connect_timeout 30

        router_id LVS1

}

 

vrrp_sync_group test {

group {

        loadbalance

}

}

 

vrrp_instance loadbalance {

        state BACKUP

        interface eth0

        lvs_sync_daemon_inteface eth0

        virtual_router_id 51

        priority 150

        advert_int 1

 

authentication {

        auth_type PASS

        auth_pass 1111

}

 

virtual_ipaddress {

        10.1.1.176 dev eth0 label eth0:1

}

}

 

virtual_server 10.1.1.176 3306 {

        delay_loop 6

        lb_algo rr

        lb_kind DR

        persistence_timeout 20

        protocol TCP

        sorry_server 10.1.1.75 3306

        real_server 10.1.1.113 3306 {

        weight 3

        TCP_CHECK {

        connect_timeout 3

        nb_get_retry 3

        delay_before_retry 3

        connect_port 3306

}

}

}

1.4.8 Masterbackuprealserver的配置

对于realserver的配置masterbackup是一致的,脚本内容如下:

vim /etc/rc.d/init.d/realserver.sh

#!/bin/bash

# description: Config realserver lo and apply noarp

 

SNS_VIP=10.1.1.176

/etc/rc.d/init.d/functions

case "$1" in

 

start)

       ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP

       /sbin/route add -host $SNS_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

       sysctl -p >/dev/null 2>&1

       echo "RealServer Start OK"

       ;;

 

stop)

       ifconfig lo:0 down

       route del $SNS_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

1.4.9 Masterbackup的启动

启动masterbackupmysql以后,再在masterbackup执行如下命令启动keepalivedrealserver脚本:

/etc/rc.d/init.d/realserver.sh start

/etc/rc.d/init.d/keepalived start

并将keepalivedrealserver的启动脚本加入到rc.local自启动中:

echo “/etc/rc.d/init.d/realserver.sh start” >> /etc/rc.local

echo “/etc/rc.d/init.d/keepalived start” >> /etc/rc.local

1.4.10     高可用方案测试

方案搭建好以后就要进行全方位的可靠性测试了,看看是否达到了我们的预期效果,大致测试步骤如下:

ü  停掉master上的mysql,看看能否自动切换到sorry_server,使用如下命令查看:ipvsadm –ln

ü  停掉master上的keepalived,看写VIP是否会迁移到backup

ü  启动master上的mysql,看是否能切换回master

ü  启动master上的keepalived,看VIP是否会迁移回master上。

ü  重启master的系统,看看切换过程是否OK

出自http://blog.chinaunix.net/uid-20639775-id-3337448.html

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
8月前
|
运维 监控 关系型数据库
MySQL高可用方案:MHA与Galera Cluster对比
本文深入对比了MySQL高可用方案MHA与Galera Cluster的架构原理及适用场景。MHA适用于读写分离、集中写入的场景,具备高效写性能与简单运维优势;而Galera Cluster提供强一致性与多主写入能力,适合对数据一致性要求严格的业务。通过架构对比、性能分析及运维复杂度评估,帮助读者根据自身业务需求选择最合适的高可用方案。
|
8月前
|
SQL 监控 关系型数据库
MySQL主从复制:构建高可用架构
本文深入解析MySQL主从复制原理与实战配置,涵盖复制架构、监控管理、高可用设计及性能优化,助你构建企业级数据库高可用方案。
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
1272 3
Mysql高可用架构方案
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
465 11
|
监控 关系型数据库 MySQL
云数据库:从零到一,构建高可用MySQL集群
在互联网时代,数据成为企业核心资产,传统单机数据库难以满足高并发、高可用需求。云数据库通过弹性扩展、分布式架构等优势解决了这些问题,但也面临数据安全和性能优化挑战。本文介绍了如何从零开始构建高可用MySQL集群,涵盖选择云服务提供商、创建实例、配置高可用架构、数据备份恢复及性能优化等内容,并通过电商平台案例展示了具体应用。
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
2070 4
|
8月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
528 158
|
8月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
8月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1390 152
|
8月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
1009 156

推荐镜像

更多