快速掌握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 管控台了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/945099.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pytest基础01: 入门demo脚本

目录 1 Pytest接口测试 1.1 最简单版hello world 1.2 pytest.ini 2 pytest兼容unittest 3 封装pytest执行入口 1 Pytest接口测试 Pyest是一个可以用于接口测试的强大框架,开源社区也有非常多的pytest插件。 按江湖传统,学习一个新语言或者新框架&…

《HelloGitHub》第 105 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、…

Linux day 1129

家人们今天继续学习Linux,ok话不多说一起去看看吧 三.Linux常用命令 3.1 Linux命令体验 3.1.1 常用命令演示 在这一部分中,我们主要介绍几个常用的命令,让大家快速感 受以下 Linux 指令的操作方式。主要包含以下几个指令: ls命…

python爬虫爬抖音小店商品数据+数据可视化

爬虫代码 爬虫代码是我调用的数据接口,可能会过一段时间用不了,欢迎大家留言评论,我会不定时更新 import requests import time cookies {token: 5549EB98B15E411DA0BD05935C0F225F,tfstk: g1vopsc0sQ5SwD8TyEWSTmONZ3cA2u6CReedJ9QEgZ7byz…

hadoop搭建

前言 一般企业中不会使用master slave01 slave02来命名 vmware创建虚拟机 打开vmware软件,新建虚拟机 典型 稍后安装系统 选择centos7 虚拟机名称和安放位置自行选择(最小化安装消耗空间较少) 默认磁盘大小即可 自定义硬件 选择centos7的i…

基于深度学习(HyperLPR3框架)的中文车牌识别系统-python程序开发测试

本篇内容为python开发,通过一个python程序,测试搭建的开发环境,读入一张带有车牌号的图片,成功识别出车牌号。 1、通过PyCharm新建一个工程,如:PlateRecognition,配置虚拟环境。 2、在工程中新…

c# RSA加解密工具,.netRSA加解密工具

软件介绍 名称: c# RSA加解密工具,.netRSA加解密工具依赖.net版本: .net 8.0工具类型: WinForm源码下载 c# RSA加解密工具,.netRSA加解密工具 依赖项 WinFormsRSA.csproj <Project

Ubuntu20.04安装Foxit Reader 福昕阅读器

Ubuntu20.04安装Foxit Reader 福昕阅读器 文章目录 Ubuntu20.04安装Foxit Reader 福昕阅读器 先更新一下源 sudo apt update sudo apt upgrade下载Foxit Reader的稳定版本 wget https://cdn01.foxitsoftware.com/pub/foxit/reader/desktop/linux/2.x/2.4/en_us/FoxitReader.e…

HUB、交换机、路由器和串口服务器

HUB&#xff1a;HUB是集线器&#xff0c;支持半双工的工作模式&#xff0c;就像对讲机那样。工作在物理层&#xff0c;收到数据后&#xff0c;会向其他端口转发&#xff0c;只是起到“中转站的作用”&#xff1b;而且对带宽是共享的&#xff0c;像河流一样&#xff0c;分的支流…

基于微信小程序的校园访客登记系统

基于微信小程序的校园访客登记系统 功能列表 用户端功能 注册与登录 &#xff1a;支持用户通过手机号短信验证码注册和登录。个人资料管理 &#xff1a;允许用户编辑和更新个人信息及其密码。站内信消息通知&#xff1a;通知公告。来访预约&#xff1a;提交来访预约支持车牌…

苹果叶病害图像分类数据集5类别:健康苹果叶、灰斑病、铁锈病、马赛克病、蛙眼叶斑病

数据集下载 苹果叶病害图像分类数据集5类别&#xff1a;健康苹果叶、灰斑病、铁锈病、马赛克病、蛙眼叶斑病&#xff08;7100张图片&#xff09;:https://download.csdn.net/download/m0_64879847/90181747 数据集展示 健康苹果叶 灰斑病 马赛克病 铁锈病 蛙眼叶斑病

【日常开发】Git Stash使用技巧

文章目录 引言一、git stash 基础命令&#xff08;一&#xff09;存储当前工作区的修改&#xff08;二&#xff09;查看存储列表 二、查看存储的内容&#xff08;一&#xff09;查看特定存储的详细内容&#xff08;二&#xff09;查看特定存储修改的文件列表 三、恢复存储的修改…

超详细!一文搞定PID!嵌入式STM32-PID位置环和速度环

本文目录 一、知识点1. PID是什么&#xff1f;2. 积分限幅--用于限制无限累加的积分项3. 输出值限幅--用于任何pid的输出4. PID工程 二、各类PID1. 位置式PID&#xff08;用于位置环&#xff09;&#xff08;1&#xff09;公式&#xff08;2&#xff09;代码使用代码 2. 增量式…

数据库系统原理复习汇总

数据库系统原理复习汇总 一、数据库系统原理重点内容提纲 题型&#xff1a;主观题 1、简答题 第一章&#xff1a;数据库的基本概念&#xff1a;数据库、数据库管理系统、三级模式&#xff1b;两级映像、外码 第二章&#xff1a;什么是自然连接、等值连接&#xff1b; 第三…

【Spring】 Bean 注入 HttpServletRequest 能保证线程安全的原理

文章目录 前言1. 图示2. 源码坐标后记 前言 今天看了一段老业务代码&#xff0c;HttpServletRequest 被注入后直接用于业务逻辑。 好奇Spring是如何解决线程安全问题。 Controller public class TestController {ResourceHttpServletRequest request;ResponseBodyGetMapping(…

大数据面试笔试宝典之Flink面试

1.Flink 是如何支持批流一体的? F link 通过一个底层引擎同时支持流处理和批处理. 在流处理引擎之上,F link 有以下机制: 1)检查点机制和状态机制:用于实现容错、有状态的处理; 2)水印机制:用于实现事件时钟; 3)窗口和触发器:用于限制计算范围,并定义呈现结果的…

【Linux】进度条

本文中&#xff0c;我们来写一个进度条。 本文大纲&#xff1a; 写一个命令行版的进度条。 1.回车换行 2.缓冲区问题&#xff08;本文不深究&#xff09; ​ 2.1测试代码 3.写一个什么样的进度条&#xff1f; ​ version1 ​ version2 回车换行 这俩不是一个概念&…

React引入Echart水球图

在搭建React项目时候&#xff0c;遇到了Echart官方文档中没有的水球图&#xff0c;此时该如何配置并将它显示到项目中呢&#xff1f; 目录 一、拓展网站 二、安装 三、React中引入 1、在components文件夹下新建一个组件 2、在组件中引入 3、使用水波球组件 一、拓展网站 …

mysql三种读取模式(普通、流式、游标)

在与MySQL数据库交互时&#xff0c;数据的读取方式有多种选择&#xff0c;包括流式读取、游标读取和普通读取。每种方式都有其独特的原理、优势和劣势。本文将对这三种读取方式进行详细介绍&#xff0c; 1. 普通读取 介绍 普通读取是指通过JDBC的Statement或PreparedStateme…

【畅购商城】微信支付之支付模块

目录 支付页面 接口 后端实现 前端实现​​​​​​​ ​​​​​​​支付页面 步骤一&#xff1a;创建 flow3.vue组件 步骤二&#xff1a;引入第三方资源&#xff08;js、css&#xff09; <script> import TopNav from ../components/TopNav import Footer from …