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

快速掌握Haproxy原理架构

文章目录

  • 一、原理架构
  • 二、无负载均衡
  • 三、四层负载均衡的工作流程
  • 四、七层负载均衡工作流程
  • 五、基础属性
    • mode 属性
    • retries 属性
    • maxconn 属性
    • clitimeout 属性
    • servtimeout 属性
    • states uri 属性

一、原理架构

四层tcp代理:Haproxy仅在客户端和服务器之间双向转发流量,可用于邮件服务内部协议通信服务器、Mysql服务等;
七层应用代理:Haproxy会分析应用层协议,并且能通过运行、拒绝、交换、增加、修改或者删除请求(request)或者回应(reponse)里指定内容来控制协议。可用于HTTP代理或https代理。
在这里插入图片描述

二、无负载均衡

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

三、四层负载均衡的工作流程

在这里插入图片描述

  1. 客户机向负载均衡设备发送请求,源地址为客户机的IP地址,目的地址为整个集群的VIP地址
  2. 交换机转发客户机请求
  3. Lvs(可以是其他)负载均衡服务器利用自带的算法(rr 或者wlc)进行算法调度,将请求转发到后端的某一台真实的web服务器
  4. 请求报文的原地址仍然是客户机的IP地址,目的地址为集群的VIP地址,但Mac地址被LVS负载均衡服务器更改为后端的真实服务器MAC地址
  5. 后端的真实服务器发出相应,源地址为集群的VIP地址,目的地址为客户端IP地址,不通过LVS负载均衡服务器(报文仍然要经过交换机)直接与客户机发生联系,回应客户机发出的HTTP请求

四、七层负载均衡工作流程

在这里插入图片描述

  1. 客户机发出请求给负载均衡服务器,建立TCP连接,源地址为客户机IP地址,目的地址为集群的VIP地址
  2. Nginx(那Nginx举例)负载均衡设备利用自带的算法(wrr,ip_hash等)进行调度,建立TCP连接,将客户机的请求发送到后面的某一台真实的web服务器上面,此时源地址为客户机IP地址,目的地址为某一台真实服务器的IP地址
  3. Nginx负载均衡设备向后端的某台真实服务器发出请求
  4. 真实web服务器发出响应,此时源地址为真实服务器的IP地址,目的地址客户机的IP地址
  5. 报文经过Nginx七层负载均衡设备时,源地址被还原为集群VIP地址,目的地址为客户端IP地址
  6. 负载均衡服务器将结果发送给客户机

四层负载均衡设备的优势 面对大流量的冲击时,只是单方面经过四层设备,负担小,处理速度快,不容易成为网站或系统瓶颈。

七层负载均衡设备在分流的过程中能够对应用层协议进行深度识别,带来更精细划分,在加上HTTP协议,实现的功能会更多。四层负载均衡无法对七层业务实现按内容转发,限制了适用范围。

五、基础属性

要想在集群中使用 HaProxy 组件,就需要在将 HaProxy 组件安装完毕后,根据实际的业务场景去配置我们的 HaProxy 组件,以更好地服务于我们的集群环境。
那么,配置 HaProxy 都有哪些基础属性呢,下面就让我们来看一些在 HaProxy 组件中,最基础的配置属性。

mode 属性

该属性同时位于 defaults 配置项和 listen_rabbitmq_cluster 配置项下,其主要作用是用来声明我们当前 RabbitMQ 集群节点中,HaProxy 所采用的代理模式,我们可以根据我们的实际业务需要来选择采用哪种代理模式,支持采用 tcp 或 http 协议的代理模式。

retries 属性

该属性位于 defaults 配置项下,其主要作用是用来声明,RabbitMQ 集群中,HaProxy 在集群间通信的一个尝试次数,如果超过这个尝试次数,集群的某一节点没有返回响应,那么,HaProxy 就会认为该节点不可用。

maxconn 属性

该属性位于 defaults 配置项下,其主要作用是用来声明,当前节点中所允许接入到 HaProxy 中的最大连接数,这个最大连接数应该根据实际的业务场景去设置,不能设置的过大或过小,一般都被设置为 2000 。

clitimeout 属性

该属性位于 defaults 配置项下,其主要作用是用来声明,当前节点中客户端的一个空闲时间,单位为秒,如果客户端的空闲时间超过了这一约束,则 HaProxy 就会发起重连机制,重新连接集群各节点。

servtimeout 属性

该属性位于 defaults 配置项下,其主要作用是用来声明,当前节点所在服务器的一个连接超时时间,单位也为秒,如果我们连接服务器所消耗的时间超过了这一限制,那么 HaProxy 也会发起重连机制,重新连接集群各节点。

states uri 属性

该属性位于 listen stats 配置项下,其主要用来声明,在 HaProxy 组件中提供的集群监控 web 管控台的一个地址,往往会集合位于同一配置项下的 bind 属性来一起使用,通过bind 绑定访问 ip 和端口号,通过 states uri 来绑定访问路径,这样我们就可以使用这个地址来访问 HaProxy 提供的集群 web 管控台了。


http://www.kler.cn/a/452564.html

相关文章:

  • YOLOv9-0.1部分代码阅读笔记-benchmarks.py
  • rabbitmq相关使用
  • 编程语言的软件工程
  • Python爬虫(入门+进阶)
  • 面经zhenyq
  • C++模板:编译时模拟Duck Typing
  • Suno Api V4模型无水印开发「综合实战开发自己的音乐网站」 —— 「Suno Api系列」第14篇
  • Python基础——字符串
  • 地理数据库Telepg面试内容整理-解释什么是地理空间数据和普通数据的区别
  • C++模板:编译时模拟Duck Typing
  • Modbus数据网关在制造企业的应用与效果
  • 一文详解“递归“在算法中的应用
  • RAGFLOW使用笔记【更新ing】
  • C语言实现顺序表详解
  • FFmpeg音频解码详解
  • 最新版hadoop-3.4.0集群安装和配置(目前论坛的都是老古董了,看我的准没错!!!)这里以三台服务器为例
  • 计算机网络习题( 第3章 物理层 第4章 数据链路层 )
  • 机器学习系列(一)——K-近邻算法
  • leetcode hot100
  • 搭建vue3+vant项目架构
  • WPF的右键菜单项目引入DLL和DllImport特性引入DLL文件的异同点
  • Flutter 实现文本缩放学习
  • 机器人历史
  • 代理IP与科技创新:算力资源的灵活调度与高效利用
  • 前端bug调试
  • LSTM-SVM时序预测 | Matlab基于LSTM-SVM基于长短期记忆神经网络-支持向量机时间序列预测