mysql主从配置和集负载均衡
阅读⽬录
1、简介
2、基本环境
3、配置MySQL主主复制
4、中间件简述
4.1、Haproxy介绍
4.2、keepalived介绍
5、中间件的安装与配置(haproxy、keepalived)
5.1、安装haproxy
1)、编译安装haproxy
2)、提供启动脚本
3)、提供配置⽂件
4)、启动⽇志
5)、启动haproxy
6)、测试haproxy
5.2、安装keepalived
1)、解决缺少的软件库⽂件
2)、编译安装keepalived软件
3)、创建配置⽂件
4)、创建脚本⽂件
6、功能测试
6.1、流程简述
6.2、测试haproxy监听前端端⼝3306
6.3、测试⾼可⽤+keepalived不抢占vip
6.4、测试负载均衡
7、总结与建议
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的主主复制:
何为主主复制?就是两个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
配置主从复制成功
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软件时存在各种依赖,下图是我安装软件后整理的依赖关系图:
既然已经知道各软件依赖,则可按最后⾯的软件开始安装:
(你也可以从前⾯开始进⾏安装,⼀步⼀步的查看各个依赖关系)
1、安装openssl
# rpm -ivh openssl-1.0.1e-30.el6.x86_64.rpm
安装openssl成功
2、安装openssl-devel
安装libsepol-devel:
# rpm -ivh libsepol-devel-2.0.41-4.el6.x86_64.rpm
安装pkgconfig(libsepol):
# rpm -ivh pkgconfig-0.23-9.1.el6.x86_64.rpm
安装libselinux-devel:
# rpm -ivh libselinux-devel-2.0.94-5.8.el6.x86_64.rpm
安装keyutils-libs-devel:
# rpm -ivh keyutils-libs-devel-1.4-5.el6.x86_64.rpm
安装libcom_err-devel:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论