Haproxy搭建web群集

article/2025/7/16 1:34:30

目录

一:Haproxy

1.Haproxy常见的调度算法

二:环境案例

1.配置web主机

2.配置haproxy主机

3.Haproxy日志


一:Haproxy

Haproxy 是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如 LVS 和 Nginx。相比较而言,LVS 性能最好,但是搭建相对复杂;Nginx 的upstream 模块支持群集功能,但是对群集节点健康检查功能不强,高并发性能没有 Haproxy 好。Haproxy 官方网站是 http://www.haproxy.org/。

1.Haproxy常见的调度算法

HAProxy 常见的调度算法分为静态调度算法和动态调度算法,具体如下:

静态调度算法

  • static - rr:基于权重的轮询调度,不支持运行时权重动态调整,只支持权重为 0 和 1,也不支持后端服务器慢启动,其后端主机数量没有限制,相当于 LVS 中的 wrr
  • first:根据服务器在列表中的位置,自上而下进行调度。只有当第一台服务器的连接数达到上限,新请求才会分配给下一台服务器,会忽略服务器的权重设置,此方式使用较少。

动态调度算法

  • roundrobin:轮询动态调度算法,是 HAProxy 的默认调度算法。支持权重的运行时调整,还支持慢启动,即新加的服务器会逐渐增加转发数,每个后端 backend 中最多支持 4095 个 real server
  • leastconn:最少连接动态算法,支持权重的运行时调整和慢启动。该算法会将新客户端连接优先调度到当前连接最少的后端服务器,比较适合长连接场景,如 MySQL 等
  • source:基于用户源地址 hash 并将请求转发到后端服务器,默认为静态的取模方式,但可通过 hash - type 选项更改。后续同一个源地址请求将被转发至同一个后端 web 服务器,比较适用于 session 保持、缓存业务等场景。
  • uri:基于客户端请求的 URI 做 hash 计算,可通过 hash - type 指令指定使用 hash 取模算法还是 hash 一致性算法。适用于后端为 varnish 这样的缓存服务器,能让相同 URI 的请求始终发往同一台后端服务器。

二:环境案例

主机操作系统IP应用
web1open Euler192.168.10.102httpd
web2open Euler192.168.10.103httpd
haproxyopen Euler192.168.10.101haproxy

1.配置web主机

(1)在web1 web2 上创建测试网站

web1

web2

使用haproxy主机测试

2.配置haproxy主机

haproxy主机

(1)安装haproxy

(2)建立Haproxy的配置文件

Haproxy 配置项介绍:
Haproxy 配置文件通常分为三个部分,即 global、defaults 和 listen。
global 为全局配置,defaults 为默认配置,listen 为应用组件配置。

global 配置项通常有下面配置参数,以示例参数说明如下:

defaults 配置项配置默认参数,一般会被应用组件继承,如果在应用组件中没有特别声明,将按照默认配置参数设置。

listen配置项一般配置应用模块参数:

(3)测试web群集

使用浏览器访问haproxy主机

可以看到群集的负载均衡已生效,满足了群集的高性能需求

3.Haproxy日志

Haproxy 的日志默认输出到系统的 syslog 中,查看起来不是非常方便,为了更好地管理 Haproxy 的日志,在生产环境中一般单独定义出来,定义的方法如下所述

(1)修改 haproxy 配置文件,将原有的配置更改为以下配置:

(2)配置Rsyslog服务

创建 rsyslog 的 HAProxy 日志规则文件:

(3)重启 Rsyslog和 HAProxy 服务

(4)测试日志信息

在客户端访问 http://192.168.10.103/test.html后,可以使用 tail -f/var/log/haproxy.log 即时査看 Haproxy 的访问请求日志信息。

4.Haproxy的参数优化

参数参数说明优化建议
maxconn最大连接数此参数根据应用的实际使用情况进行调整,推荐使用10240,同时“defaults”中的最大连接数的值不能超过“global”段中的定义
daemon守护进程模式Haproxy可以使用非守护进程模式启动,生产环境建议使用守护进程模式启动
nbproc负载均衡的并发进程数建议与当前服务器CPU核数相等或为其2倍
retries重试次数此参数主要用于对群集节点的检查,如果节点多,且并发量大,设置为2次或3次:在服务器节点不多的情况下,可以设置5次或6次

option

http-server-close

主动关闭 http 请求选项建议在生产环境中使用此选项,避免由于timeout 时间设置过长导致http连接堆积

timeout

http-keep-alive

长连接超时时间此选项设置长连接超时时间,具体参考应用自身特点设置,可以设置为 10s
timeout http-requesthttp 请求超时时间建议将此时间设置为5~10s,增加http连接释放速度
timeout client客户端超时时间如果访问量过大,节点响应慢,可以将此时间设置短一些,建议设置为 1min 左右就可以ha


http://www.hkcw.cn/article/QtcMOoIfeq.shtml

相关文章

ansible自动化playbook简单实践

方法一:部分使用ansible 基于现有的nginx配置文件,定制部署nginx软件,将我们的知识进行整合 定制要求: 启动用户:nginx-test,uid是82,系统用户,不能登录 启动端口82 web项目根目录/…

一句话开发Chrome摸鱼插件

本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴。 CodeBuddy 一、CodeBuddy新功能特色 Craft智能体:自然语言驱动的全栈开发引擎Craft开发智能体的核心突破在于实现需求理解-任务拆解-代码生成的…

2024PLM系统实施案例:天水天轲零部件

一、行业背景与中小企业的现实挑战 汽车零部件行业竞争激烈,中小企业普遍面临研发周期长、数据管理混乱、供应链协同效率低等问题。天水天轲零部件作为一家年产值约700万元的小型制造企业,其痛点具有行业典型性: 研发数据分散&#xff1a…

Linux(8)——进程(控制篇——上)

目录 ​编辑 一、进程创建 1.fork函数的回顾 2.fork的返回值 3.写时拷贝 4.fork的常规用法 5.fork调用失败的原因 二、进程终止 1.进程退出的场景 2.进程常见的退出方法 3.进程退出码 4.进程正常退出 1)_exit函数 2)exit函数 3&#xff…

万亿小吃市场背后:冷链配送如何破解连锁门店“到店难题”?

在餐饮行业连锁化率突破23%、小吃快餐品类占据连锁门店半壁江山的今天,冷链配送已成为支撑品牌扩张的隐形基础设施。从田间到餐桌,从中央厨房到终端门店,冷链物流的每一次温度波动都直接关联着消费者的味蕾体验与品牌口碑。本文将解析冷链配送…

基于Java+MySQL 实现(Web)企业信息展示系统

基于java web企业信息展示系统设计和实现 摘要 随着企业经营环境的不断变化和竞争的口益加剧,企业经营管理水平的提高已成当务之急,人力资源管理作为企业管理中最重要的部分,其水平的高低已成企业发展的关键因素。随着计算机技术特别是互联…

11.2 java语言执行浅析3美团面试追魂七连问

美团面试追魂七连问:关于Object o New Object() ,1请解释一下对象的创建过程(半初始化) 2,加问DCL要不要volatile 问题(指令重排) 3.对象在内存中的存储布局(对象与数组的存储不同),4.对象头具体包括什么.5.对象怎么定位.6.对象怎么分配(栈-线程本地-Eden-Old)7.在…

SpringBoot+Vue+微信小程序校园自助打印系统

概述​​ 校园自助打印系统是现代化校园建设中不可或缺的一部分,基于SpringBootVue微信小程序开发的​​免费Java源码​​项目,包含完整的用户预约、打印店管理等功能模块。 ​​主要内容​​ ​​ 系统功能模块​​ ​​登录验证模块​​:…

特伦斯 S75 电钢琴:奏响极致音乐体验的华丽乐章

在音乐爱好者增多、音乐教育普及,以及科技进步的推动下,电钢琴市场蓬勃发展。其在技术、品质和应用场景上变化巨大,高端化、个性化产品受青睐,应用场景愈发多元。在此背景下,特伦斯 S75 电钢琴以卓越性能和独特设计&am…

OpenCV---pointPolygonTest

一、基本概念与用途 pointPolygonTest 是 OpenCV 中用于判断点与多边形关系的重要函数,常用于: 目标检测:判断像素点是否属于检测到的轮廓区域碰撞检测:检测物体是否重叠图像分割:确定点是否在分割区域内几何分析&am…

深入详解DICOMweb:WADO与STOW-RS的技术解析与实现

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C、C#等开发语言,熟悉Java常用开…

20250530-C#知识:万物之父Object

C#知识:万物之父Object Object类(即object)是所有类的基类,这里面的方法还是需要好好了解一下。 1、Object类 是顶级父类,其他类默认都是Object类的子类(自定义类也会默认继承Object类)可以用O…

ollama国内安装使用

解决国内下载慢和安装卡住问题 docker安装-优先推荐 https://hub.docker.com/r/ollama/ollama/tags docker pull ollama/ollama:latestGitHub 镜像加速 改安装脚本、使用 GitHub 镜像和文件加速服务 https://defagi.com/ai-case/ollama-installation-guide-china/ modelsco…

阻塞队列的学习以及模拟实现一个阻塞队列

前言 今天上午学习了阻塞队列。之前在数据结构的时候,学过队列。把队列放在多线程中,对队列会有新的体会。我自己也实现了一个阻塞队列结合生产消费模型,希望对于大家有帮助~ 阻塞队列的相关知识 结语 本次的分享就结束啦。端午安康~

深度学习赋能图像识别:技术、应用与展望

论文: 一、引言​ 1.1 研究背景与意义​ 在当今数字化时代,图像作为信息的重要载体,广泛存在于各个领域。图像识别技术旨在让计算机理解和识别图像内容,将图像中的对象、场景、行为等信息转化为计算机能够处理的符号或数据 &am…

如何通过一次需求评审,让项目效率提升50%?

想象一下,你的团队启动了一个新项目,但需求模糊不清,开发到一半才发现方向错了,返工、加班、客户投诉接踵而至……听起来像噩梦?一次完美的需求评审就能避免这一切!它就像项目的“导航仪”,确保…

粽叶飘香时 山水有相逢

粽叶飘香时 山水有相逢 尊敬的广大客户们: 五月初五,艾叶幽香。值此端午佳节,衡益科技全体同仁向您致以最诚挚的祝福! 这一年我们如同协同竞渡的龙舟,在数字化转型的浪潮中默契配合。每一次技术对接、每轮方案优化&a…

【PyTroch学习-001】从一个简单示例开始:手写数字识别

一、PyTroch简介 PyTorch 是由 Meta(原 Facebook)开发的开源深度学习框架,以动态计算图和易用性著称,广泛应用于计算机视觉、自然语言处理等领域。其核心特性包括: ​动态计算图​:支持运行时灵活调整计算…

备战2025全国青少年信息素养大赛省赛—图形化编程—每一练——打开密码锁

备战2025全国青少年信息素养大赛省赛—图形化编程—每一练——打开密码锁 题目可看下方去处,支持在线编程,在线获取源码和素材~ 打开密码锁_scratch_少儿编程题库学习中心-嗨信奥 题库收集了历届各白名单赛事真题和权威机构考级真题&#xf…

MPLS的基础配置

MPLS概念(AI) ‌MPLS(多协议标签交换)的工作原理是通过标签(Label)引导数据转发,将固定长度的短标签与数据分组封装,交换节点仅根据标签进行快速转发,从而提升网络传输效…