什么是负载均衡?负载均衡器如何运作?

往期文章

负载均衡器:LVS、Nginx、HAproxy如何选择?


目录


什么是负载均衡?

负载均衡是一种网络技术,旨在通过在多个服务器之间均匀地分散用户请求或工作负载,从而提高应用程序的响应速度和服务质量。在互联网上,负载平衡经常被用来在几个服务器之间分配网络流量。这能够减少每台服务器的压力,使服务器更有效率,加快性能,减少延迟。

简单来说,负载均衡器就像是交通堵塞时的交警,确保每辆车都能快速找到最通畅的道路通过。

总之,它的目的就通过调度集群,达到最佳化资源使用,最大化吞吐率,最小化响应时间,避免单点过载的问题。


为什么需要负载均衡?

随着互联网应用的普及和发展,单一服务器往往无法满足大规模用户同时访问的需求。就像一个繁忙的路口如果没有有效的交通管理,会导致严重的交通拥堵。

负载平衡本质上是为了解决同样的问题。通过在多个服务器之间分配用户请求,大大减少了用户等待时间。这会带来更好的用户体验


负载均衡工作原理?

负载均衡由称为负载均衡器的工具或应用程序处理。负载平衡器可以是基于硬件的,也可以是基于软件的。

  • 硬件负载平衡器需要安装专用的负载平衡设备;
  • 基于软件的负载平衡器可以在服务器、虚拟机或云中运行。

内容交付网络 (CDN) 通常包括负载平衡功能。

当来自用户的请求到达时,负载平衡器将请求分配到给定的服务器,并对于每个请求重复此过程。负载平衡器根据多种不同的算法确定应由哪个服务器处理每个请求。这些算法分为两大类:静态和动态

静态负载均衡算法

静态负载平衡算法在分配工作负载时不考虑系统的当前状态。

静态负载平衡器不会知道哪些服务器运行缓慢以及哪些服务器没有被充分使用。相反,它根据预先确定的计划分配工作负载。静态负载平衡可以快速设置,但会导致效率低下。

静态负载均衡算法包括:轮询,比率,优先权

  • 轮询(Round Robin):顺序循环将请求一次顺序循环地连接每个服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从顺序循环队列中拿出,不参加下一次的轮询,直到其恢复正常。

  • 比率(Ratio):给每个服务器分配一个加权值为比例,根椐这个比例,把用户的请求分配到每个服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配, 直到其恢复正常。

  • 优先权(Priority):给所有服务器分组,给每个组定义优先权,BIG-IP 用户的请求,分配给优先级最高的服务器组(在同一组内,采用轮询或比率算法,分配用户的请求);当最高优先级中所有服务器出现故障,BIG-IP 才将请求送给次优先级的服务器组。这种方式,实际为用户提供一种热备份的方式。

动态负载均衡算法

动态负载平衡算法会考虑每台服务器的当前可用性、工作负载和运行状况。他们可以将流量从负担过重或性能不佳的服务器转移到未充分利用的服务器,从而保持分配的均匀和高效。

但是,动态负载平衡更难配置。影响服务器可用性的因素有很多:每台服务器的运行状况和整体容量、正在分配的任务的大小等等。

有几种类型的动态负载平衡算法,包括最少连接、加权最少连接、基于资源和基于地理位置的负载平衡。

  • 最少的连接方式(Least Connection):传递新的连接给那些进行最少连接处理的服务器。

  • 最快模式(Fastest):传递连接给那些响应最快的服务器。

  • 观察模式(Observed):连接数目和响应时间以这两项的最佳平衡为依据为新的请求选择服务器

  • 动态性能分配(Dynamic Ratio-APM):BIG-IP 收集到的应用程序和应用服务器的各项性能参数,动态调整流量分配。


参考

http://www.52im.net/thread-2494-1-1.html

相关推荐
EasyNVR2 分钟前
基于WebRTC与AI大模型接入EasyRTC:打造轻量级、高实时、强互动的嵌入式音视频解决方案
运维·服务器·微信·小程序·webrtc·p2p·智能硬件
技术小齐18 分钟前
网络运维学习笔记 022 HCIA-Datacom新增知识点03园区网典型组网架构及案例实战
运维·网络·学习
Java潘老师35 分钟前
Automa 浏览器自动化编排 实现自动化浏览器操作
运维·自动化
waves浪游42 分钟前
Linux基本指令(上)
linux·运维·服务器
是北欢吆2 小时前
QQ登录测试用例报告
运维·服务器·测试用例
9毫米的幻想2 小时前
【Linux系统】—— 冯诺依曼体系结构与操作系统初理解
linux·运维·服务器·c语言·c++
刘什么洋啊Zz2 小时前
剖析IO原理和零拷贝机制
java·运维·网络
升讯威在线客服系统3 小时前
如何通过 Docker 在没有域名的情况下快速上线客服系统
java·运维·前端·python·docker·容器·.net
Karoku0665 小时前
【CI/CD】CI/CD环境搭建流程和持续集成环境配置
运维·ci/cd·docker·容器·kubernetes·prometheus
勤奋的凯尔森同学8 小时前
webmin配置终端显示样式,模仿UbuntuDesktop终端
linux·运维·服务器·ubuntu·webmin