`
jackyhongvip
  • 浏览: 159216 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Lvs+Keepalived+Mysql单点写入读负载均衡主主同步高可用方案

 
阅读更多

1.1方案简介

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

1.2方案架构图

1.3方案优缺点

优点:

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

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

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

缺点:

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

ü安装配置比单写入稍微复杂,需要另外一个VIP。管理比单写入复杂。

ü主切换后从需要手工切换。

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

 

1.4适用场景

这个方案适用于只有两台数据库服务器(后端有多个从服务器也是可以的,只是要手工切换从服务器比较麻烦,后面会介绍的MMM能将从服务器自动切换)并且还能实现数据库的读写分离的情况,这样backup机器也能用起来,提高系统资源的利用率,减少master端的负载。应用中读数据库配置读VIP,写数据库配置写VIP。这个方案也能够很方便的进行单台数据库的管理维护以及切换工作。比如进行大表的表结构更改、数据库的升级等都是非常方便的。

1.5方案实战

1.5.1实战环境介绍

服务器名

IP

VIP

系统

Mysql

Master

10.1.1.113

10.1.1.176
10.1.1.177

Centos 5.5 64bit

5.1.63

Backup

10.1.1.75

10.1.1.176
10.1.1.177

Centos 5.5 64bit

5.1.63

 

1.5.2Mysql的安装和配置

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

1.5.3Mysql的主主同步配置

Mysql的主主同步这里也不做介绍了,有兴趣的话可以看一下我博文中关于mysql主从同步管理的介绍,主主同步和主从同步差不多,只是互为主从而已,链接如下:http://blog.chinaunix.net/uid-20639775-id-3254611.html

1.5.4Lvs的安装

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.5.5Keepalived的安装

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.5.6Keepalived的配置

1.5.6.1Masterkeepalived的配置

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

10.1.1.177 dev eth0 label eth0:2

}

}

 

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

}

}

}

 

virtual_server 10.1.1.177 3306 {

delay_loop 6

lb_algo rr

lb_kind DR

#persistence_timeout 20

protocol TCP

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

}

}

real_server 10.1.1.75 3306 {

weight 3

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 3306

}

}

}

1.5.6.2Backupkeepalived的配置

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

10.1.1.177 dev eth0 label eth0:2

}

}

 

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

}

}

}

 

virtual_server 10.1.1.177 3306 {

delay_loop 6

lb_algo rr

lb_kind DR

persistence_timeout 20

protocol TCP

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

}

}

real_server 10.1.1.75 3306 {

weight 3

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 3306

}

}

}

1.5.7Masterbackuprealserver的配置

对于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

SNS_VIP2=10.1.1.177

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

case "$1" in

 

start)

ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP

ifconfig lo:1 $SNS_VIP2 netmask 255.255.255.255 broadcast $SNS_VIP2

/sbin/route add -host $SNS_VIP dev lo:0

/sbin/route add -host $SNS_VIP2 dev lo: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

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

echo "RealServer Start OK"

;;

 

stop)

ifconfig lo:0 down

ifconfig lo:1 down

route del $SNS_VIP >/dev/null 2>&1

route del $SNS_VIP2 >/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.5.8Masterbackup的启动

启动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.5.9高可用方案测试

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

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

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

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

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

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

分享到:
评论

相关推荐

    LVS+KEEPALIVED+MYSQL 单点写入读负载均衡主主同步高可用方案安装教程

    首先,我们需要明确方案的总体目标,即构建一个既能实现单点写入又能实现读负载均衡的MYSQL数据库高可用环境。这里的“单点写入”意味着所有的写操作都指向同一个数据库服务器,而“读负载均衡”则表示读操作可以被...

    LVS+Keepalived+MySQL半同步主主复制高可用方案.docx

    【LVS+Keepalived+MySQL半同步主主复制高可用方案】 1. 方案概述 LVS(Linux Virtual Server)结合Keepalived构建的高可用解决方案,通常用于实现负载均衡和故障转移,以提高系统的整体可用性。在这个方案中,MySQL...

    MySQL高可用-多种方案

    本文将探究多种 MySQL 高可用方案,包括 LVS+Keepalived+Mysql 单点写入主主同步高可用方案、LVS+Keepalived+Mysql 单点写入读负载均衡主主同步高可用方案等。 LVS+Keepalived+Mysql 单点写入主主同步高可用方案 ...

    MySQL高可用方案大全

    Lvs+Keepalived+MySQL 单点写入主主同步高可用方案 Lvs+Keepalived+MySQL 单点写入读负载均衡主主同步高可用方案 Heartbeat高可用MySQL主主同步方案 Heartbeat+DRBD+MySQL高可用方案 MMM高可用MySQL方案

    lvs+keepalived+mha+mysql架构最佳部署手册

    ### lvs+keepalived+mha+mysql高可用架构配置说明 #### 第一部分 MHA介绍 **MHA**(Master High Availability)作为一种成熟的MySQL高可用性解决方案,它由日本开发者Youshimaton创建,旨在为MySQL环境提供故障...

    MySQL高可用方案探究.pdf

    本篇将深入探讨一种基于LVS(Linux Virtual Server)+Keepalived+MySQL的单点写入主主同步高可用方案,以及其读负载均衡的扩展方案。 2.1 方案简介 该方案主要通过LVS实现负载均衡,Keepalived确保服务的高可用,而...

    Mysql数据库高可用性方案实践

    2. Lvs+Keepalived+Mysql单点写入读负载均衡主主同步高可用方案: - 与前一个方案类似,但是增加了读操作的负载均衡。 - 通过Lvs的调度,可以根据策略将读操作分散到两个数据库服务器。 - 该方案适合读操作远多于...

    lvs+keepalived+mha+mysql架构配置说明_V1.0.pdf

    本文将详细阐述一种基于LVS(Linux Virtual Server)、Keepalived、MHA(Master High Availability)和MySQL的高可用架构配置,旨在为IT专业人士提供一套稳定且高效的数据库集群解决方案。 **第一部分:MHA介绍** ...

    mysql主从复制+lvs与keepalived实现负载高可用

    MySQL主从复制是数据库高可用性的一种常见策略,它允许数据在多个服务器之间实时或近实时地同步。这种配置使得当主服务器发生故障时,从服务器可以接管服务,确保业务连续性。在这个场景中,主机A(192.168.5.171)...

    Atlas+keepalived+mysql(实现HA+主从同步).docx

    【MySQL HA+主从同步方案】通过Atlas、Keepalived及MySQL实现高可用性和数据同步 MySQL高可用性(HA)通常涉及多个方面,包括主从复制、负载均衡和故障切换。在这个方案中,我们使用了Atlas、Keepalived以及MySQL的...

    mysql主从复制+lvs与keepalived实现负载高可用.docx

    MySQL主从复制与LVS(Linux Virtual Server)和Keepalived结合使用,是构建高可用性和负载均衡数据库架构的一种常见方案。以下将详细介绍这个过程。 首先,MySQL的主从复制是通过binlog(二进制日志)实现的。主...

    keepalived实现MYSQL双活高可用

    而"keepalived"是一款开源工具,常用于构建高可用性(HA)解决方案,它可以监控系统服务,并在主服务器故障时自动将流量切换到备用服务器,从而实现零停机时间。本文将深入探讨如何使用keepalived来实现MySQL的双活...

    mysql基于keepalived的HA搭建.pdf

    ### MySQL基于Keepalived的HA搭建知识点 #### 1. MySQL双主架构 在MySQL的高可用性架构中,双主架构...通过上述步骤,我们可以搭建一个基于Keepalived的MySQL双主高可用环境,确保数据库的高可用性和数据的安全备份。

    云平台技术选型之四:MySQL高可用

    在方案的选择上,包括了第三方高可用和原生复制结合的方案,使用LVS(Linux Virtual Server)与Keepalived实现负载均衡和故障切换,以及使用MySQL主主复制模式。另外,还有基于SAN共享存储的方案和使用DRBD的方案。...

    MySQL应用场景 个人经验1

    Replication 可以提高数据库的可用性和灾难恢复能力,Cluster 可以提高数据库的高可用性和负载均衡能力,HA 可以确保数据库的高可用性,Optimization 可以提高数据库的性能,Sharding 可以解决大规模数据存储问题,...

    Mysql Keeplived主从集群环境搭建

    MySQL Keeplived 主从集群环境搭建是一个用于高可用性和负载均衡的解决方案,它结合了MySQL的复制机制和Keepalived的故障切换功能。这个配置确保了在主数据库服务器出现故障时,可以从服务器能够无缝接管,保证数据...

    LVS集群构建

    2. **Keepalived**:Keepalived用于监控LVS节点的状态,并在主节点故障时进行切换,保证服务的高可用性。它通过VRRP(Virtual Router Redundancy Protocol)协议来实现主备切换。 3. **域名虚拟主机**:在Web服务器...

    软件项目投标用技术部分 (2).docx

    - **数据库集群**:采用LVS+Keepalived+MySQL集群,能支持高并发写入,通过异步处理和消息队列(如Redis或Hazelcast,Kafka)应对更大并发需求。 - **服务开发语言**:选择Java作为开发语言,因其简单、面向对象、...

Global site tag (gtag.js) - Google Analytics