Haproxy
一、Haproxy概述与调度算法原理
1.1 Haproxy概述
- Haproxy是一个使用C语言编写的自由及开放源代码的软件,其提供高可用性、负载均衡,并且是基于TCP和HTTP的应用程序代理
- 特别适用于负载大的Web站点,这些站点通常又会需要会话保持或七层处理。Haproxy运行在当前的硬件上,完全可以支持数以万计的并发连接,并且它的运行模式使得它可以很简单安全的整合进当前的架构中并同时保护当前Web服务器不被暴露到网络上
- Haproxy实现了一种事件驱动,单一进行模型,次模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为有更好的资源和时间管理的用户空间(User-Space)实现所有这些任务,所以没有这些问题的存在
- 此模型的缺点是当在多核系统上,这些程序通常扩展性较差。所以他们需先进行优化以使每个CPU时间片(Cycle)做更多的工作
1.2 Haproxy调度算法
- Haproxy支持多种调度算法,最常用的有三种
- RR(Round Robin)
- RR算法是最简单最常用的一种算法,即轮询调度
- LC(Least Connections)
- 最小连接数算法,根据后端的节点连接数大小动态分配前段请求
- 此算法相比RR算法有很大改进,也是目前用到比较多的一种算法
- SH(Source Hashing)
- 基于来源访问调度算法,用于一些有Session会话记录在服务器端的场景,可以基于来源的IP、Cookid等做集群调度
- 此调度算法好处是可以实现会话保持,但某些IP访问量非常大时会引起负载不均衡,导致部分节点访问量超大,影响业务使用
1.3 常见的Web集群调度器
- 目前常见的Web集群调度器分为软件和硬件
- 软件通常使用开源的LVS、Haproxy、Nginx
- LVS性能最好,但是搭建相对复杂
- Nginx的upstream模块支持群集功能,但是对群集节点健康检查功能不强,高并发性能也没有Haproxy好
- 硬件一般使用比较多的事F5,也有很多人使用国内的一些产品,比如梭子鱼、绿盟等
- 软件通常使用开源的LVS、Haproxy、Nginx
二、Haproxy应用分析与主要优点以及四层与七层负载均衡区别
2.1 应用分析
- LVS在企业应用中虽抗负载能力很强,但存在不支持正则处理,不能实现动静分离的不足。且对于大型网站,LVS的实施配置复杂,维护成本相对较高
- Haproxy是一款可提供高可用性、负载均衡、并且基于TCP和HTTP应用代理的软件。适用于负载大的Web站点,运行在硬件上可支持数以万计的并发连接的连接请求
2.2 Haproxy高性能负载均衡主要优点
- Haproxy可以对MySQL进行负载均衡,对后端的DB节点进行检测和负载均衡
- Haproxy支持虚拟主机,可以工作在4、7层
- Haproxy在负载均衡速度和并发处理上优于Nginx
- 能够补充Nginx的一些缺点,比如Session的保持、Cookie的引导等工作
- 支持url检测后端服务器的状态
- 支持很多均衡算法。例如:Round-robin(轮询)、Weight-round-robin(加权轮询)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)
2.3 四层与七层负载均衡区别
- 四层负载均衡器是通过分析IP层及TCP/UDP层的流量实现的基于“IP+端口”的负载均衡。主要通过报文的目标地址和端口配合负载均衡算法选择后端真实服务器,确定是否需要对报文进行修改(根据需求可能会修改目标地址、源地址、MAC地址等)并将数据转发至选出的后端真实服务器
- 七层负载均衡器是基于应用层信息(如URL、Cookies等)的负载均衡。主要依据报文的内容配合负载均衡算法选择后端真实服务器,然后再分发请求到真实服务器进行处理,也称“内容交换器”
- 客户端与负载均衡器、负载均衡器与后端真实服务器之间会分别建立TCP连接
三、Haprox集群搭建搭建
3.1 集群规划
- Haproxy:192.168.131.10
- Nginx1:192.168.131.11
- Nginx2:192.168.131.12
- 客户端(Win10):192.168.131.7
3.2 Haprox部署
- 编译安装
[root@localhost ~]# uname -r
3.10.0-693.el7.x86_64
[root@localhost ~]# yum -y install pcre-devel bzip2-devel gcc gcc-c++ make
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /opt/
[root@localhost opt]# rz -E
rz waiting to receive.
[root@localhost opt]# tar zxvf haproxy-1.5.19.tar

本文详细介绍了Haproxy的调度算法、优点、集群搭建、配置优化,以及与四层七层负载均衡的区别。重点讲解了如何配置haproxy以提高Web应用的性能和稳定性。
最低0.47元/天 解锁文章
1601





