当前位置: 首页 > news >正文

负载均衡群集---Haproxy

目录

一、HAproxy

一、概念

二、核心作用

三、主要功能特性

四、应用场景

五、优势与特点

二、 案例分析

1. 案例概述

2. 案例前置知识点

(1)HTTP 请求

(2)负载均衡常用调度算法

(3)常见的 web 群集调度器

三、实验案例(HAproxy 搭建Web群集)


一、HAproxy

一、概念

HAProxy 是一款 开源、高性能的负载均衡与反向代理工具,基于 C 语言 开发,支持 四层(传输层) 和 七层(应用层) 流量处理,广泛用于高并发场景下的服务调度、流量分发和系统高可用性保障。

  • 核心定位:介于客户端和后端服务器之间的中间层,将客户端请求均匀分配到多个后端服务器,同时监控服务器状态,确保请求高效、可靠地处理。
  • 官网:www.haproxy.org
二、核心作用
  1. 负载均衡(Load Balancing)
    • 将客户端请求按预设算法(如轮询、最少连接、源 IP 哈希等)分发到多个后端服务器,避免单点压力过大,提升系统吞吐量。
  2. 高可用性(High Availability)
    • 通过 健康检查(如定期发送心跳包)实时监测后端服务器状态,自动隔离故障节点,待节点恢复后重新纳入负载均衡池,保障服务连续性。
  3. 会话保持(Session Persistence)
    • 基于 Cookie、源 IP 或请求头 等信息,将同一用户的请求固定路由到同一后端服务器,确保会话状态一致(如登录用户的请求始终由同一服务器处理)。
  4. 协议处理与转发
    • 四层代理:处理 TCP/UDP 流量,基于 IP + 端口转发(如数据库、Redis 服务)。
    • 七层代理:解析 HTTP/HTTPS 协议,基于 URL、Header、Cookie 等应用层信息精细化路由(如 Web 服务、API 网关)。
  5. 流量优化与安全
    • 支持 HTTP 压缩、SSL 卸载(HTTPS 解密)、请求缓存,减少服务器负载;
    • 提供基本的 ACL(访问控制列表),阻挡恶意流量(如限制特定 IP 访问)。
三、主要功能特性
特性说明
多模式支持- TCP 模式(四层):适用于任意基于连接的协议(如 MySQL、MQ);
- HTTP 模式(七层):支持 HTTP/HTTPS 协议解析与处理。
负载均衡算法支持轮询(Round Robin)、最少连接(Least Connections)、源 IP 哈希(Source Hash)、URI 哈希等多种算法。
健康检查机制支持 HTTP/HTTPS、TCP、ICMP 等协议的健康检查,可自定义检查频率、超时时间。
动态配置与热更新支持通过配置文件或 API 动态调整后端服务器列表,无需重启服务即可生效。
监控与统计内置 stats 页面,实时展示请求量、错误率、服务器状态等指标,便于运维监控。
连接管理优化支持连接复用(Keep-Alive)、连接队列管理,减少 TCP 三次握手开销,提升并发性能。
四、应用场景
  1. Web 服务负载均衡
    • 作为 Web 服务器(如 Nginx、Tomcat)的前端代理,按 URL 路径、用户地域等规则分流请求。
  2. API 网关与微服务架构
    • 在微服务架构中,对 API 请求进行路由、流量控制和熔断处理,保障服务稳定性。
  3. TCP 协议服务代理
    • 为数据库(如 MySQL、PostgreSQL)、消息队列(如 Kafka、RabbitMQ)提供四层负载均衡,提升连接效率。
  4. 混合架构中的中间层
    • 常与 LVS(四层负载均衡) 结合使用:LVS 作为流量入口进行初步分发,HAProxy 作为二级代理进行七层精细化处理。
五、优势与特点
  • 高性能:单台服务器可支持数万并发连接,吞吐量接近硬件负载均衡器(如 F5)。
  • 轻量级与灵活性:配置简单,支持复杂路由逻辑,适合中小规模集群和复杂业务场景。
  • 稳定性:在金融、电商等对可用性要求高的行业中广泛使用(如 GitHub、Spotify 等)。
  • 开源免费:社区活跃,文档丰富,支持二次开发。

典型架构 :

客户端 <----> HAProxy(负载均衡与代理) <----> 后端服务器集群(Web/API/数据库)↑└── 健康检查 & 动态调度

二、 案例分析

1. 案例概述

HAproxy 是目前比较流行的群集调度工具,同类群集调度有很多,如LVS和Nginx.

LVS性能最好,但部署复杂;Nginx的upstream 模块支持群集功能但对群集节点健康检查功能不强,高并发性能没有HAproxy好。

2. 案例前置知识点

(1)HTTP 请求

通过 URL 访问网站使用协议是HTTP协议,称为HTTP请求。

请求方式常见为GET和POST方式。当访问时,会根据请求URL返回状态码。

关键步骤

  1. 客户端发送 HTTP 请求(方法 + URL + Headers + Body)

  2. 负载均衡器根据调度算法选择后端节点

  3. Web 服务器解析请求,访问缓存/数据库

  4. 生成响应(状态码 + Headers + HTML/JSON)

(2)负载均衡常用调度算法

算法原理适用场景案例选择
轮询 (RR)按序分配请求服务器性能均衡静态资源分发
加权轮询 (WRR)根据权重分配请求服务器性能差异大Web 服务器集群
最小连接 (LC)优先选择当前连接数最少的节点长连接服务(如数据库)Redis 访问
IP 哈希 (SH)相同 IP 固定分配到同一节点需要会话保持的场景用户购物车

(3)常见的 web 群集调度器

类型代表工具工作层级案例应用特点
四层调度器LVS传输层入口流量分发高性能,支持百万并发
七层调度器Nginx应用层HTTP/HTTPS 请求处理支持 URL 重写、SSL 卸载
云原生调度Kubernetes Ingress应用层容器化环境自动扩缩容,服务发现

三、实验案例(HAproxy 搭建Web群集)

境:Web:102 103   代理服务器:101

部署 :

#web部署
102 103:
dnf -y install httpd
systemctl stop firewalld
systemctl distable firewalld
setenforce 0101:
echo "test2">/var/www/html/index.html
102:
echo "test3">/var/www/html/index.htmlsystemctl restart httpd
systemctl enable httpd
#HA代理部署
-测试网站 curl 192.168.10.102/103
-安装haproxy
dnf -y install haproxy#日志文件  /var/log/messages-配置文件
vim /etc/haproxy/haproxy.cfg
====================================
globallog         127.0.0.1 local2chroot      /var/lib/haproxy   //禁锢目录pidfile     /var/run/haproxy.pid    //pid文件,运行时生成user        haproxy    //用户group       haproxy     //用户组daemon       //守护进程maxconn     4000   //最大连接数defaults     //默认模式,决定haproxy工作在哪一层mode                    httplog                     global   //日志记录为全局模式option                  httplog   //开启 HTTP 格式的日志记录option                  dontlognull   //不记录空值相关的日志retries                 3     //默认重试次数timeout http-request    5s   // HTTP 请求超时时间timeout queue           1m     //等待时间timeout connect         5s     //规定连接建立的超时时间timeout client          1m		//客户端连接的超时时间timeout server          1m		//服务器端连接的超时时间timeout http-keep-alive 5s   	//持久连接超时时间timeout check           5s    //检查的超时时间maxconn                 3000   //最大并发连接数#删除defaults下面内容
配置新内容------
listen myweb   bind 0.0.0.0:80   //监听所有网卡的80端口(haproxy 的端口取决于监听的服务端口是多少它就是多少)option httpchk GET /index.html  //通过发送请求到服务器来进行健康检查balance roundrobin //负载均衡算法 为 轮询算法server inst1 192.168.10.102:80 check inter 2000 fall 3   //用于服务器相关配置或监测server inst2 192.168.10.103:80 check inter 2000 fall 3 #启动服务
systemctl start haproxy
#HA proxy 日志(默认在系统syslog日志中,不方便,单独定义出来)
配置文件
vim /etc/haproxy/haproxy.cfg
globallog     127.0.0.1 local2log   	127.0.0.1 local3配置Rsyslog服务
vim /etc/rsyslog.d/haproxy.conf     //添加一个日志服务的配置文件
$ModLoad imudp
$UDPServerRun 514
local3.*/var/log/haproxy.log
&~      //标注参数的结束重启
systemctl restart haproxy
systemctl restart rsyslog测试日志信息
cat  /var/log/haproxy.log
tail -f /var/log/haproxy.log   (自动生成,重新访问网站会生成)会显示日志信息

相关文章:

  • 历年南京理工大学计算机保研上机真题
  • JavaScript中的命名导出(暴露)
  • 事件驱动架构入门
  • PHP学习笔记(十一)
  • pikachu通关教程-CSRF XSS
  • 工厂方法模式(Factory Method)深度解析:从原理到实战优化
  • 智能教育个性化学习路径规划系统实战指南
  • mongodb集群之分片集群
  • vscode中让文件夹一直保持展开不折叠
  • 1. pytorch手写数字预测
  • 数据结构与算法之Josephu(约瑟夫环问题)
  • 预处理深入详解:预定义符号、宏、命名约定、命令行定义、条件编译、头文件的包含
  • JavaScript 性能优化实战研讨
  • 吴恩达MCP课程(1):chat_bot
  • 【仿生机器人】仿生机器人系统架构设计2.0——具备可执行性
  • 【仿生机器人系统设计】涉及到的伦理与安全问题
  • 京东热点缓存探测系统JDhotkey架构剖析
  • Python的Web框架
  • Linux分区与文件系统选择:EXT4与XFS深度解析
  • MCU STM32搭配存储SD NAND(贴片式T卡)于智能皮电手环(Galvanic Skin Response, GSR 手环)的全方位评测
  • 英孚做测试的网站/今日热点新闻事件及评论
  • 的建站公司/搜索引擎优化seo公司
  • 鹤壁做网站/设计网页的软件
  • 游戏开发和网站开发/b2c有哪些电商平台
  • 厦门网站建设seo/完善的seo网站
  • 为公司制作网站/网络推广策划案