Lvs+keepalived+mysql主从热备

时间:2023-03-09 01:22:53
Lvs+keepalived+mysql主从热备

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 }

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*

Lvs+keepalived+mysql主从热备

vi /etc/selinux/config #编辑SE防火墙配置文件

#SELINUX=enforcing #注释掉

#SELINUXTYPE=targeted #注释掉

SELINUX=disabled #增加

:wq! #保存,退出

setenforce 0  #立即生效

Lvs+keepalived+mysql主从热备

Service iptables stop 关闭防火墙

二、安装Lvs

Lvs+keepalived+mysql主从热备

关联lvs与keepalived的ipvs所需的内核信息

ln -s       /usr/src/kernels/2.6.32-71.el6.x86_64/     /usr/src/linuxLvs+keepalived+mysql主从热备

解压ipvsadm  

Lvs+keepalived+mysql主从热备

使用make 进行编译makeinstall 编译后安装

Lvs+keepalived+mysql主从热备

完成后  使用ipvsadm –v  查看版本

三、安装keepalived

Lvs+keepalived+mysql主从热备

解压keepalived

Lvs+keepalived+mysql主从热备

进入目录  配置keepalived存放路径

Lvs+keepalived+mysql主从热备

指定目录后  输出版本信息  和所支持的选项

留意Configure配置Use IPVS Framework、IPVS sync daemon support 、Use VRRP Framework要返回yes,否则无法关联ipvs功能

Lvs+keepalived+mysql主从热备

最后编译安装

Lvs+keepalived+mysql主从热备

优化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 主从服务器

Lvs+keepalived+mysql主从热备

修改两台服务器的IP    然后使用rpm包安装好mysql数据库,

Lvs+keepalived+mysql主从热备

使用mysql –u root –p 登录  密码默认为空,

Lvs+keepalived+mysql主从热备

建立数据库smiledb;

Lvs+keepalived+mysql主从热备

授权用户rsync 只能从192.168.1.252 这个IP

访问主服务器192.168.1.251 上面的数据库,并且只具有数据库备份的权限,

Lvs+keepalived+mysql主从热备

刷新系统授权表,

备注:在导出之前可以先进入MySQL 控制台执行下面命令

Lvs+keepalived+mysql主从热备

flush tables with read lock; #数据库只读锁定命令,防止导出数据库的时候有数据写入,

Lvs+keepalived+mysql主从热备

#在MySQL 主服务

器进行操作,导出数据库smiledb 到/home/smile.sql

将备份的smile.sql 上传至从服务器(上传大家都会 我就不演示)

Lvs+keepalived+mysql主从热备

在从服务器先创建smiledb库;

Lvs+keepalived+mysql主从热备

使用 use smildb;进入库

Lvs+keepalived+mysql主从热备

导入备份文件到从数据库,

Lvs+keepalived+mysql主从热备

测试在从服务器上登录到主服务器,

二、配置MySQL (主)--服务器的my.cnf 文件

Lvs+keepalived+mysql主从热备

如图,修改my.cnf文件,(上面描述的非常详细)

将主服务器 /usr/share/mysql/my-my-large.cnf 修改为my.cnf并且移动到/etc/ 目录下

Lvs+keepalived+mysql主从热备

然后重启MySQL

Lvs+keepalived+mysql主从热备

再次进入mysql控制台,使用 show master status;   必须把库锁住 否则会出现变动

查看master数据库当前正在使用的二进制日志及当前执行二进制日志位置;

三、配置MySQL (从)--服务器的my.cnf 文件

Lvs+keepalived+mysql主从热备

如图,修改my.cnf文件,(上面描述的非常详细)

将从服务器  /usr/share/mysql/my-my-large.cnf 修改为my.cnf并且移动到/etc/ 目录下

Lvs+keepalived+mysql主从热备

然后重启MySQL

Lvs+keepalived+mysql主从热备

进入mysql控制台   停止slave同步进程

Lvs+keepalived+mysql主从热备

执行同步语句;

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;

Lvs+keepalived+mysql主从热备

开启slave同步信息;

Lvs+keepalived+mysql主从热备

完成后别忘记解除主服务器库的锁定,

Lvs+keepalived+mysql主从热备

最后使用 SHOW SLAVE STATUS\G 查看同步信息;

注意查看:

Slave_IO_Running: Yes            Slave_SQL_Running: Yes

以上这两个参数的值为Yes,即说明配置成功!

Lvs+keepalived+mysql主从热备

进入主服务器 创建test表  查看从服务器是否同步过来;

create table test ( id int not null primary key,name char(20) );

Lvs+keepalived+mysql主从热备

show tables;会看到有一个新建的表test,表示数据库同步成功

配置主从keepalived.conf文件

Lvs+keepalived+mysql主从热备

Lvs+keepalived+mysql主从热备

上面的Keepalived.conf配置文件在处: 全局定义的route_id、vrrp_instance state和vrrp_instance的优先级priority。

将虚拟IP绑定到两台Mysql服务器

Lvs+keepalived+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

Lvs+keepalived+mysql主从热备

使用ip route 查看是否绑定到l0上

Lvs+keepalived+mysql主从热备

模拟故障

测试realserver

Lvs+keepalived+mysql主从热备

测试关闭其中一台realserver

Lvs+keepalived+mysql主从热备

通过上面测试可以知道,当realserver故障或者无法提供服务时,负载均衡器通过健康检查自动把失效的机器从转发队列删除掉,

Lvs+keepalived+mysql主从热备

启动被关闭的realserver

Lvs+keepalived+mysql主从热备

当realserver故障恢复后,负载均衡器通过健康检查自动把恢复后的机器添加到转发队列中

 

http://blog.163.com/wingswing@126/blog/static/22676416201173105514120/