【云原生】看一眼haproxy,秒变技术大佬(理论篇)

news2024/11/26 2:42:04

一、负载均衡

1、什么是负载均衡?

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

阿里云SLB介绍:https://yg.aliyun.com/articles/1803

2、为什么用负载均衡

  • Web服务器的动态水平扩展-->对用户无感知
  • 增加业务并发访问及处理能力-->解决单服务器瓶颈问题
  • 节约公网IP地址-->降低IT支出成本
  • 隐藏内部服务器IP-->提高内部服务器安全性
  • 配置简单-->固定格式的配置文件
  • 功能丰富-->支持四层和七层,支持动态下线主机
  • 性能较强-->并发数万甚至数十万 

3、负载均衡类型

3.1 硬件:

F5美国F5网络公司https://f5.com/zh
Netscalerhttps美国思杰公司https://www.citrix.com.cn/products/citrix-adc/
Array华耀https://www.arraynetworks.com.cn/
AD-1000深信服http://www.sangfor.com.cn/

3.2 四层负载均衡 

(1)通过ip+port决定负载均衡的去向

(2)对流量请求进行NAT处理,转发至后台服务器

(3)记录tcp、udp流量分别是由哪台服务器处理,后续该请求连接的流量都通过该服务器处理

(4)支持四层的软件

  • lvs:重量级四层负载均衡器
  • Nginx:轻量级四层负载均衡器,可缓存。(nginx四层是通过upstream模块)
  • Haproxy:模拟四层转发

3.2 七层负载均衡 

(1)通过虚拟ur|或主机ip进行流量识别,根据应用层信息进行解析,决定是否需要进行负载均衡。

(2)代理后台服务器与客户端建立连接,如nginx可代理前后端,与前端客户端tcp连接,与后端服务器建立tcp连接

(3)支持7层代理的软件:

  • Nginx:基于http协议(nginx七层是通过proxy_pass)
  • Haproxy:七层代理,会话保持、标记、路径转移等

3.3 四层和七层的区别

所谓的四到七层负载均衡,就是在对后台的服务器进行负载均衡时,依据四层的信息或七层的信息来决定怎么样转发流量

四层的负载均衡,就是通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理

七层的负载均衡,就是在四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。

(1)分层位置:四层负载均衡在传输层及以下,七层负载均衡在应用层及以下

(2)性能 :四层负载均衡架构无需解析报文消息内容,在网络吞吐量与处理能力上较高:七层可支持解析应用层报文消息内容,识别URL、Cookie、HTTP header等信息。

(3)原理 :四层负载均衡是基于ip+port;七层是基于虚拟的URL或主机IP等。

(4)功能类比:四层负载均衡类似于路由器;七层类似于代理服务器。

(5)安全性:四层负载均衡无法识别DDoS攻击;七层可防御SYN Cookie/Flood攻击

4、haproxy简介

HAProxy是法国开发者 威利塔罗(Willy Tarreau)在2000年使用C语言开发的一个开源软件是一款具备高并发(万级以上)、高性能的TCP和HTTP负载均衡器

支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计

企业版网站:https://www.haproxy.com

社区版网站:http://www.haproxy.org

github: https://github.com/haprox

企业版本和社区版功能对比 :

功能社区版企业版
高级HTTP/TCP负载平衡和持久性支持支持
高级健康检查支持支持
应用程序加速支持支持
高级安全特性支持支持
高级管理支持支持
HAProxy Dev Branch新功能支持
24*7 支持服务支持
实时仪表盘支持
VRRP和Route Health Injection HA工具支持
ACL,映射和TLS票证密钥同步支持
基于应用程序的高级DDoS和Bot保护(自动保护)支持
Bot(机器人)监测支持
Web应用防火墙支持
HTTP协议验证支持
实时集群追踪

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Secure CRT 9.x版本高亮着色配置文件

Secure CRT的网络配置文件高亮显示,还在完善,逐渐适配不同厂商 设备名字自动蓝色高亮显示设备接口名高亮显示IPv4地址、IPv6地址、MAC地址高亮显示掩码、反掩码高亮显示设备SN号高亮显示接口状态、设备状态等高亮显示各路由协议高亮显示 【下载地址】效果…

基于Spring Boot的疗养院管理系统的设计与实现

TOC springboot234基于Spring Boot的疗养院管理系统的设计与实现 第1章 绪论 1.1选题动因 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。…

输出Docker容器的启动命令行脚本

当Docker容器启动后,如果忘记启动参数,比如目录挂载、端口映射等,可以通过Portainer等容器管理工具查看。但是,有时希望能获取容器启动的命令行,因为需要再启动一个类似容器,怎么办呢? 有一款工…

【Python养成】:输出两个等腰三角形且平行方向

项目场景: 遇到一个小小的高中小程序题目,有趣就做 了一下,供大家参考。 问题描述 要求使用python编程,实现如下图形。 原因分析: 其实就是 找规律和找空格。先左边后右边。具体解释可以找AI。太简单了没必要亲自讲解…

Linux 7 x86平台上安装达梦8数据库

1、环境描述 2、安装前准备 2.1 操作系统信息调研 Linux平台需要通过命令查看操作系统版本、位数、磁盘空间、内存等信息。 CPU信息 [rootray1 ~]# cat /proc/cpuinfo | grep -E "physical id|core id|cpu cores|siblings|cpu MHz|model name|cache size"|tail -n…

【PY模型训练】最终测试

Anacoda3 安装 1. conda -V 2.conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/ 3.打开.condarc文件,将下面内容直接放入.condarc文件里面 channels: - conda-forge - defaults show_channel_urls: true default_ch…

【Qt】 QWidget的cursor属性

QWidget的cursor属性 cursor属性可以设置当鼠标指向不同控件,不同窗口会产生不同的效果。 API说明 cursor() 获取到当前 widget 的 cursor 属性, 返回 QCursor 对象. 当⿏标悬停在该 widget 上时, 就会显⽰出对应的形状. setCursor(const QCursor& cursor) …

CSS——less

一、less简介 1、less是一门css的预处理语言。是一个css的增强版,通过less可以编写更少的代码实现更强大的样式。 2、css原先也只支持变量的设置。 变量的设置可以便捷更改一样的样式,其中,calc()是计算函数。 3、在le…

【6大设计原则】精通设计模式之里氏代换原则:从理论到实践,掌握代码演化的黄金法则

一、引言 1.1 设计模式的必要性 在软件开发的复杂性面前,设计模式提供了一套成熟的解决方案,它们是经过多年实践总结出来的,能够帮助我们应对各种编程难题。设计模式不仅仅是一种编程技巧,更是一种编程哲学,它能够提…

CSS——动画(animation)

一、过渡(transition) 1、通过过渡可以指定一个属性发生变化时的切换方式 2、通过过渡可以创建一些非常好的效果,提升用户体验 3、常用属性值 ① transition-property 指定要执行过渡的属性 多个属性间使用,隔开如果所有…

Ubuntu24.04搭建maxkb开发环境

接上文:windows10搭建maxkb开发环境(劝退指南) 上文在windows10环境搭建maxkb开发环境遇到各种坑,后面就转战ubuntu平台,果然比较顺利的完成开发环境搭建。当然遇到相关的问题还是可以参考上文《windows10搭建maxkb开发…

数据库根据日期统计SQL编写记录

统计每天产生多少数据 SELECT to_char("日期字段",YYYY-MM-dd) time ,count(*) FROM "表名" GROUP BY time;统计每月产生多少数据 SELECT to_char("日期字段",YYYY-MM) time ,count(*) FROM "表名" GROUP BY time;统计每年产生多少数…

unity游戏开发005:资源的导入

“君子之学,无时无处而不以立志为事” unity游戏开发 前言文章有误敬请斧正 不胜感恩!||unity游戏开发005 Unity资源导入指南一、资源的种类二、资源导入的基本步骤三、导入资源的设置四、导入资源的注意事项五、常见问题及解决方案六、总结 前言 昨天我…

大数据技术——实战项目:广告数仓(第八部分)FineBI实战

目录 第1章 FineBI概述 第2章 FineBI部署 第3章 FineBI实战 3.1 需求回顾 3.2 添加Clickhouse驱动 3.3 添加Clickhouse数据库连接 3.4 添加数据集 3.5 创建分析主题并选择数据集 3.6 加工数据 3.7 创建可视化组件 3.7.1 地图可视化组件 3.7.2 投放平台流量柱状图…

【C语言篇】深入理解指针4(模拟实现qsort函数)

文章目录 回调函数是什么qsort函数介绍和使用举例qsort函数介绍qsort函数排序整型数据使用qsort排序结构数据 qsort函数的模拟实现总结写在最后 回调函数是什么 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针(地址)作为参数传递给另⼀…

豆包MarsCode:开启AI辅助编程的新时代

文章目录 引言MarsCode简介主要功能安装步骤JetBrains 安装1. /doc 文档生成2. /fix 智能修复 AI Fix3. /test 单元测试生成 使用步骤深入与最佳实践常见问题解答结语学习资源互动环节 引言 在人工智能技术飞速发展的今天,编程领域的创新也在不断涌现。豆包MarsCod…

从繁琐到高效:采购合同管理软件如何使企业受益

企业普遍面临由合同管理复杂性引发的压力,这已成为一个普遍现象。手动处理和整理大量的关键信息,同时确保所有文档的透明度和一致性,无疑是一项重大挑战。为了降低流程时间并提高效率,采用有效的工具显得尤为必要。 然而&#xf…

44.【C语言】指针(重难点)(G)

目录 19.字符指针变量 *定义 *简单说明 *如果是字符串 *像数组一样指定访问常量字符串的字符 *练习 20.数组指针变量 *定义 *格式 *例子 问题1 问题2 *利用指针打印 21.二维数组传参的本质 往期推荐 19.字符指针变量 *定义 指向字符的指针变量,用于存储字符在内存…

传统软件开发和敏捷软件开发之间的区别

传统软件开发与敏捷软件开发都是系统软件设计开发的方式,都是软件设计的重要类型。 1. 传统软件开发 1.1 基本流程 传统软件开发是用于设计和开发简单软件的软件开发过程。当软件的安全性和许多其他因素不太重要时使用它。它由新手用来开发软件。它包括五个阶段&…