你的位置:首页 > 软件开发 > 数据库 > linux keepalived+LVS 实现mysql 从库负载均衡

linux keepalived+LVS 实现mysql 从库负载均衡

发布时间:2015-12-28 18:00:20
前情提要:参考链接:http://www.osyunwei.com/archives/7464.htmlps:以上为本次操作的主要参考资料,非常感谢此文作者的贡献,我的随笔的主要目的是说明在使用以上资料参考部署的过程中,遇到的一些问题以及补充。目的:  1、解决web读写分离功能 ...

前情提要:

参考链接:

http://www.osyunwei.com/archives/7464.html

ps:以上为本次操作的主要参考资料,非常感谢此文作者的贡献,我的随笔的主要目的是

说明在使用以上资料参考部署的过程中,遇到的一些问题以及补充。

目的:

  1、解决web读写分离功能缺陷,实现数据库从库负载均衡与高可用

  2、简化web与主要功能模块的配置,使用vip接管

实验环境:

  操作系统:redhat6.4 64位   #目前主流的版本应该在6.4以上,主要是硬件要求

       DB版本:mysql5.6           #这个没什么可说的,选择版本主要看应用需求

       lvs主机:192.168.1.180   #部署lvs+keepalived,用于管理VIP,并分发数据库读写请求

     从库IP:192.168.20.182、192.168.20.183   #mysql_slave 一主两从

        测试机:192.168.20.181   #用于测试整套架构的功能

            VIP:192.168.20.253   #虚拟IP,用于请求的分发

一、环境安装配置  

数据库mysql5.6安装(20.182、20.183)

rpm -ivh

MySQL-server-5.6.16-1.el6.x86_64.rpm

MySQL-devel-5.6.16-1.el6.x86_64.rpm

MySQL-shared-5.6.16-1.el6.x86_64.rpm

MySQL-client-5.6.16-1.el6.x86_64.rpm

MySQL-shared-compat-5.6.16-1.el6.x86_64.rpm

 

mysql5.6的安全性有所提高,安装完成后会有如下提示:

You will find that password in '/root/.mysql_secret'

cat /root/.mysql_secret

# The random password set for the root user at Mon Aug 31 08:28:44 2015 (local time): 06tIwUud

通过密码进入mysql之后:通过:SET PASSWORD = password('xxxxxx'); 重置密码即可。 其他跟正常的mysql安装相同。

 

数据库主从搭建(略)

  恩......不是我偷懒,主要是网上这块的内容太多了,一抓一大把,没有什么可写的价值,之后如果有兴趣可能单开一个随笔,这就不写了。

      大家随意的搜一下。

 

网络环境配置(所有机器)

  由于我的生产环境有单独的思科防火墙,所以我所有的服务器的系统防火墙都是关闭的,包括selinux,不然太麻烦。

有些莫名其妙的报错可能都是iptable和selinux引起的,为了方便一般默认关闭

1、关闭selinux:

   修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。

 

四、负载均衡功能测试

 1、LVS主机(20.180)执行:

service keepalived start  #启动keepalived

ipvsadm -Ln  #检查lvs运行状态

linux keepalived+LVS 实现mysql 从库负载均衡

2、数据库从库(20.182、20.183)

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

VIP已经绑定到lo:0

linux keepalived+LVS 实现mysql 从库负载均衡

 

3、负载均衡功能测试

20.182:执行service mysql stop

在20.180(LVS主机)上执行

ipvsadm -Ln  #检查lvs运行状态

可以看到20.182服务器已经被去掉。同理再次启动之后此服务器会被再次加入服务。

linux keepalived+LVS 实现mysql 从库负载均衡

 

4、VIP数据库功能测试

在测试服务器(1.181)上执行数据库连接命令

mysql -uroot -pXXXXXX -h192.168.20.253

linux keepalived+LVS 实现mysql 从库负载均衡

 或者使用telnet 192.168.20.253 3306 命令去尝试连接,如果提示输入密码,说明连接正常。

 

FAQ:

  1、能够ping通,但是telnet不通,不知道是为什么?

        答:网上看到很多人,包括我自己,都遇到了这个问题,VIP能够ping通,但是telnet以及mysql连接命令不通,怎么着也找不到问题。

          这个问题困扰了我很长时间,中间试验停止了两个月,因为实在找不到原因,但是后来实在是啼笑皆非,原因竟然是:没有使用测试机,

          我所有的测试命令都是在LVS主机上执行的,而LVS主机上绑定了VIP,并且没有mysql服务,肯定能ping通,但是在没有转发请求的

          情况下,肯定服务不通。

 

  2、原资料中的一些命令的困扰?

    答:比如ipvsadm -L   在我的服务器上是不显示具体IP的,只显示localhost,一度让我以为服务不通跟这个有联系,但实际上执行ipvsadm -Ln就ok了。

 

  3、数据库从库状态检测脚本是否使用?

   答:我觉得这个应该根据具体的业务系统的需求去考虑,我的系统要求的是能够持续提供服务,对数据一致性的要求没有那么高,所以我只需要对同步状态进行

         告警,并保证能及时处理即可,并不需要停止服务这么严苛。另外脚本使用perl或者shell实际上应该没有什么不同。

ok!整个方案就这样了,中间省略了一些步骤,比如数据库主从服务的搭建,LVS高可用的搭建,这两个服务我在很久之前就搭建了无数次,实在是懒得再写,并且这种单独的服务在网上已经有了无数个攻略,写的价值不是很大,大家各种研究下吧。

  另外水平有限,如果有所遗漏和错误请大家指出,我及时修改,如果有更完善的方案,大家能分享就更好了。

 


原标题:linux keepalived+LVS 实现mysql 从库负载均衡

关键词:MYSQL

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。