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

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

c4751e3faf275f6a9d055c063c65a551.png

优点:

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

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

ü扩展不是很方便。

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

缺点:

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

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

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

服务器名

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

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

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

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

在master、backup服务器都进行安装:

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

在master、backup服务器都进行安装:

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.1Master的keepalived的配置

Master和backup不一样的地方已经标记为红色

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.2Backup的keepalived的配置

Master和backup不一样的地方已经标记为红色

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.8Master和backup的realserver的配置

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

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

启动master和backup的mysql以后,再在master和backup执行如下命令启动keepalived和realserver脚本:

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

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

并将keepalived和realserver的启动脚本加入到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

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

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

–ln。

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值