一简介
Keepalived+lvs+mysql主主复制是比较常用的一种Mysql高可用方案,其中lvs 提供读负载均衡,Keepalived通过虚拟vip漂移实现故障自动转移,而Mysql虽然配置成主主复制,但是一般都是采用单点写入来保证数据一致性。
整个方案实现非常简单,仅需两台服务器即可,安装配置也相对简单,但需要自己写脚本实现keepalived服务的开启和关闭,适用于只有两台数据库服务器并且未实现读写分离的场景。系统整体结构框图如下

二环境搭建
2.1 环境配置如下
| Keepalived Server |
LVS Server |
LVS Realserver |
MySQL Master-Master |
Write VIP |
Read VIP |
OS |
MySQL |
| Master 10.0.11.243 |
10.0.11.243 |
10.0.11.243 |
10.0.11.243 |
10.0.11.190 |
10.0.11.191 |
Centos6 |
Percona5.6 |
| Backup 10.0.11.244 |
10.0.11.244 |
10.0.11.244 |
10.0.11.244 |
10.0.11.190 |
10.0.11.191 |
Centos6 |
Percona5.6 |
?
?
2.2 mysql master-master复制配置
主主复制配置本质上就是配置两台服务器互相的主从,实现比较简单,大致步骤如下
2.2.1 在Master上创建一个复制账户
mysql>grantreplication slave on *.* to rep71@10.0.11.244identified by‘123456’;
mysql>flushprivileges;
?
2.2.2 修改两台mysql配置文件my.cnf如下
##Replication General Config (both master and slave) server-id= 101 log-bin= mysql-log-bin auto-increment-increment= 2 auto-increment-offset= 1 binlog_format= row relay_log= mysql-relay-bin
?
2.2.3 在Master服务器上执行show master status,记录下File和Position
mysql>show master status\G; ***************************1. row *************************** File:mysql-log-bin.000005 Position:327933 Binlog_Do_DB: Binlog_Ignore_DB:test,mysql,information_schema,performance_schema
2.2.4 在Slave服务上执行
mysql> slave stop; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> change master to -> master_host='10.0.11.243', -> master_user='rep71', -> master_password='123456', -> master_log_file=' mysql-log-bin.000005', -> master_log_pos=327933; Query OK, 0 rows affected (0.01 sec) mysql> start slave;
2.2.5重复以上四个步骤,在Slave服务器上创建账户rep72,show master status,在Master上start slave,这样mysql的主主同步就配置好了,分别在两台服务器上运行show slave status,如果结果都显示Slave_IO_Running: Yes,Slave_SQL_Running: Yes,则证明同步正常。
?
2.3 Keepalived的安装
2.3.1 在 master、backup 服务器都进行安装:
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz sudotar zxvf ipvsadm-1.24.tar.gz cdipvsadm-1.24 sudoln -s /usr/src/kernels/2.6.32-358.el6.x86_64/ /usr/src/linux make sudomake install
?
2.4 Keepalived 的安装
2.4.1在 master、backup 服务器都进行安装:
wget http://www.keepalived.org/software/keepalived-1.1.19.tar.gz tarzxvf keepalived-1.1.19.tar.gz cdkeepalived-1.1.19 yuminstall -y openssl openssl-devel sudoyum install popt-devel –y ./configure--sysconf=/etc/ --with-kernel-dir=/usr/src/kernels/2.6.18-308.el5-x86_64/ make sudomake install ln -s /usr/local/sbin/keepalived /sbin/
2.4.2 Master上的Keepalived 的配置
global_defs{
router_id mysqlmha1
}
vrrp_scriptcheck_run {
script"/etc/keepalived/check_mysqll.sh"
interval 1
}
vrrp_instanceVI_1 {
state MASTER
interface em1
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_run
}
virtual_ipaddress {
10.0.11.190 dev em1 label em1:1
10.0.11.191 dev em1 label em1:2
}
}
virtual_server10.0.11.190 3306 {
delay_loop6
lb_algorr
lb_kindDR
persistence_timeout20
protocolTCP
sorry_server10.0.11.244 3306
real_server10.0.11.243 3306 {
w