HAProxy与负载均衡概念介绍

HAproxy 详解 HAproxy 是开源高性能负载均衡器和反向代理服务器,可用于 Web、数据库服务器负载均衡和 API 网关等场景,介绍了其轮询、加权轮询、源地址哈希等负载均衡算法和健康检查、故障转移等高可用性机制,还有后端服务器、SSL 终止或透传的配置方法、启动等常用命令、监控状态(如通过 Stats 页面、Prometheus 和 Grafana)及故障排查(查日志、后端服务器状态、网络、配置文件)思路。 阅读详情

提供:ZStack云计算

系列教程

本教程为利用HAProxy实现WordPress负载均衡四篇中的第一篇。

内容介绍

HAProxy的全称为高可用性代理,这是一套高人气开源软件TCP/HTTP负载均衡器,且可运行在Linux、Solaris以及FreeBSD。其能够将工作负载分发至多台服务器,从而提升服务器环境的性能与可靠性。众多高知名度环境皆使用HAProxy,其中包括GitHub、Imgur、Instagram以及Twitter。

在本教程中,我们将了解HAProxy的总体概述、基本负载均衡术语并通过示例掌握如何利用其改善服务器环境的性能与可靠性。

HAProxy术语

在探讨负载均衡与代理机制时,我们需要接触大量术语与概念。我们将通过以下各章节加以了解。

在讨论基础负载均衡类型之前,我们首先来看ACL、backend与frontend。

访问控制列表(ACL)

在负载均衡当中,ACL用于测试某些状况,并根据测试结果执行某些操作(例如选定一套服务器或者屏蔽某条请求)。

下面来看ACL示例:

acl url_blog path_beg /blog

如果用户请求的路径以/blog开头,则匹配这条ACL。举例来说,http://yourdomain.com/blog/blog-entry-1请求即符合这一条件。

要了解更为具体的AC使用方法,请参阅HAProxy配置指南。

Backend

所谓backend是指一组服务器,负责接收各转发请求。Backend在HAProxy配置中的backend部分进行定义。一般来讲,backend的定义主要包括:

  • 使用哪种负载均衡算法
  • 一套服务器与端口列表

一条backend能够容纳一套或者多套服务器——总体而言向backend中添加更多服务器将能够将负载扩散至更多服务器,从而增加潜在负载容量。这种方式也能够提升可靠性,从而应对部分后端服务器发生故障的情况。

下面来看一套双backend配置示例,分别为web-backend与blog-backend,其各自包含两套Web服务器,且监听端口80:

backend web-backend
balance roundrobin
server web1 web1.yourdomain.com:80 check
server web2 web2.yourdomain.com:80 check

backend blog-backend
   balance roundrobin
mode http
server blog1 blog1.yourdomain.com:80 check
server blog1 blog1.yourdomain.com:80 check

其中balance roundrobin行指定负载均衡算法,具体细节请参阅负载均衡算法部分。

mode http则指定所使用的7层代理机制,具体请参阅负载均衡类型部分。

其中结尾处的check选项指定在这些后端服务器上执行运行状态检查。

Frontend

一条frontend负责定义请求如何被转发至backend。Frontend在HAProxy配置中的frontend部分进行定义。其定义由以下几部分组成:

  • 一组IP地址与一个端口(例如10.1.1.7:80, *:443,等等)
  • ACL
  • use_backend规则,其负责根据当前ACL条件定义使用哪个backend,而default_backend规则处理一切其它情况

我们可以将同一frontend配置至多种不同网络流量类型,具体将在下一章节解释。

负载均衡类型

现在我们已经理解了负载均衡中的基本组件,下面了解负载均衡的基本类型。

无负载均衡

简单的无负载均衡Web应用环境可能如下所示:

在本示例中,用户会直接接入Web服务器,即yourdomain.com且其中不存在负载均衡机制。如果大家的单一Web服务器发生故障,用户将无法接入该服务器。另外,如果多位用户同时访问该服务器,且其无法处理该负载,则可能出现响应缓慢或者无法接入的情况。

4层负载均衡

最为简单的负载均衡方式,将网络流量引导至多台服务器以使用4层(即传输层)负载均衡。这种方式会根据IP范围与端口进行用户流量转发(如果有请求指向http://yourdomain.com/anything,则该流量将被转发至backend,并由其处理全部指向yourdomain.com在端口80上的请求)。了解更多细节信息,请参阅网络介绍一文中的TCP章节。

下图所示为4层负载均衡的简单示例:

用户访问负载均衡器,后者将用户请求转发至后端服务器的web-backend组。被选定的后端服务器将直接响应用户请求。总体而言,web-backend中的全部服务器都应当拥有同样的内容——否则用户可能会遭遇内容不一致问题。请注意,两套Web服务器都接入同样的数据库服务器。

7层负载均衡

另一种更为复杂的负载均衡方式,网络流量使用7层(即应用层)负载均衡。使用7层意味着负载均衡器能够根据用户的请求内容将请求转发至不同后端服务器。这种方式允许大家在同一域名及端口上运行多套Web应用服务器。欲了解更多细节,请参阅网络介绍一文中的HTTP章节。

下图为一套简单的7层负载均衡示例:

在本示例中,如果用户向yourdomain.com/blog发送请求,则会被转发至blog后端,其包含一组运行有同一blog应用的服务器。其它请求则会被转发至web-backend,其负责运行其它应用。本示例中的两套backend皆使用同样的数据库服务器。

下面来看本示例中frontend配置片段:

frontend http
  bind *:80
  mode http

  acl url_blog path_beg /blog
  use_backend blog-backend if url_blog

  default_backend web-backend

这部分片段配置一套名为http的frontend,其负责处理端口80上的所有输入流量。

acl url_blog path_beg /blog匹配那些用户请求路径以/blog开头的请求。

use_backend blog-backend if url_blog采用该ACL将流量代理至blog-backend。

default_backend web-backend指定全部其它流量被转发至web-backend。

负载均衡算法

负载均衡算法用于检测后端中的哪套服务器被负载均衡机制选定进行请求响应。HAProxy提供多种算法选项。除了负载均衡算法之外,我们还能够为服务器分配一个weight参数以指定该服务器被选定的频率。

由于HAProxy提供多种负载均衡算法,因此我们下面只提及其中的一部分。请参阅HAProxy配置指南一文以查看完整的算法列表。

下面来看几种常用算法:

roundrobin

Round Robin会对服务器进行轮流选定,亦为HAProxy的默认算法。

leastconn

选定连接数量最少的服务器——建议在周期较长的会话中使用这一算法。同一后端中的服务器亦会以轮循方式进行轮流选定。

source

其根据源IP(即用户IP地址)进行服务器选定。通过这种方式,我们可以确定同一用户接入同一服务器。

粘性会话

部分应用要求用户始终接入同一后端服务器,这一点需要利用粘性会话实现,其要求在backend中使用appsession参数。

运行状态检查

HAProxy利用运行状态检查来检测后端服务器是否可用于处理请求。通过这种方式,我们不必以手动方式撤下不可用的后端服务器。默认运行状态检查会与目标服务器建立一条TCP连接,即检查后端服务器是否在监听所配置的IP地址与端口。

如果某套服务器未能通过运行状态检查,并因此无法响应请求,则其会在后端中被自动禁用——意味着流量将不再被转发到该服务器处,直到其重新恢复正常。如果后端中的全部服务器皆发生故障,则服务将不再可用,直到至少一套后端服务器重新恢复正常。

对于特定后端类型,例如特定状态下的数据库服务器,默认运行状态检查可能无法正确识别其正常与否。

其它解决方案

如果大家认为HAProxy可能太过复杂,那么以下解决方案同样值得考虑:

  • Linux虚拟服务器(LVS) - 一套简单且快速的4层负载均衡器,多数Linux发行版都内置有这套方案。
  • Nginx - 一套快速且可靠的Web服务器,亦可用于代理及负载均衡。Nginx通常与HAProxy相结合以实现缓存及压缩功能。

高可用性

4层与7层负载均衡设置都会利用一套负载均衡机制将流量引导至多套后端服务器中的一套。不过,我们的负载均衡器在此类设置中亦会带来单点故障; 如果该系统发生故障或者被请求所压倒,则可能引发高延迟甚至服务停机。

高可用性设置是一套基础设施,其中不存在任何单点故障因素。它能够为架构中的每个层添加冗余机制,从而避免单点故障。负载均衡器能够为后端层(Web/应用服务器)提供冗余,但在真正的高可用性设置当中,大家需要为负载均衡器也提供冗余设计。

以下为基础高可用性设置示例:

在本示例中,大家在同一静态IP地址后拥有多套负载均衡器(其一为主动,另一或者多个则为被动),可在不同服务器间进行重新映射。当用户访问网站时,请求会通过外部IP地址指向主动负载均衡器。如果该负载均衡器发生故障,则故障转移机制会检测到问题并自动将该IP地址重新分配给被动服务器之一。我们可以通过多种方式实现这种主动/被动高可用性设置,详情请参阅如何使用Floating IP一文。

总结

现在大家已经对负载均衡机制有了基本了解,同时亦掌握了多种利用HAProxy满足负载均衡需求的方式。以此为基础,大家将能够着手对服务器环境的性能与可靠性加以有效提升。

本文来源自DigitalOcean Community。英文原文:An Introduction to HAProxy and Load Balancing Concepts By Mitchell Anicas

翻译:diradw

Haproxy搭建负载均衡 Haproxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。Haproxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理。Haproxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。默认 haproxy 的日志是输出到系统的 syslog 中,查看起来不是非常方便,为了更好的管理 haproxy 的日志,我们在生产环境中一般单独定义出来。 阅读详情

相关推荐

Haproxy(1)--概念及四层、七层负载均衡的介绍

1.Haproxy概念 是一个特别适用于高可用性环境的TCP/HTTP开源的 反向代理和负载均衡软件 在 七层负载均衡方面的功能很强大 (支持cookie track、header rewrite等等) 支持双机热备,支持虚拟主机,支持健康检查 同时还提供直观的监控页面,可以清晰的监控服务集群的运行状况 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理 HA...

qq_45594312的博客 975

HAProxy 简单介绍

编译安装完毕后。它的默认配置文件位置是源码包目录下的examples/option-http_proxy.cfg文件而在system管理文件中并没有加载此目录,而是指向了/etc/haproxy/haproxy.cfg,新建的文件,便于自定义信息。

wyq2070857323的博客 1689

centos7下安装gcc-10.3.0

生成多个系统版本的代码,如果你的操作系统是32位,默认就已经设置为 disable,这时gcc仅能生成32位的可执行程序;这里只开启了c,c++ 和fortran,因为支持的语言越多,就需要安装越多的相应静态与动态库,还有五花八门的依赖库,这会让管理变得困难,体积也会变得庞大。启用posix标准的线程支持,这个设置取决于宿主或目标操作系统的类型,其它可用值有:aix,dec,solaris,win32等,如果你是其它的类UNIX系统,就需要设置相应的值。指定安装路径,这里没有指定,就直接放到文件夹里就好。

lxystar2003的博客 1189

Haproxy 介绍与参数详解

haproxy的配置文件由两部分组成:全局设置和对代理的设定,共分为五段:globaldefaultsfrontendbackendlisten。global: 全局配置,主要用于定义全局参数,属于进程级的配置,通常和操作系统配置有关。default: 配置默认参数,这些参数可以被用到frontend,backend,Listen组件。frontend:接收请求的前端虚拟节点,frontend可以指定具体使用后端的backend。

白切鸡 PYTHON 3592

ESP32-CAM与Thonny的完美搭配:从烧录到通信的完整流程

本文详细介绍了如何将ESP32-CAM与Thonny IDE完美结合,从固件烧录到通信测试的完整流程。通过硬件连接、MicroPython固件烧录、Thonny环境配置以及摄像头功能开发等步骤,帮助开发者快速搭建高效的物联网开发环境,实现图像采集与无线通信功能。

tomato的博客 1128

10.2 在新能源、储能及电网节点的应用实践

构网型变流器技术在电力系统中的应用进展 构网型变流器技术正从理论研究走向规模化工程应用,为新能源并网提供主动支撑能力。该技术在光伏电站采用"部分构网"混合架构,由构网单元实现黑启动和弱网稳定;在风电场利用叶轮动能提供惯量响应。储能系统是理想的构网载体,可提供快速调频和动态电压支撑。在电网节点,构网型STATCOM可增强弱电网电压稳定性,大容量变流器可替代传统调相机。当前面临标准滞后、宽频振荡风险等共性挑战,需在可靠性、经济性间取得平衡。系统级协调控制和精确阻抗建模是应用成功的关键。

技术工作者 1114

haproxy

在公司生产环境中,系统的架构不会让用户直接访问服务端,中间至少经过一个或多个转发层(nginx,haoroxy,crtrix,F5)用户的IP经过层层转发后,还能传递到服务端,这就是IP透传。

2302_79158457的博客 1082

Kali Linux渗透测试:蚁剑(AntSword)三种安装方法与避坑指南

WebShell管理是渗透测试与网络安全攻防演练中的关键技术环节,它允许安全人员在获得初步访问权限后,对目标系统进行文件管理、命令执行和数据库操作等深度控制。其核心原理是通过在Web服务器上植入特定脚本,建立一条隐蔽的远程管理通道。在实战中,一个高效、稳定的WebShell管理工具能极大提升后渗透阶段的工作效率与成功率。蚁剑(AntSword)作为一款功能强大的国产开源工具,凭借其插件化架构和图形化界面,成为众多安全研究人员的首选。本文将聚焦于如何在渗透测试专用操作系统Kali Linux上部署蚁剑,详细对

weixin_34413103的博客 415

HAProxy和负载均衡概念介绍

导读系列 这篇导读是WordPress用HAProxy进行负载均衡系列4篇文章的第一篇 介绍 HAProxy,字面意思是高可靠性代理服务器,它是一款流行的开源的TCP/HTTP负载均衡和代理服务解决方案,可以运行在Linux,Solaris和FreeBSD上。最常见的应用是通过将负载分配到多个服务器上(例如,web, 应用,数据库)来提高服务器环境的性能和可靠性。 它现在被很多有影响的服务所

李子无为的杂货铺 4314

电源完整性分析:PDN阻抗与去耦电容设计——目标阻抗计算与电容选型深度实战

摘要:随着嵌入式处理器主频突破 GHz、多核架构普及,电源完整性(Power Integrity, PI)已成为高速 PCB 设计中不可忽视的关键环节。本文从 PDN(电源分配网络)阻抗模型出发,系统讲解目标阻抗计算方法、去耦电容选型策略、反谐振抑制技术,并结合 STM32F4 核心板的完整设计实例,提供一套可落地的电源完整性工程实践方案。电源完整性设计是一项系统工程,需要从目标阻抗计算电容选型反谐振抑制PCB 布局目标阻抗是设计的起点,由电源电压、纹波要求和瞬态电流决定去耦电容。

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 1万+

Fiori Elements 从入门到精通开发教程的文章目录

Fiori Elements 开发技术相对 SAP 其他历史悠久,发展成熟的开发技术来说,是一个新事物。正因如此,迄今为止国内深入讲解 Fiori Elements 应用的中文材料几乎没有。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4871

HAproxy负载均衡

负载均衡:Load Balance,简称LB,是一种服务或基于硬件设备等实现的高可用反向代理技术,负载均衡将特定的业务(web服务、网络流量等)分担给指定的一个或多个后端特定的服务器或设备,从而提高了公司业务的并发处理能力、保证了业务的高可用性、方便了业务后期的水平动态扩展阿里云SLB介绍 :https://yq.aliyun.com/articles/1803HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的一个开源软件。

m0_74028286的博客 1306

【RKNN】RKNN(Rockchip Neural Network)​​ 的详解

RKNN 为 Rockchip 硬件提供了高效的 AI 推理解决方案,适合需要低功耗、实时响应的边缘场景

浩瀚之水的专栏 1689

根据请求内容进行决策的负载均衡和反代软件 HAProxy(一)HAProyx的概念+四层、七层负载均衡的概念对比 + HAProxy的listen方式搭建+生成采集日志

文章目录根据请求内容进行决策的负载均衡和反代软件 HAProxy(一)HAProyx的概念+四层、七层负载均衡的概念对比 + HAProxy的listen方式搭建+生成采集日志1.Haproxy是什么2.负载均衡的区别四层负载均衡是什么七层负载均衡是什么七层负载均衡和四层负载的不同点3.HAProxy的配置listen配置同时实现前端和后端serevr1(反向代理服务器)中server2和serv...

qq_36275923的博客 297

SAP RAP 里的 EML 全解:从语言定位到事务语义,再到真实案例的落地方式

摘要:EML(Entity Manipulation Language)是ABAP RAP模型的核心组件,作为ABAP的子集用于操作业务对象(BO)。它通过声明式语法(READ/MODIFY/EXECUTE/COMMIT)统一访问BO的行为与数据,并由RAP运行时自动处理校验、锁定、草稿管理等生命周期。EML将业务语义融入代码,确保与Fiori应用共享同一套校验逻辑,并通过FAILED/REPORTED/MAPPED管道传递错误与消息。其事务控制(IN LOCAL MODE与COMMIT ENTITIES)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 528

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

haproxy算法与具体实现

负载均衡:Load Balance,简称LB,是一种服务或基于硬件设备等实现的高可用反向代理技术,负载均 衡将特定的业务(web服务、网络流量等)分担给指定的一个或多个后端特定的服务器或设备,从而提高了 公司业务的并发处理能力、保证了业务的高可用性、方便了业务后期的水平动态扩展。

K1487994142的博客 1269

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

LVS、Nginx与HAProxy负载均衡技术对比介绍

本文系统介绍了三种主流负载均衡技术:LVS集群(包含NAT/DR/TUN三种模式)、Keepalived高可用方案及Haproxy反向代理工具。对比分析了LVS(四层)、Nginx(七层)和Haproxy(混合层)在协议支持、性能指标(LVS可达百万级并发)、功能特性及适用场景(电商/Web/微服务等)的差异,并提供了关键配置示例。特别指出LVS结合Keepalived可实现高性能高可用集群,而Haproxy则更适合需要复杂路由策略的企业级应用。

m0_60035550的博客 1350

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Haproxy高性能负载均衡(天生的负载均衡器)

Haproxy高性能负载均衡(天生的负载均衡器)

sky学linux的博客 1097

HAProxy负载均衡

HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。HAProxy特别适用于那些负载特大的Web站点,这些站带你通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的Web服务器不被暴露到网络上。HAProxy实现了一种事件驱动,单一进程模型,此模型支持非常大的并发连接数。

qq_61507096的博客 568

haproxy安装&搭建http负载均衡

haproxy安装&搭建http负载均衡

qq_48619783的博客 416

Haproxy

HAProxy: 是法国人Willy Tarreau开发的一个开源软件,是一款应对客户端10000以上的同时连接的高性能的TCP和 HTTP负载均衡器。其功能是用来提供基于cookie的持久性, 基于内容的交换,过载保护的高级流量管制,自动故障切换 ,以正则表达式为基础的标题控制运行时间,基于Web的报表,高级日志记录以帮助排除故障的应用或网络及其他功能。static-rr--------->tcp/http 静态first------------->tcp/http 静态。

weixin_72104132的博客 1181

HAProxy 实验指南:从零开始搭建高可用负载均衡系统

HAProxy 作为一款高性能、功能丰富的开源负载均衡器,是构建高可用架构的核心组件。通过本次实验,我们不仅掌握了其基础配置,还深入实践了动态管理、安全策略和四层负载均衡等高级功能。HAProxy 的灵活性和稳定性使其成为企业级应用的理想选择,未来可通过持续学习其高级特性(如 ACL 规则优化、SSL 终止加速等)进一步提升技能水平。

2301_78538021的博客 924

企业实战(22)基于Haproxy负载均衡+Keepalived高可用集群实战详解

一、Haproxy概述  一种高效、可靠、免费的高可用及负载均衡软件,非常适合于高负载站点的七层数据请求。客户端通过Haproxy代理服务器获得站点页面,而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器,实现了一种事件驱动、单一进程模型,能支持非常大的并发连接数。 同一客户端访问服务器,Haproxy保持回话的三种方案: Haproxy将客户端ip进行Hash计算并保存,由此确保相同IP访问时被转发到同一真实服务器上。 Haproxy依靠真实服务器发送给客户端的cookie信息进

非著名运维的博客 697

HAproxy简介

1. 基本概念 一种高效、可靠、免费的高可用及负载均衡软件,非常适合于高负载站点的七层数据请求。客户端通过Haproxy代理服务器获得站点页面,而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器 实现了一种事件驱动、单一进程模型,能支持非常大的并发连接数 同一客户端访问服务器,Haproxy保持回话的三种方案: Haproxy将客户端ip进行Hash计算并保存,由此确保相同IP访问时被转发到同一真实服务器上。 Haproxy依靠真实服务器发送给客户端的cookie信息进行回

傅红雪的专栏 3509

haproxy原理及实验演示(实现服务器集群的负载均衡)

摘要:本文全面介绍了HAProxy负载均衡技术的原理、配置与实践。主要内容包括:1. 负载均衡概念与类型(四层/七层)对比;2. HAProxy安装与多进程/线程配置;3. 代理配置段详解(global、frontend、backend、listen);4. 多种调度算法(静态/动态)及应用场景;5. 高级功能(会话保持、IP透传、ACL访问控制);6. 四层负载与HTTPS实现方案。文章通过大量配置示例,展示了HAProxy在生产环境中的实际应用,包括Web负载均衡、MySQL代理等场景,同时提供了性能优

m0_66597009的博客 954
上一篇: 如何在Ubuntu 14.04上备份、恢复及迁移MongoDB数据库
下一篇: 如何在Ubuntu 14.04上利用HAProxy作为WordPress应用服务器的4层负载均衡器
普通网友
博客等级 码龄10年 769粉丝 269原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值