mysql优化系列(二十五)- mycat负载均衡集群

1. haproxy 负载均衡搭建与介绍

1.1 什么是负载均衡?

在网站建立初期,我们一般都使用单台机器对它提供集中式服务,但随着业务量越来越大,无论性能还是稳定性上都有了更大的挑战。这时候我们就会想通过扩容的方式来提供更好的服务。我们一般会把多台机器组成一个集群对外提供服务。然而,我们的网站对外提供服务的访问入口都是一个的,比如 www.taobao.com 。那么当用户在浏览器输入 www.taobao.com 的时候如何将用户的请求分发到集群中不同的机器上呢?这就是负载均衡在做的事情。

当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是 Web 应用服务器集群,也可以是数据库服务集群,还可以是分布式缓存服务器集群等。

在实际应用中,在 Web 服务器集群之前总会有一台负载均衡服务器,负载均衡设备的任务就是作为 Web 服务器流量的入口,挑选最合适的一台 Web 服务器,将客户端的请求转发给它处理,实现客户端到真实服务器的透明转发

最近几年很火的 「 云计算 」以及分布式架构,本质上也是将后端服务器作为计算资源、存储资源,由某台管理服务器封装成一个服务对外提供,客户端不需要关心真正提供服务的是哪台机器,在它看来,就好像是它面对的是一台拥有近乎无限能力的服务器,而本质上,真正提供服务的是后端的集群。

1.2 负载均衡分类

现在我们知道,**负载均衡就是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁碟驱动器或其他资源中分配负载,以达到最佳化资源使用、最大吞吐率、最小化响应时间、同时避免过载的目的。**那么,这种计算机技术的实现方式有多种。

大致可以分为以下几种,其中最常用的是四层七层负载均衡:

二层负载均衡

负载均衡服务器对外依然提供一个 VIP (虚IP),集群中不同的机器采用相同 IP 地址,但机器的 mac 地址不一样。当负载均衡服务器接收到请求之后,通过改写报文的目标 MAC 地址的方式将请求转发到目标机器实现负载均衡。

三层负载均衡

和二层负载均衡类似,负载均衡服务器对外依然提供一个 VIP (虚IP),但集群中不同的机器采用不同的 IP 地址。当负载均衡服务器接收到请求之后,根据不同的负载均衡算法,通过 IP 将请求转发至不同的真实服务器。

四层负载均衡

四层负载均衡工作在 O SI模型的传输层,由于在传输层,只有 TCP/UDP 协议,这两种协议中除了包含源 IP 、目标 IP 以外,还包含源端口号及目的端口号。四层负载均衡算法,通过 IP 将请求转发至不同的真实服务器

七层负载均衡

七层负载均衡工作在 O SI 模型 的应用层,应用层协议较多,常用 HTTP、Radius、DNS 等。七层负载就可以基于这些协议来负载。这些应用层协议中会包含很多有意义的内容。比如同一个 Web 服务器的负载均衡,除了根据 IP 加端口进行负载外,还可根据七层的 URL 、浏览器类别、语言来决定是否要进行负载均衡。

1.3 haproxy介绍

HAProxy 是一个使用 C 语言编写的自由及开放源代码软件,可提供高可用性、负载均衡,以及基于 TCP 和 HTTP 的应用程序代理。

  • HAProxy 特别适用于那些负载特大的 web 站点,这些站点通常又需要会话保持或七层处理。
  • HAProxy 运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合到您当前的架构中,同时可以保护你 web 服务器不被暴露到网络上。
  • HAProxy 实现了一种事件驱动,单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space )实现所有这些任务,所有没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以使每个 CPU 时间片 Cycle 做更多的工作。
  • 相较与 Nginx,HAProxy 更专注与反向代理,因此它可以支持更多的选项,更精细的控制,更多的健康状态检测机制和负载均衡算法。
  • 包括 GitHub、Bitbucket、Stack Overflow、Reddit、Tumblr、Twitter 和 Tuenti 在内的知名网站,以及亚马逊网络服务系统都使用了 HAProxy。

Haproxy的特性:

  1. 可靠性与稳定性都非常出色,可与硬件级设备媲美。
  2. 支持连接拒绝,可以用于防止 DDoS 攻击
  3. 支持长连接、短连接和日志功能,可根据需要灵活配置
  4. 路由 HTTP 请求到后端服务器,基于 cookie 作会话绑定;同时支持通过获取指定的 url 来检测后端服务器的状态
  5. HAProxy 还拥有功能强大的 ACL 支持,可灵活配置路由功能,实现动静分离,在架构设计与实现上带来很大方便
  6. 可支持四层和七层负载均衡,几乎能为所有服务常见的提供负载均衡功能
  7. 拥有功能强大的后端服务器的状态监控 web 页面,可以实时了解设备的运行状态 ,还可实现设备上下线等简单操作。
  8. 支持多种负载均衡调度算法,并且也支持 session 保持。
  9. Haproxy 七层负载均衡模式下,负载均衡与客户端及后端的服务器会分别建立一次 TCP连接,而在四层负载均衡模式下(DR),仅建立一次 TCP 连接; 七层负载均衡对负载均衡设备的要求更高,处理能力也低于四层负载均衡

1.4 haproxy配置文件

1.4.1 配置文件结构

haproxy 的配置文件由两部分组成:

  1. 全局设定(global settings)
  2. 对代理的设定(proxies)

全局设定

global settings:主要用于定义 haproxy 进程管理安全及性能相关的参数

代理设定

proxies 共分为4段:defaults,frontend,backend,listen

proxies:代理相关的配置可以有如下几个配置端组成
defaults:为除了 global 以外的其它配置段提供默认参数,默认配置参数可由下一个 “defaults” 重新设定。
frontend:定义一系列监听的套接字,这些套接字可接受客户端请求并与之建立连接。 backend:定义 “后端” 服务器,前端代理服务器将会把客户端的请求调度至这些服务器。 listen:定义监听的套接字和后端的服务器。类似于将 frontend 和 backend 段放在一起 所有代理的名称只能使用大写字母、小写字母、数字、-(中线)、_(下划线)、.(点号)和:(冒号)。此外,ACL 名称会区分字母大小写。

1.4.2 配置文件详细介绍

注意:此处只做配置文件介绍,不做为后期负载均衡配置

在这里插入图片描述
在这里插入图片描述

2.mycat 负载均衡集群

环境搭建准备:

在这里插入图片描述

2.1 haproxy安装与环境配置

在192.168.199.135(负载均衡服务器)中安装与配置如下:

  1. 安装haproxy负载均衡器
    yum install haproxy -y

  2. 配置haproxy配置文件,目录:/etc/haproxy/haproxy.cfg

在这里插入图片描述
在这里插入图片描述
3. 启动haproxy负载均衡

/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg

2.2 主从mycat安装与配置

在192.168.199.128(主服务器)与192.168.199.129(从服务器)中安装mycat服务,略过mysql安装,如需要mysql安装教程可以看第21节主从复制文档

2.2.1 安装java

  1. 去Oracle官网下载需要安装的jdk版本,我这里用的是jdk-8u181-linux-x64.tar.gz
  2. 将该压缩包放到/usr/local/jdk目录下,jdk目录需要自己手动创建,也可以叫java,名字自己随意取(见名知意),然后解压该压缩包,输入如下指令:

[root@localhost home]# tar -zxvf jdk-8u20-linux-x64.tar.gz

3.接下来就该配置环境变量了,输入以下指令进行配置:

在这里插入图片描述

注意:第一行的JAVA_HOME=/usr/local/java此处等号右边的是自己的jdk实际解压目录。如果不是该目录则需要改成自己的实际目录,其他不变

4.编辑完之后,保存并退出,然后输入以下指令,刷新环境配置使其生效:

[root@localhost home]# source /etc/profile

2.2.2 mycat安装

  1. 下载安装包、并解压
    在这里插入图片描述
  2. 复制到/usr/local/目录下
    在这里插入图片描述
  3. 启动mycat
    在这里插入图片描述
  4. 连接mycat
    下面是连接测试:

在这里插入图片描述

2.3 测试

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值