目录
一、Haproxy概述
1、Haproxy概念
HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。HAProxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。
官网:https://www.haproxy.org/
2、Haproxy主要特性
可靠性和稳定性:HAProxy 具有极高的可靠性和稳定性,能够与硬件级的 F5 负载均衡设备相媲美。
高并发处理能力:
- 同时维护 40000-50000 个并发连接。
- 单位时间内处理的最大请求数为 20000 个。
- 最大处理能力可达 10 Gbps。
负载均衡算法:
- 支持多达 8 种负载均衡算法。
- 支持会话保持功能,确保同一会话始终分配到同一服务器。
虚拟主机支持:支持虚拟主机功能,实现更加灵活的 Web 负载均衡。
独特功能:
- 支持连接拒绝功能。
- 支持全透明代理。
ACL 支持:拥有强大的 ACL(访问控制列表)支持,用于细粒度的访问控制。
高效的数据结构:采用弹性二叉树数据结构,查找速度不随数据条目的增加而下降,查找复杂度为 O(1)。
客户端 Keepalive 支持:支持客户端的 Keepalive 功能,减少多次 TCP 三次握手带来的资源浪费,让多个请求在一个 TCP 连接中完成。
TCP 加速与零复制:支持 TCP 加速和零复制功能,类似于 mmap 机制,提升性能。
响应池支持:支持响应缓冲(response buffering),提高响应速度。
协议支持:支持 RDP 协议。
基于源的粘性:类似 Nginx 的 ip_hash 功能,将来自同一客户端的请求在一定时间内始终调度到同一服务器。
统计数据接口:提供完善的统计数据接口,Web 界面显示后端集群中各个服务器的接收、发送、拒绝、错误等统计信息。
健康状态检测:详细的健康状态检测,Web 界面提供上游服务器的健康检测状态,并具备一定的管理功能。
基于流量的健康评估:根据流量情况进行健康状态评估。
HTTP 认证:支持基于 HTTP 的认证机制。
命令行管理接口:提供强大的命令行管理接口,便于管理和配置。
日志分析器:内置日志分析器,可对日志进行详细分析。
3、Haproxy负载均衡均衡的策略
-
roundrobin:简单的轮询方式,将请求依次分配给后端服务器。
-
static-rr:基于权重的轮询,根据服务器权重分配请求。
-
leastconn:最少连接者优先,将请求分配给当前连接数最少的服务器。
-
source:基于请求源 IP,将来自同一 IP 的请求始终分配给同一台服务器,适合会话保持。
-
uri:基于请求的 URI 进行负载均衡,常用于 CDN 场景。
-
url_param:根据请求的 URL 参数进行负载均衡,需指定一个 URL 参数名称,如
balance url_param <name>
。 -
hdr(name):基于 HTTP 请求头进行负载均衡,每次 HTTP 请求都会根据指定的请求头值进行分配。
-
rdp-cookie(name):基于 RDP 协议中的 Cookie 进行负载均衡,通过哈希每次 TCP 请求中的指定 Cookie 值来锁定请求。
4、Haproxy、LVS、Nginx的区别
-
实现方式:LVS 基于 Linux 操作系统内核实现软负载均衡,而 HAProxy 和 Nginx 是