一、HAProxy基础知识
(一)HAProxy概述
HAProxy是一款基于事件驱动、单进程模型设计的四层与七层负载均衡器,它能够在TCP/UDP层面以及HTTP(S)等应用层协议上实现高效的流量分发。HAProxy不仅适用于Web服务器负载均衡,还能应用于数据库、邮件服务器、缓存服务器等多种场景,支持高达数百万级别的并发连接,并具有极低的延迟。
(二)核心特性
高性能负载均衡: HAProxy通过优化的事件驱动引擎,能够以最小的系统资源开销处理大量并发请求。它支持多种负载均衡算法,如轮询、最少连接、源IP哈希等,可根据实际业务需求灵活配置。
健康检查与故障恢复: HAProxy具备完善的后端服务器健康检查机制,可以根据响应时间、错误率等因素自动剔除不健康的后端节点,并在节点恢复时重新将其加入到服务池中,确保服务连续性。
会话保持与亲和性: 为了保证用户的会话一致性,HAProxy支持基于cookie或源IP地址的会话保持功能,确保同一客户端的请求被转发到同一台后端服务器进行处理。
安全性与SSL卸载: HAProxy支持SSL/TLS加密传输,可对HTTPS流量进行解密并透明地分发至后端服务器,同时也能终止SSL连接以减轻服务器的加密计算压力。
高级路由与策略: 根据HTTP请求头、URL路径、内容类型等条件,HAProxy可以执行复杂的路由规则和ACL策略,使得负载均衡更加智能化和精准化。
日志记录与监控: HAProxy提供丰富的日志记录选项,可通过syslog、CSV格式输出等方式收集统计数据,便于运维人员实时监控系统状态和性能指标
(三)支持调度算法
官方文档:HAProxy version 2.4.15 - Configuration Manual
静态调度算法:不管后端,按照调度器的算法进行 分配
动态调度算法:会考虑后端服务器的负载情况
(1) roundrobin,表示简单的轮询 rr
(2) static-rr,表示根据权重
(3) leastconn,表示最少连接者先处理
( 4) source,表示根据请求源IP
(5) uri,表示根据请求的URI,做cdn需使用;
(6) url param,表示根据请求的URl参数' balance url param’requires an URL parameter name
(7) hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
(8) rdp-cookie (name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。
二、安装haproxy
(一)下载源码包
本地yum源的版本比较老旧,可以从官方下载较新版本的源码包进行编译安装
官方链接:HAProxy - The Reliable, High Perf. TCP/HTTP Load Balancer
将源码包解压后,可以看到,与之前的nginx、php等编译安装不同,它没有configure执行文件
configuse执行文件主要生成的是Makefile文件,解压完源码包后就已经生成了该文件。
可以查看INSTALL文件,查看如何安装
make clean
#清除之前编译过程中产生的目标文件和临时文件,确保从一个干净的状态开始新的编译过程。
make -j $(nproc) TARGET=linux-glibc USE_OPENSSL=1 USE_LUA=1 USE_PCRE=1 USE_SYSTEMD=1
-j $(nproc)
#使用系统的逻辑处理器数量同时进行编译,以加快编译速度。
TARGET=linux-glibc
#指定目标平台为基于glibc的Linux系统。
USE_OPENSSL=1
#启用OpenSSL库支持,使得软件可以利用OpenSSL提供的加密和安全功能。
USE_LUA=1
#启用Lua脚本语言支持,允许在软件中编写和运行Lua脚本来扩展功能。
USE_PCRE=1
#启用PCRE(Perl Compatible Regular Expressions)库支持,提供强大的正则表达式处理能力。
USE_SYSTEMD=1
#启用Systemd支持,使软件能够更好地与Systemd初始化系统集成,例如注册systemd服务等。
sudo make install
#完成编译后,使用管理员权限执行此命令将编译好的软件安装到系统预设的安装路径下。
在安装之前,需要解决依赖环境的问题
(二)解决依赖环境
1.安装编译环境
yum -y install gcc openssl-devel pcre-devel systemd-devel
<