SLB Haproxy Mycat代理mysql分库分表,读写分离

#随着业务增长,对于后端数据库的压力越来越大,尤其是个人信息中心等超级大表,超过千万级别的表,我们决定通过分库分表来减轻压力,这就需要在前面加代理,后来调研到mycat适合我们的业务,又由于跑在阿里云,通过slb直接代理mycat会报错,就想到了通过haproxy来做mycat的代理,由于阿里云不支持VIP,所以只能选用slb代理两个haproxy,再通过haproxy代理两个mycat达到高可用负载均衡的架构。

#haproxy的优点
1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);
2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
3、支持url检测后端的服务器;
4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS;
6、HAProxy的算法较多,达到8种;

#软件版本
平台:阿里云
操作系统:CentOS Linux release 7.0.1406 (Core)
haproxy:haproxy-1.5.18-3.el7_3.1.x86_64
Java:java version “1.8.0_112”
mycat:Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

#架构图

#软件版本
平台:阿里云
操作系统:CentOS Linux release 7.0.1406 (Core)
haproxy:haproxy-1.5.18-3.el7_3.1.x86_64
Java:java version “1.8.0_112”
mycat:Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

#配置MyCat状态检查服务(在MyCat节点主机上配置)
#增加mycat服务的状态检测脚本,并开放相应的检测端口,以提供给HAProxy对MyCat的服务状态进行检测判断。可以使用xinetd来实现,通过xinetd,HAProxy可以用httpchk来检测MyCat的存活状态。(xinetd即extended internet daemon,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器。经常用来管理多种轻量级Internet服务。xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。xinetd为linux系统的基础服务)
#安装xinetd

#编辑mycat_statuswenjan

#增加监测脚本

#给新增脚本赋予可执行权限

#在/etc/services中加入mycat_status服务

#保存后,重启xinetd服务

#验证mycat_status服务是否成功启动
[root@tomcat-test-2 conf]# /opt/mycat_status
HTTP/1.1 200 OK

#haproxy
#MyCat官方推荐使用HAProxy做MyCat的高可用负载均衡代理。
#HAProxy的安装

#编辑haproxy

#启动服务

#编写haproxy健康守护进程避免程序假死造成的问题

#编写haproxy_status脚本

#赋予执行权限

#安装screen

#执行守护进程

#开启rsyslog的haproxy日志记录功能

#默认情况下 haproxy是不记录日志的,如果需要记录日志,还需要配置系统的syslog,在linux系统中是rsyslog服务。syslog服务器可以用作一个网络中的日志监控中心,rsyslog是一个开源工具,被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息。
#安装rsyslog

#配置rsyslog

#创建haproxy.conf接受日志

#启动rsyslog服务

#配置系统内核的IP包转发功能

#使配置生效

#重启haproxy并设置开机启动

 

 

此条目发表在高可用负载均衡分类目录。将固定链接加入收藏夹。

发表评论