Lvs+keepalived+mysql主从热备
Lvs+keepalived+mysql主从热备
实验拓扑图:
一、安装 LVS+keepalived(Master+Backup都需安装)
需要软件
ipvsadm-1.26.tar.gz
keepalived-1.2.13.tar.gz
裸机需要安装如下插件
popt-static-1.13-7.el6.x86_64.rpm
yum -y install libnl* popt* kernel* openssl* gcc* make*
vi /etc/selinux/config #编辑SE防火墙配置文件
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存,退出
setenforce 0 #立即生效
Service iptables stop 关闭防火墙
二、安装Lvs
关联lvs与keepalived的ipvs所需的内核信息
ln -s /usr/src/kernels/2.6.32-71.el6.x86_64/ /usr/src/linux
解压ipvsadm
使用make 进行编译makeinstall 编译后安装
完成后 使用ipvsadm –v 查看版本
三、安装keepalived
解压keepalived
进入目录 配置keepalived存放路径
指定目录后 输出版本信息 和所支持的选项
留意Configure配置Use IPVS Framework、IPVS sync daemon support 、Use VRRP Framework要返回yes,否则无法关联ipvs功能
最后编译安装
优化keepalived路径做软连接
ln -s /usr/local/keepalived/etc/keepalived /etc/
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/bin/genhash /bin/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
配置MySQL双机热备
环境说明
Msql主备结构
1、MySQL 主服务器
系统:CentOS 6.2
IP:192.168.1.251
主机名称:MySQLMaster
MySQL 版本:mysql-5.5.22
2、MySQL 从服务器
系统:CentOS 6.2
IP:192.168.1.252
主机名称:MySQLSlave
MySQL 版本:mysql-5.5.22
一、配置MySQL 主从服务器
修改两台服务器的IP 然后使用rpm包安装好mysql数据库,
使用mysql –u root –p 登录 密码默认为空,
建立数据库smiledb;
授权用户rsync 只能从192.168.1.252 这个IP
访问主服务器192.168.1.251 上面的数据库,并且只具有数据库备份的权限,
刷新系统授权表,
备注:在导出之前可以先进入MySQL 控制台执行下面命令
flush tables with read lock; #数据库只读锁定命令,防止导出数据库的时候有数据写入,
#在MySQL 主服务
器进行操作,导出数据库smiledb 到/home/smile.sql
将备份的smile.sql 上传至从服务器(上传大家都会 我就不演示)
在从服务器先创建smiledb库;
使用 use smildb;进入库
导入备份文件到从数据库,
测试在从服务器上登录到主服务器,
二、配置MySQL (主)--服务器的my.cnf 文件
如图,修改my.cnf文件,(上面描述的非常详细)
将主服务器 /usr/share/mysql/my-my-large.cnf 修改为my.cnf并且移动到/etc/ 目录下
然后重启MySQL
再次进入mysql控制台,使用 show master status; 必须把库锁住 否则会出现变动
查看master数据库当前正在使用的二进制日志及当前执行二进制日志位置;
三、配置MySQL (从)--服务器的my.cnf 文件
如图,修改my.cnf文件,(上面描述的非常详细)
将从服务器 /usr/share/mysql/my-my-large.cnf 修改为my.cnf并且移动到/etc/ 目录下
然后重启MySQL
进入mysql控制台 停止slave同步进程
执行同步语句;
change master to master_host='192.168.1.210', master_user='rsync', master_password='123456',master_port=5656, master_log_file='mysql-bin.000001', master_log_pos=107;
开启slave同步信息;
完成后别忘记解除主服务器库的锁定,
最后使用 SHOW SLAVE STATUS\G 查看同步信息;
注意查看:
Slave_IO_Running: Yes Slave_SQL_Running: Yes
以上这两个参数的值为Yes,即说明配置成功!
进入主服务器 创建test表 查看从服务器是否同步过来;
create table test ( id int not null primary key,name char(20) );
show tables;会看到有一个新建的表test,表示数据库同步成功
配置主从keepalived.conf文件
上面的Keepalived.conf配置文件在MASTER和BACKUP上都要配置,在这样只有一个vrrp_instance 的环境里,主负载均衡器(MASTER)与备份负载均衡器(BACKUP)配置文件的差异一共只有3处: 全局定义的route_id、vrrp_instance state和vrrp_instance的优先级priority。
将虚拟IP绑定到两台Mysql服务器
指定虚拟IP 192.168.1.250
/sbin/ifconfig lo:0 192.168.1.250 netmask 255.255.255.255 broadcast 192.168.1.250
/sbin/route add -host 192.168.1.250 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
使用ip route 查看是否绑定到l0上
模拟故障
测试realserver
测试关闭其中一台realserver
通过上面测试可以知道,当realserver故障或者无法提供服务时,负载均衡器通过健康检查自动把失效的机器从转发队列删除掉,
启动被关闭的realserver
当realserver故障恢复后,负载均衡器通过健康检查自动把恢复后的机器添加到转发队列中
http://blog.163.com/wingswing@126/blog/static/22676416201173105514120/