MySQL⾼可⽤负载均衡
1、简介
  使⽤MySQL时随着时间的增长,⽤户量以及数据量的逐渐增加,访问量更是剧增,最终将会使MySQL达到某个瓶颈,那么MySQL的性能将会⼤⼤降低。这⼀结果也不利于软件的推⼴。
  那么如何跨过这个瓶颈,提⾼MySQL的并发量呢?⽅法有很多,分布式数据库、读写分离、⾼可⽤负载均衡、增加缓存服务器等等。之前的⽂章⾥已经介绍了读写分离的⽅案了,接下来我将讲解MySQL⾼可⽤负载均衡这⼀⽅法。
  其中实现⾼可⽤负载均衡的⽅法有很多,例如LVS+keepalived组合实现、haproxy+keepalived组合实现等等,这⾥我们采⽤haproxy+keepalived组合实现MySQL⾼可⽤负载均衡这⼀技术。
2、基本环境
四台linux虚拟主机
Linux版本CentOS6.6
MySQL 5.5(已安装好)
haproxy-1.5.14
keepalived-1.2.19
IP:192.168.95.11(mysql1)、192.168.95.12(mysql2)、192.168.95.13(haproxy+keepalived)、192.168.95.14(haproxy+keepalived)、192.168.95.55(vip)
3、配置MySQL主主复制
详细配置步骤可以参考这篇⽂章:
以下简要介绍⼀下mysql的主主复制:
何为主主复制?就是两个mysql都能读能写,数据记录通过⼆进制传达给对⽅从⽽保持数据的⼀致性。
(192.168.95.11主从复制+192.168.95.12主从复制==192.168.95.11、192.168.95.12主主复制)
  因此主主复制中必须要解决的事情就是⾃增主键的问题。如果mysql1主键id增加到12了,此时⼆进制数据还没到达mysql2,那么mysql2恰好要插⼊数据,那么新数据主键id也是12,那不就是乱套了么!解决这⼀问题我们可以直接更改MySQL中的配置⽂件即可。
1)、更改配置⽂件
--192.168.95.11:MySQL
server-id=11  #任意⾃然数n,只要保证两台MySQL主机不重复就可以了。
log-bin=mysql-bin  #开启⼆进制⽇志
auto_increment_increment=2  #步进值auto_imcrement。⼀般有n台主MySQL就填n
auto_increment_offset=1  #起始值。⼀般填第n台主MySQL。此时为第⼀台主MySQL
binlog-ignore=mysql  #忽略mysql库【我⼀般都不写】
binlog-ignore=information_schema  #忽略information_schema库【我⼀般都不写】
replicate-do-db=aa  #要同步的数据库,默认所有库
--192.168.95.12:MySQL
server-id=12
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=2
replicate-do-db=aa
配置好后重启MySQL
2)、配置192.168.95.11主从复制
  1、在192.168.95.12中创建⼀个192.168.95.11主机中可以登录的MySQL⽤户
⽤户:mysql11
密码:mysql11
mysql>GRANT REPLICATION SLAVE ON *.* TO ‘mysql11’@’192.168.95.11’ IDENTIFIED BY ’mysql11’;
mysql>FLUSH PRIVILEGES;
  2、查看192.168.95.12⼆进制⽇志
mysql> show master status;
  3、告知⼆进制⽂件名与位置
mysql> change master to
-> master_host='192.168.95.11',
-> master_user='mysql11',
->master_password='mysql11',
->master_log_file='mysql-bin.000097',
-> master_log_pos=107;
  4、查看结果
mysql> slave start;
mysql> show slave status\G
mysql下载下来是一个文件夹
配置主从复制成功
3)、配置192.168.95.12主从复制
同上
配置主从复制成功。
4、中间件简述
  4.1、Haproxy介绍
Haproxy是⼀个开源的⾼性能的反向代理或者说是负载均衡服务软件之⼀,它⽀持双机热备、虚拟主机、基于TCP和HTTP应⽤代理等功能。其配置简单,⽽且拥有很好的对服务器节点的健康检查功能(相当于keepalived健康检查),当其代理的后端服务器出现故障时,Haproxy会⾃动的将该故障服务器摘除,当服务器的故障恢复后Haproxy还会⾃动将RS服务器。
HAProxy特别适⽤于那些负载特⼤的web站点,这些站点通常⼜需要会话保持或七层处理。HAProxy运⾏在当前的硬件上,完全可以⽀持数以万计的并发连接。并且它的运⾏模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到⽹络上。
Haproxy软件引⼊了frontend,backend的功能,frontend(acl规则匹配)可以根据任意HTTP请求头做规则匹配,然后把请求定向到相关的backend(server pools等待前端把请求转过来的服务器组)。通过frontend和backup,我们可以很容易的实现haproxy的7层代理功能,haproxy是⼀款不可多得的优秀代理服务软件。
  4.2、keepalived介绍
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器⾼可⽤的协议,即将N台提供相同功能的路由器组成⼀个路由器组,这个组⾥⾯有⼀个master和多个backup,master上⾯有⼀个对外提供服务的vip(该路由器所在局域⽹内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举⼀个backup当master。这样的话就可以保证路由器的⾼可⽤了。
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核⼼,负责主进程的启动、维护以及全局配置⽂件的加载和解析。check负责健康检查,包括常见的各种检查⽅式。vrrp 模块是来实现VRRP协议的。
5、中间件的安装与配置(haproxy、keepalived)
百度云下载:密码:7cef
  5.1、安装haproxy
在192.168.95.13、192.168.95.14安装haproxy(⼀模⼀样安装)
  1)、编译安装haproxy
# tar -zxvf haproxy-1.5.
# cd haproxy-1.5.14
# make TARGET=linux26 ARCH=x86_64
# make install SBINDIR=/usr/sbin/ MANDIR=/usr/share/man/ DOCDIR=/usr/share/doc/
注意:
1、为什么不⽤configure,请看下图。haproxy-1.5.14已经存在Makefile⽂件了。
2、make的时候,target以及arch需要根据⾃⼰的linux主机设置
3、make install的时候我增加了⼀些额外选项。这可加可不加由⾃⼰配置,不加的话将会按默认路径安装,请看下图。
  2)、提供启动脚本
将haproxy这个启动脚本放在/etc/init.d/⽂件夹下,以便我们可以直接service启动它
【注意】:此启动脚本仅仅适合我以上的安装路径。假若安装路径不同,则需要进⾏相应的修改⽅可使⽤。
View Code
#给执⾏权⼒
#chmod +x /etc/init.d/haproxy
  3)、提供配置⽂件
根据上⾯的启动脚本建⽴相应的⽬录以及配置⽂件
# mkdir /etc/haproxy
# mkdir /var/lib/haproxy
# useradd -r haproxy      #建⽴脚本启动⽤户
# vi /etc/haproxy/haproxy.cfg
【配置⽂件】
#这⾥的配置⽂件仅仅只是贴出来进⾏解析说明。
#如果需要这个配置⽂件最好将注释解析全部删除掉,因为我在使⽤的过程中,正是因为存在注释解析⽽导致出错,删除后就能正常运⾏。#可以下载这个配置⽂件进⾏使⽤,与下⾯贴出来的配置⽂件⼀致,只是不存在注释解析
#百度云下载该配置⽂件(不含注释):链接:密码:zl9o
global
log        127.0.0.1 local2        //⽇志定义级别
chroot      /var/lib/haproxy        //当前⼯作⽬录
pidfile    /var/run/haproxy.pid    //进程id
maxconn    4000                    //最⼤连接数
user        haproxy                  //运⾏改程序的⽤户
group      haproxy
daemon                              //后台形式运⾏
stats socket /var/lib/haproxy/stats
defaults
mode                    tcp            //haproxy运⾏模式(http | tcp | health)
log                    global
option                  dontlognull
option                  redispatch    //serverId对应的服务器挂掉后,强制定向到其他健康的服务器
retries                3              //三次连接失败则服务器不⽤
timeout http-request    10s
timeout queue          1m
timeout connect        10s            //连接超时
timeout client          1m            //客户端超时
timeout server          1m            //服务器超时
timeout http-keep-alive 10s
timeout check          10s            //⼼跳检测
maxconn                600            //最⼤连接数
listen stats                              //配置haproxy状态页(⽤来查看的页⾯)
mode http
bind :8888
stats enable
stats hide-version                    //隐藏haproxy版本号
stats uri    /haproxyadmin?stats    //⼀会⽤于打开状态页的uri
stats realm  Haproxy\ Statistics    //输⼊账户密码时的提⽰⽂字
stats auth    admin:admin            //⽤户名:密码
frontend  main
bind 0.0.0.0:3306                    //使⽤3306端⼝。监听前端端⼝【表⽰任何ip访问3306端⼝都会将数据轮番转发到mysql服务器组中】    default_backend            mysql    //后端服务器组名
backend mysql
balance    leastconn                //使⽤最少连接⽅式调度
server mysql1 192.168.95.11:3306 check port 3306 maxconn 300
server mysql2 192.168.95.12:3306 check port 3306 maxconn 300
  4)、启动⽇志
# vi /f
#service rsyslog restart
  5)、启动haproxy
# service haproxy start
  6)、测试haproxy
安照配置⽂件进⾏相应的测试
打开浏览器输⼊192.168.95.13:8888/haproxyadmin?stats
登陆后如下如所⽰,表明安装haproxy成功。
  5.2、安装keepalived
官⽹下载:
在192.168.95.13、192.168.95.14安装keepalived
  1)、解决缺少的软件库⽂件
【这⼀步骤视具体的linux版本⽽定,有些已经安装openssl了。具体情况可以执⾏./configure就能够确定缺不缺少软件库⽂件了】
⾸先我们先将keepalived-1.2.解压,然后进⼊⽬录./configure查看
# tar -zxvf keepalived-1.2.
# ./configure --prefix=/usr/local/keepalived  --sbindir=/usr/sbin/ --sysconfdir=/etc/ --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/kernels/2.6.32-504.el6.x86_64/
由上图可见keepalived的安装需要先安装软件OpenSSL
缺少头⽂件,只需要安装openssl和openssl-devel即可
最简单的⽅法是:yum -y install openssl openssl-devel
没⽹的朋友也不⽤怕,接下来将介绍的是rpm⽅法安装:
#挂载光盘,在光盘中查软件。若光盘不到就直接下载,再传⼊linux进⾏安装
# mount /dev/cdrom  /home/suifeng2/rom/
# cd rom/
# cd Packages/
# ls |grep openssl
安装keepalived软件时存在各种依赖,下图是我安装软件后整理的依赖关系图:
既然已经知道各软件依赖,则可按最后⾯的软件开始安装:
(你也可以从前⾯开始进⾏安装,⼀步⼀步的查看各个依赖关系)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。