目录
一、 Haproxy 概述
HAProxy(High Availability Proxy)是一款开源的高性能负载均衡与反向代理软件,主要用于分布式系统中分发客户端请求到多个后端服务器,以提高系统的可用性、扩展性和性能。它支持四层(TCP)和七层(HTTP/HTTPS)负载均衡,广泛应用于 Web 服务、数据库集群、消息队列等场景。
1. 核心功能
- 负载均衡:支持轮询、最少连接、IP 哈希、URI 哈希等多种算法,将流量均匀分配到后端节点。
- 反向代理:接收客户端请求并转发至后端服务器,隐藏服务器真实地址,提供统一访问入口。
- 健康检查:实时监控后端服务器状态,自动剔除故障节点,恢复后重新加入集群。
- 会话保持:通过 Cookie、URL 参数或 IP 绑定,确保同一客户端请求始终路由到同一后端节点。
- 流量管理:支持请求过滤、响应修改、HTTPS 卸载、TCP/UDP 协议处理等高级功能。
- 高可用性:支持主从热备(如配合 Keepalived),避免单点故障。
2. 应用场景
- Web 服务集群:分发 HTTP/HTTPS 请求到多台 Web 服务器(如 Nginx、Apache)。
- 数据库读写分离:将读请求分发到从库,写请求转发到主库。
- 微服务网关:作为 API 网关,路由请求到不同微服务实例。
- 流媒体与实时通信:处理 TCP 长连接(如 WebSocket、RTMP)。
- 缓存集群代理:连接 Redis、Memcached 等缓存服务,提升访问效率。
3.优势与特点
- 高性能:单节点可处理数百万级并发连接,内存占用低,适合高负载场景。
- 灵活性:同时支持四层和七层负载均衡,配置灵活,可通过 ACL(访问控制列表)实现复杂路由逻辑。
- 稳定性:在全球大型网站(如 GitHub、Spotify、Reddit)中久经考验,支持热重启而不中断连接。
- 轻量级:无需依赖复杂环境,可运行在资源有限的设备上(如嵌入式系统)。
- 生态丰富:支持与 Prometheus、Grafana 等监控工具集成,提供实时 metrics 数据。
3. 工作模式与架构
工作模式:
- 四层模式(TCP):基于 IP 和端口转发流量,不解析应用层协议,适合数据库、缓存等 TCP 服务。
- 七层模式(HTTP):解析 HTTP 请求头,支持 URI、域名、请求方法等维度的路由,适合 Web 服务。
基本架构:
- 前端(Frontend):定义监听的客户端入口,绑定 IP 和端口。
- 后端(Backend):定义后端服务器集群,配置负载均衡算法和健康检查规则。
- 会话处理:通过会话表(Session Table)管理客户端连接,实现会话保持。
二、 案例实施
1. 搭建 htppd 服务器
关闭防火墙
两台服务器安装http并准备测试网页
2. 编译安装 Haproxy
3. Haproxy 服务器配置
(1) 建立 Haproxy 的配置文件
以下为初始内容
(2) 修改haproxy.cfg配置文件
根据目前的群集设计,将 haproxy.cfg 配置文件的内容修改如下
4. 测试 Web 群集
宿主机访问
5. Haproxy日志
修改配置文件
[root@localhost ~]# vim /etc/haproxy/haproxy.cfg global #全局 log 127.0.0.1 local2 #日志/日志设备 log 127.0.0.1 local3 #添加新的日志设备 这个!!!!! chroot /var/lib/haproxy #限制haproxy运行时的路径 pidfile /var/run/haproxy.pid #pid文件 user haproxy #haproxy的程序用户 group haproxy #haproxy的程序组 daemon #守护进程 maxconn 4000 #最大连接数
创建日志路径
vim /etc/rsyslog.d/haproxy.conf #日志路径 $ModLoad imudp $UDPServerRun 514 local3.* /var/log/haproxy.log &~
重启生效
systemctl restart haproxy systemctl restart rsyslog
测试