目录
一、Haproxy
1.什么是Haproxy
HAProxy(High Availability Proxy)是一款开源、高性能的负载均衡器和代理服务器软件。它主要用于提升网站和应用程序的可扩展性、可靠性和性能,尤其在高流量环境下表现出色HAProxy通常用于分发流量到多个后端服务器,从而确保应用的高可用性和负载均衡
2.Haproxy的特性
1.可靠性和稳定性
HAProxy以其稳定性著称,可以与硬件负载均衡设备(如 F5)媲美,特别适合高并发、高可用
性需求的场景
2.高并发处理能力
最高可以同时处理40000-50000个并发连接,每秒处理最大20000个请求,最大吞量达到
10Gbps,非常适合大规模的 Web 服务和应用
3.多种负载均衡算法
支持多达8种负载均衡算法,如轮询、最小连接、源地址哈希等,还支持会话保持,确保来自同一客户端的请求可以持续调度到同一服务器,适合需要状态保持的应用
4.虚拟主机支持
支持虚拟主机功能,提供灵活的Web负载均衡,允许在单个HAProxy实例上为多个域名或应用服务
5.连接拒绝和全透明代理
支持连接拒绝功能,当特定条件满足时,可以直接拒绝请求,防止对后端资源的浪费
全透明代理允许客户端与后端服务器保持直接通信,前端代理仅用于转发请求,提升安全性和透明度6.强大的 ACL 支持
访问控制列表(ACL)功能可以灵活定义和应用,支持基于 IP 地址、请求头、路径等多种条件进行访问控制,提高系统的安全性
7.弹性二叉树数据结构
HAProxy使用了一种优化的弹性二叉树数据结构,其时间复杂度为0(1),即查找速度不会因为数据量增加而减慢,保证了高效的性能
8.Keepalive 功能
支持客户端的keepalive功能,减少了客户端和HAProxy之间的多次TCP握手,从而节省资
源,并允许多个请求在一个TCP连接中完成,提升效率
9.TCP加速和零复制(zero-copy)
支持TCP加速和零复制功能,类似于mmap机制,可以有效减少CPU开销,提升数据传输效率
10.响应缓冲池
支持响应缓冲池(response buffering),使得响应请求可以在返回客户端之前先缓冲,提升传
输稳定性
11.RDP 协议支持
支持RDP协议,适用于需要负载均衡远程桌面服务的场景
12.基于源的粘性
通过类似于Nginx的 ip hash 功能,实现基于源的粘性调度,将来自同一客户端的请求分配到
同一台后端服务器,确保负载均衡的同时保持连接一致性13.丰富的统计数据接口
提供强大的Web统计界面,显示后端集群中服务器的接收、发送、拒绝、错误等数据,便于监控和分析
14.健康状态检测
详细的健康检查,通过 Web 接口可以查看后端服务器的健康状态,支持多种健康检查策略,如HTTP 响应状态检测、TCP 连接检测等
15.基于流量的健康评估
基于流量进行健康评估,允许根据流量负载动态调整服务器的权重和调度方式
16.HTTP 认证
支持基于 HTTP 的认证机制,可以通过用户名和密码来限制访问
17.命令行管理接口
提供基于命令行的管理接口,可以实时对 HAProxy 进行操作和监控,方便集成到自动化运维工具中
18.日志分析器
提供日志分析功能,允许对系统日志进行详细分析,帮助诊断问题或优化性能
3.Haproxy负载均衡的策略(常见)
roundrobin-轮询
说明:轮询是最简单的负载均衡策略,它会依次将请求分发到每个服务器节点上。当所有服务器都收到一个请求后,轮询从头开始
适用场景:适用于后端服务器性能相近且没有特殊调度需求的场景
static-rr-静态权重轮询
说明:该策略基于服务器的权重进行轮询,权重较高的服务器会分配更多的请求。它可以有效利用服务器的不同处理能力进行调度
适用场景:适用于服务器性能差异较大、需要根据服务器的处理能力来分配负载的场景
leastconn-最少连接优先
说明:此策略将请求分配给当前活跃连接最少的服务器,确保新请求被分配到负载最小的服务器上
适用场景