首页 > 代码库 > Lvs+keepalived+mysql主从热备

Lvs+keepalived+mysql主从热备

<style>p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 10.5pt; font-family: "Calibri", "sans-serif" } h1 { margin-top: 17.0pt; margin-right: 0cm; margin-bottom: 16.5pt; margin-left: 0cm; text-align: justify; line-height: 240%; page-break-after: avoid; font-size: 24.0pt; font-family: "Calibri", "sans-serif"; color: red; font-weight: bold } h2 { margin-top: 13.0pt; margin-right: 0cm; margin-bottom: 13.0pt; margin-left: 0cm; text-align: justify; line-height: 173%; page-break-after: avoid; font-size: 16.0pt; font-family: "Calibri Light", "sans-serif"; font-weight: bold } h3 { margin-top: 13.0pt; margin-right: 0cm; margin-bottom: 13.0pt; margin-left: 0cm; text-align: justify; line-height: 173%; page-break-after: avoid; font-size: 16.0pt; font-family: "Calibri", "sans-serif"; font-weight: bold } p.MsoHeader,li.MsoHeader,div.MsoHeader { margin: 0cm; margin-bottom: .0001pt; text-align: center; border: none; padding: 0cm; font-size: 9.0pt; font-family: "Calibri", "sans-serif" } p.MsoFooter,li.MsoFooter,div.MsoFooter { margin: 0cm; margin-bottom: .0001pt; font-size: 9.0pt; font-family: "Calibri", "sans-serif" } a:link,span.MsoHyperlink { color: #0563C1; text-decoration: underline } a:visited,span.MsoHyperlinkFollowed { color: #954F72; text-decoration: underline } p { margin-right: 0cm; margin-left: 0cm; font-size: 12.0pt; font-family: 宋体 } p.MsoNoSpacing,li.MsoNoSpacing,div.MsoNoSpacing { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 10.5pt; font-family: "Calibri", "sans-serif" } span.1Char { font-family: "微软雅黑", "sans-serif"; color: red; font-weight: bold } span.2Char { font-family: "Calibri Light", "sans-serif"; font-weight: bold } span.3Char { font-weight: bold } span.apple-converted-space { } span.Char { } span.Char0 { } .MsoChpDefault { font-family: "Calibri", "sans-serif" } div.WordSection1 { } ol { margin-bottom: 0cm } ul { margin-bottom: 0cm }</style>

Lvs+keepalived+mysql主从热备

实验拓扑图:

技术分享

一、安装 LVS+keepalivedMaster+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

技术分享

关联lvskeepalivedipvs所需的内核信息

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 FrameworkIPVS 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主备结构

1MySQL 主服务器

系统:CentOS 6.2

IP192.168.1.251

主机名称:MySQLMaster

MySQL 版本:mysql-5.5.22

2MySQL 从服务器

系统:CentOS 6.2

IP192.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配置文件在MASTERBACKUP上都要配置,在这样只有一个vrrp_instance 的环境里,主负载均衡器(MASTER)与备份负载均衡器(BACKUP)配置文件的差异一共只有3: 全局定义的route_idvrrp_instance statevrrp_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/

Lvs+keepalived+mysql主从热备