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

实战:使用 HAProxy 搭建高可用 Web 负载均衡集群

前言在现代企业级 Web 服务架构中负载均衡集群是保障系统高并发、高可用、可扩展的核心基础设施。当前开源领域主流的负载均衡调度工具主要包含 LVS、Nginx 与 HAProxy 三款三者在性能、配置复杂度、功能特性上存在明显差异。HAProxy 作为一款专注于负载均衡与代理的开源软件支持 TCP、HTTP (S) 等多种协议具备强大的健康检查、会话保持、流量调度能力且在高并发场景下性能表现优异配置灵活易用成为中小型企业搭建 Web 集群的首选方案。本文基于 openEuler 24.03 操作系统完整讲解HAProxyNginx搭建 Web 负载均衡集群的全流程包含环境规划、软件安装、核心配置、功能验证、日志配置、参数优化等关键环节贴合生产环境实战需求可直接用于企业落地部署。一、负载均衡核心理论基础1.1 主流负载均衡工具对比在搭建集群前需明确三款主流工具的核心差异选择适配业务的方案表格工具名称性能等级配置复杂度健康检查能力高并发支持核心适用场景LVS内核级最优高强极佳大型高并发流量入口Nginx应用级良好低较弱良好Web 服务、反向代理HAProxy应用级优秀中极强优秀负载均衡、API 网关HAProxy 官方站点http://www.haproxy.org/持续更新迭代社区活跃文档完善。1.2 HTTP 请求基础Web 集群基于 HTTP 协议提供服务HTTP 请求是流量调度的核心载体请求方式GET 请求参数拼接在 URL 中可见性高适合数据查询、页面访问POST 请求参数存储在请求体中安全性高适合表单提交、敏感数据传输。响应状态码2xx/3xx请求正常200 成功、301 重定向4xx/5xx请求异常404 资源不存在、500 服务器错误。1.3 负载均衡核心调度算法LVS、Nginx、HAProxy 通用三大调度算法决定流量分发规则表格算法缩写英文全称核心原理优势劣势适用场景RRRound Robin轮询分发请求依次分配至后端节点配置简单、公平分发不考虑节点性能差异节点性能一致、无会话要求LCLeast Connections分配至当前连接数最少的节点动态适配负载、利用率高配置略复杂长连接、动态负载场景SHSource Hashing基于源 IP 哈希固定分配节点实现会话保持易造成负载不均衡需要 Session 绑定的业务1.4 Web 集群调度器分类软件调度器开源免费灵活可定制代表为 LVS、HAProxy、Nginx硬件调度器性能强劲、稳定性高成本昂贵代表为 F5、梭子鱼、绿盟。二、实验环境规划2.1 集群拓扑结构本实验采用1 台 HAProxy 调度器 2 台 Nginx 后端节点的经典架构HAProxy 负责流量调度Nginx 节点提供 Web 服务实现负载均衡与故障转移。2.2 服务器配置清单所有节点均采用 openEuler 24.03 操作系统IP 规划与角色分工如下表格主机角色操作系统IP 地址部署软件核心职责Nginx 节点 1openEuler 24.03192.168.10.101Nginx 1.26.3提供 Web 服务Nginx 节点 2openEuler 24.03192.168.10.102Nginx 1.26.3提供 Web 服务HAProxy 调度器openEuler 24.03192.168.10.103HAProxy 2.9.5流量调度、健康检查2.3 实验核心目标完成两台 Nginx 后端节点的编译安装与测试完成 HAProxy 调度器的安装与负载均衡配置验证集群高性能负载均衡与高可用故障转移配置 HAProxy 独立日志系统便于运维排查完成生产环境核心参数优化。三、Nginx 后端节点部署两台 Nginx 节点操作完全一致仅测试页面内容不同以下为标准化部署流程。3.1 安装编译依赖Nginx 需源码编译提前安装依赖包dnf install -y gcc make pcre-devel zlib-devel openssl-devel perl-ExtUtils-MakeMaker git wget tar3.2 创建 Nginx 运行用户创建专用系统用户禁止登录提升安全性useradd -M -s /sbin/nologin nginx3.3 源码编译安装 Nginx解压源码包提前下载 nginx-1.26.3.tar.gztar zxf nginx-1.26.3.tar.gz cd nginx-1.26.3配置编译参数./configure --prefix/usr/local/nginx \ --usernginx --groupnginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-pcre编译并安装make make install3.4 Nginx 安装核心信息默认安装目录/usr/local/nginx默认 Web 根目录/usr/local/nginx/html默认监听端口80默认日志目录/usr/local/nginx/logs3.5 配置测试页面节点 1192.168.10.101echo Server 192.168.10.101 /usr/local/nginx/html/test.html节点 2192.168.10.102echo Server 192.168.10.102 /usr/local/nginx/html/test.html3.6 启动服务与防火墙配置启动 Nginx/usr/local/nginx/sbin/nginx关闭防火墙实验环境生产需开放 80 端口systemctl stop firewalld3.7 验证 Nginx 服务浏览器访问对应 IP 的 test.html 页面192.168.10.101/test.html 显示Server 192.168.10.101192.168.10.102/test.html 显示Server 192.168.10.102验证通过则 Nginx 节点部署完成。四、HAProxy 调度器部署HAProxy 采用 openEuler 官方源安装无需源码编译部署便捷。4.1 安装 HAProxy直接使用 dnf 包管理器安装dnf install haproxy -y4.2 HAProxy 配置文件结构HAProxy 核心配置文件为/etc/haproxy/haproxy.cfg分为三大模块global全局配置定义进程、日志、最大连接数等系统级参数defaults默认配置被所有应用模块继承定义超时、重试等通用参数listen应用模块配置定义监听端口、后端节点、调度算法、健康检查。4.3 核心配置文件修改编辑配置文件vim /etc/haproxy/haproxy.cfg替换为以下完整配置global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid user haproxy group haproxy daemon maxconn 4000 defaults mode http log global option httplog option dontlognull retries 3 timeout http-request 5s timeout queue 1m timeout connect 5s timeout client 1m timeout server 1m timeout http-keep-alive 5s timeout check 5s maxconn 3000 listen webcluster bind 0.0.0.0:80 option httpchk GET /index.html balance roundrobin server inst1 192.168.10.101:80 check inter 2000 fall 3 server inst2 192.168.10.102:80 check inter 2000 fall 34.4 核心配置参数详解表格配置项所属模块作用说明maxconn 4000global全局最大连接数限制总并发daemonglobal守护进程模式运行mode httpdefaults工作模式为 HTTP 代理retries 3defaults节点检查失败重试 3 次bind 0.0.0.0:80listen监听所有网卡 80 端口balance roundrobinlisten采用轮询调度算法check inter 2000listen健康检查间隔 2 秒fall 3listen连续 3 次失败标记节点下线option httpchklisten启用 HTTP 健康检查4.5 启动 HAProxy 服务systemctl start haproxy systemctl enable haproxy五、集群功能验证集群需满足 ** 高性能负载均衡与高可用故障转移** 两大核心特性以下为验证步骤。5.1 高性能负载均衡验证浏览器访问 HAProxy 调度器地址http://192.168.10.103/test.html第一次访问显示Server 192.168.10.101刷新页面显示Server 192.168.10.102持续刷新页面轮询显示两个节点标识证明 RR 轮询调度生效流量均匀分发。5.2 高可用故障转移验证模拟节点故障停止节点 2 的 Nginx 服务/usr/local/nginx/sbin/nginx -s stop持续访问 HAProxy 地址仅显示节点 1 内容无访问异常恢复节点 2 服务重新轮询分发同理停止节点 1集群仍正常提供服务。证明 HAProxy 健康检查生效故障节点自动隔离实现高可用。六、HAProxy 独立日志配置HAProxy 默认日志输出至系统 syslog不利于运维排查生产环境需配置独立日志。6.1 修改 HAProxy 日志配置编辑配置文件vim /etc/haproxy/haproxy.cfg修改 global 模块global log /dev/log local0 info # chroot /var/lib/haproxy6.2 配置 Rsyslog 日志规则创建 HAProxy 专用日志规则文件vim /etc/rsyslog.d/99-haproxy.conf添加内容local0.* /var/log/haproxy.log6.3 创建日志文件并授权# 创建日志文件 touch /var/log/haproxy.log # 设置权限 chmod 640 /var/log/haproxy.log # 归属用户组 chown root:adm /var/log/haproxy.log6.4 重启服务生效systemctl restart rsyslog systemctl restart haproxy6.5 实时查看日志tail -f /var/log/haproxy.log日志包含访问 IP、请求路径、响应状态、调度节点等信息可用于流量分析、故障排查。七、HAProxy 生产环境参数优化生产环境高并发场景下需调整核心参数提升性能以下为关键优化项表格参数名称配置模块作用生产优化建议maxconnglobal全局最大连接数10240根据服务器内存调整maxconndefaults默认最大连接数不超过 global 模块定义值daemonglobal守护进程模式必须开启后台运行nbprocglobal并发进程数与 CPU 核心数一致提升并发retriesdefaults节点重试次数5-6 次避免误判下线timeout checkdefaults检查超时时间2-3 秒快速识别故障节点interlisten健康检查间隔1000-2000ms平衡性能与实时性八、集群扩展与生产落地建议8.1 双机热备扩展单台 HAProxy 存在单点故障生产环境需结合Keepalived实现 HAProxy 双机热备配置虚拟 IPVIP主节点故障自动切换至备节点保障调度器高可用。8.2 调度算法选择无会话要求优先使用 RR 轮询配置简单长连接业务优先使用 LC 最小连接数负载更均匀会话绑定业务使用 SH 源地址哈希保证会话一致性。8.3 安全配置建议开启防火墙仅开放 80/443 端口配置 HTTPS提升数据传输安全限制 HAProxy 管理页面访问权限定期备份配置文件与日志。九、总结本文完整实现了HAProxyNginx高可用 Web 负载均衡集群的搭建覆盖从环境规划、软件部署、核心配置、功能验证到参数优化的全流程是企业生产环境落地的标准化方案。HAProxy 核心优势总结性能优异支持十万级并发连接健康检查机制完善自动故障转移高可用有保障支持多种调度算法适配各类业务场景配置简洁灵活运维成本低日志系统完善便于监控与排查

相关文章:

实战:使用 HAProxy 搭建高可用 Web 负载均衡集群

前言 在现代企业级 Web 服务架构中,负载均衡集群是保障系统高并发、高可用、可扩展的核心基础设施。当前开源领域主流的负载均衡调度工具主要包含 LVS、Nginx 与 HAProxy 三款,三者在性能、配置复杂度、功能特性上存在明显差异。HAProxy 作为一款专注于…...

矽力杰 SY8493 异步降压 DC/DC 调节器 规格书 佰祥电子

突破宽压输入适配复杂、大电流高效转换不足、小型化集成防护失衡!SY8493:60V 宽压输入 3A 大电流输出的五大核心优势宽压输入适配复杂、大电流高效转换不足、小型化集成防护失衡是通信设备、汽车系统、电动自行车供电领域的核心痛点。作为设备供电的核心…...

分子动力学数据分析入门:如何用MDAnalysis轻松处理模拟轨迹

分子动力学数据分析入门:如何用MDAnalysis轻松处理模拟轨迹 【免费下载链接】mdanalysis MDAnalysis is a Python library to analyze molecular dynamics simulations. 项目地址: https://gitcode.com/gh_mirrors/md/mdanalysis 你是否曾面对海量的分子动力…...

客服机器人自定义报表支持定时发送吗?智能 Agent + 邮件推送,能否自动生成运营日报?

在电商竞争日益激烈的今天,客服机器人已成为店铺运营的核心工具。很多商家每天都在纠结同一个问题:客服机器人自定义报表支持定时发送吗?智能Agent结合邮件推送,能否真正实现自动生成运营日报,让数据自动流转到运营团队…...

Ubuntu服务器远程桌面卡在640x480?别急着换软件,试试这个修改GRUB的终极方法

Ubuntu服务器远程桌面分辨率锁死?GRUB底层配置全解析 刚接手一台Ubuntu生产服务器时,我遇到了个诡异现象——无论用TeamViewer、向日葵还是RDP连接,分辨率永远卡在640x480。鼠标移动像在爬行,终端字体糊成一团,连查看日…...

运维(20) 使用Ventoy打造多系统U盘启动盘安装CentOS7

1. 为什么选择Ventoy打造多系统U盘启动盘 每次需要重装系统时翻箱倒柜找U盘的经历,相信很多运维同行都深有体会。传统制作启动盘的工具如Rufus、UltraISO虽然简单易用,但有个致命缺陷——一个U盘只能存放一个系统镜像。当需要切换不同操作系统时&#xf…...

别再只用Add和Remove了!C# ObservableCollection的CollectionChanged事件,这3个隐藏用法让你的WPF/MVVM项目更丝滑

解锁ObservableCollection的隐藏潜能:3个让WPF/MVVM项目性能翻倍的进阶技巧 在WPF开发中,ObservableCollection就像空气一样无处不在——它太基础了,以至于大多数开发者只停留在Add和Remove的简单使用上。但当你面对一个需要实时更新、包含数…...

3分钟掌握CREST:分子构象搜索的智能助手

3分钟掌握CREST:分子构象搜索的智能助手 【免费下载链接】crest CREST - A program for the automated exploration of low-energy molecular chemical space. 项目地址: https://gitcode.com/gh_mirrors/crest/crest 你是否曾为寻找分子的最佳三维结构而烦恼…...

Waydroid技术揭秘:在Linux原生环境中无缝运行Android应用的高性能容器方案

Waydroid技术揭秘:在Linux原生环境中无缝运行Android应用的高性能容器方案 【免费下载链接】waydroid Waydroid uses a container-based approach to boot a full Android system on a regular GNU/Linux system like Ubuntu. 项目地址: https://gitcode.com/gh_m…...

【AIGC工程化生死线】:为什么92%的生成式AI产品因热更新失败导致SLA跌破99.5%?

第一章:生成式AI应用模型热更新方案 2026奇点智能技术大会(https://ml-summit.org) 在生产环境中,生成式AI服务需支持毫秒级模型切换,避免请求中断或推理延迟突增。传统全量重启方式导致服务不可用窗口达数秒至分钟级,无法满足高…...

IgG1 F(c)重组兔单抗能否超越亚种屏障?

一、IgG1 F(c)重组兔单抗为何成为跨种抗体工程的典型范式?兔源单克隆抗体因其独特的抗原识别谱、极高的亲和力以及优越的酸稳定性,长期被视作免疫检测与诊断试剂开发的优势原材料。然而,兔抗体天然Fc段与人源免疫系统及效应细胞的兼容性存在显…...

写出爆款文案的四个实用方法

理解受众的真实需求爆款文案的核心不在于华丽辞藻,而在于精准触达读者内心。你需要先问自己:你的目标读者是谁?他们在什么场景下会看到这段文字?他们最关心的问题是什么?试着站在对方角度思考,而不是一味表…...

深入解析频率间隔、分辨率与采样密度的工程实践

1. 频率间隔、分辨率与采样密度的基础概念 第一次接触信号处理时,我被这三个概念绕得头晕:频率间隔、频率分辨率和采样密度。它们听起来很像,实际含义却大不相同。让我用最直白的语言帮你理清楚。 **频率间隔(ΔF)**就…...

IgG1 Fc片段能否独立实现免疫调控功能?

一、IgG1 Fc片段何以成为结构免疫学的独立研究对象?免疫球蛋白G1(IgG1) Fc片段系指经由蛋白酶水解或重组表达技术获得的抗体恒定区功能性结构域,其分子边界通常界定于铰链区上段至CH3结构域羧基末端。相较于全分子抗体&#xff0c…...

如何修改数据库实例名_ORACLE_SID环境变量重命名实战

改ORACLE_SID不等于重命名数据库,仅修改环境变量会导致实例启动失败;必须区分实例名(ORACLE_SID)与数据库名(DB_NAME),前者影响本地连接和进程标识,后者需重建控制文件或用DBNEWID修…...

华为P602E光猫GPON改EPON全流程避坑指南(附组播工具下载)

华为P602E光猫GPON转EPON实战手册:从零配置到网络优化 1. 设备基础准备与环境搭建 在开始操作前,确保你已准备好以下硬件和软件资源。一台运行Windows系统的电脑是必不可少的,因为我们将使用特定的组播工具进行操作。建议使用Windows 10或更高…...

国产化替代实战:在麒麟V10上部署人大金仓V8数据库的完整流程

国产化技术栈迁移实战:麒麟V10与人大金仓V8深度适配指南 在信息技术应用创新产业快速发展的背景下,国产基础软件的成熟度已显著提升。作为国产操作系统与数据库的典型组合,麒麟V10与人大金仓V8的协同部署正成为金融、政务等领域替代传统技术栈…...

软件测试自动化框架的设计实现与测试用例管理

软件测试自动化框架的设计实现与测试用例管理 随着软件开发的快速迭代,传统手工测试已难以满足效率与质量的双重需求。自动化测试框架的引入成为提升测试覆盖率、降低人力成本的关键。一个优秀的自动化框架不仅能高效执行测试用例,还能实现用例的灵活管…...

yuque-exporter:企业级文档迁移与备份解决方案

yuque-exporter:企业级文档迁移与备份解决方案 【免费下载链接】yuque-exporter export yuque to local markdown 项目地址: https://gitcode.com/gh_mirrors/yuq/yuque-exporter yuque-exporter 是一款基于 TypeScript 开发的语雀文档批量导出工具&#xff…...

深度复盘:从 M144 报错看浏览器指纹如何出卖了你的 1688 采购账号。

一、 跨境卖家的“黑色星期三”:M144 权限大地震 本周,大量跨境卖家反馈 Accio Work 插件出现 ERR_CONNECTION_REFUSED 或卡在 Connecting…。这不是简单的服务器波动,而是 Chrome M144 对浏览器扩展权限的一次“降维打击”。 Manifest V3 的…...

Go语言的时间处理

Go语言的时间处理 1. 时间处理的基础概念 1.1 时间的表示 时间是一种重要的数据类型,用于表示时刻和时间段Go语言使用time包处理时间相关操作时间处理在很多应用中都非常重要,如日志记录、定时任务、数据统计等 1.2 Go语言的时间类型 time.Time&…...

STM32光敏传感器实战:从硬件连接到智能控制

1. 光敏传感器与STM32的完美组合 光敏传感器可以说是嵌入式开发中最基础也最实用的环境感知器件之一。记得我第一次用STM32连接光敏传感器时,那种"让单片机感知光线变化"的体验简直让人兴奋。这种传感器本质上就是个会"看"的电子元件&#xff0…...

3个高效使用bilibili-api-python的进阶技巧:解决你的B站数据获取难题

3个高效使用bilibili-api-python的进阶技巧:解决你的B站数据获取难题 【免费下载链接】bilibili-api 哔哩哔哩常用API调用。支持视频、番剧、用户、频道、音频等功能。原仓库地址:https://github.com/MoyuScript/bilibili-api 项目地址: https://gitco…...

突破Linux无线网络困局:Realtek 8851BE驱动深度调优指南

突破Linux无线网络困局:Realtek 8851BE驱动深度调优指南 【免费下载链接】rtw89 Driver for Realtek 8852AE, an 802.11ax device 项目地址: https://gitcode.com/gh_mirrors/rt/rtw89 当Ubuntu 24.04 LTS遇见了Realtek 8851BE无线网卡,一场无声的…...

langchain AI应用框架研究【开发部署-篇四】

上篇 本篇主要简单了解一下开发不部署。后面继续langgraph 14 开发 14.1 LangSmith Studio 在本地使用 LangChain 构建智能体时,如果能可视化内部运作、实时交互并随时调试,那会非常有帮助。LangSmith Studio 就是一个免费的可视化界面,专…...

把数据中心“搬”到太空去——聊聊太空算力

先给一个最直白的定义:太空算力,就是把地面的数据中心“搬”到卫星上。卫星在天上完成数据采集、处理、存储和输出——不用再把数据传回地面,天上自己就能搞定。那天上到底有什么数据?要处理什么、输出什么?能源和散热…...

万字干货!Agent Skills从入门到精通

请点击输入图片描述(最多18字)大家好,我是冷逸。如果你要问我,2026年最值得学习的AI技能是什么?我会毫不犹豫地推荐Skills。无论是Claude Code,还是龙虾、爱马仕,几乎所有的Agent,如…...

机器学习之超参数是什么?

机器学习里的「超参数」,用最简单的话讲清楚 超参数 训练前由人手动设置、模型自己不会学的参数 1. 一句话区分 模型参数(参数): 模型在训练过程中自己学到的东西 比如:权重、系数、分割点 超参数(超参&…...

绝地求生压枪宏终极指南:5分钟实现零后坐力稳定射击

绝地求生压枪宏终极指南:5分钟实现零后坐力稳定射击 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为绝地求生中的武器后坐力而…...

PCB布局复制技术解析与Altium Designer实践

1. PCB布局复制的技术本质与行业价值在电子工程领域,PCB布局复制远非简单的"复制粘贴"操作。这项技术的核心在于通过算法驱动的智能匹配,实现电路板设计要素的精准迁移。我曾参与过多个采用该技术的项目,最深刻的体会是&#xff1a…...