1.定义

负载均衡(Load Balance,简称 LB),是在现有网络结构之上分摊到多个操作单元上进行执行,扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

2.主要作用

高并发:负载均衡通过算法调整负载,尽力均匀的分配应用集群中各节点的工作量,以此提高应用集群的并发处理能力(吞吐量)。
伸缩性:添加或减少服务器数量,然后由负载均衡进行分发控制。这使得应用集群具备伸缩性。
高可用:负载均衡器可以监控候选服务器,当服务器不可用时,自动跳过,将请求分发给可用的服务器。这使得应用集群具备高可用的特性。
安全防护:有些负载均衡软件或硬件提供了安全性功能,如:黑白名单处理、防火墙,防 DDos 攻击等。

3.分类

3.1.按载体分类

从支持负载均衡的载体来看,可以将负载均衡分为两类:硬件负载均衡、软件负载均衡。

3.1.1.硬件负载均衡

硬件负载均衡,一般是在定制处理器上运行的独立负载均衡服务器,价格昂贵。主流产品有 F5 和 A10。
硬件负载均衡的优点:
功能强大:支持全局负载均衡并提供较全面的、复杂的负载均衡算法。
性能强悍:硬件负载均衡由于是在专用处理器上运行,因此吞吐量大,可支持单机百万以上的并发。
安全性高:往往具备防火墙,防 DDos 攻击等安全功能。
硬件负载均衡的缺点:
成本昂贵:购买和维护硬件负载均衡的成本都很高。
扩展性差:当访问量突增时,超过限度不能动态扩容。

3.1.2.软件负载均衡

软件负载均衡,应用最广泛,是从软件层面实现负载均衡,一般可以在任何标准物理设备上运行。主流产品有:Nginx、HAProxy、LVS。
LVS 可以作为四层负载均衡器。其负载均衡的性能要优于 Nginx;HAProxy 可以作为 HTTP 和 TCP 负载均衡器;Nginx、HAProxy 可以作为四层或七层负载均衡器。
软件负载均衡的优点:
扩展性好:适应动态变化,可以通过添加软件负载均衡实例,动态扩展到超出初始容量的能力。
成本低廉:软件负载均衡可以在任何标准物理设备上运行,降低了购买和运维的成本。
软件负载均衡的缺点:
性能略差:相比于硬件负载均衡,软件负载均衡的性能要略低一些。

3.2.按网络通信分类

根据负载均衡技术实现在 OSI 七层模型的不同层次,可以在应用层、传输层、网络层和数据传输层。所以,工作在应用层的负载均衡通常称之为七层负载均衡、工作在传输层的称之为四层负载均衡。

3.2.1.二层负载均衡

负载均衡服务器对外提供一个VIP(虚拟 IP),集群中不同的机器采用相同 IP 地址,但是机器的MAC地址不一样。当负载均衡服务器接受到请求之后,通过改写报文的目标 MAC 地址的方式将请求转发到目标机器实现负载均衡。

3.2.2.三层负载均衡

和二层负载均衡类似,负载均衡服务器对外依然提供一个VIP(虚拟 IP),但是集群中不同的机器采用不同的IP地址。当负载均衡服务器接受到请求之后,根据不同的负载均衡算法,通过IP将请求转发至不同的真实服务器。

3.2.3.四层负载均衡

四层负载均衡工作在 OSI 模型的传输层,由于在传输层只有 TCP/UDP 协议,这两种协议中除了包含源IP、目标IP以外,还包含源端口号及目的端口号。四层负载均衡服务器在接受到客户端请求后,以后通过修改数据包的地址信息(IP + 端口号)将流量转发到应用服务器。

3.2.4.七层负载均衡

七层负载均衡工作在 OSI 模型的应用层,应用层协议较多,常用的如 HTTP、DNS 等。七层负载就基于这些协议来负载。这些应用层协议中会包含很多有意义的内容。比如同一个 Web 服务器的负载均衡,除了根据IP加端口进行负载外,还可根据七层的URL、浏览器类别等来决定是否要进行负载均衡。

4.负载均衡算法

负载均衡服务器在决定将请求转发到具体哪台真实服务器的时候,是通过负载均衡算法来实现的。负载均衡算法,是一个负载均衡服务器的核心。
负载均衡算法可以分为两类:静态负载均衡算法和动态负载均衡算法。

4.1.静态负载均衡算法

静态负载均衡算法包括:轮询、加权轮询、随机、加权随机等。

  • 轮询(Round Robin):每次的请求到达时,对每个服务器都轮询访问,保证每个服务器命中概率相同,实现简单但无法解决不同服务器之间性能差异问题。
  • 加权轮询(Weighted Round Robin):权重高的服务器请求命中的概率更高,根据不同服务器的性能调整权重比可以降低服务器性能差异带来的问题。
  • 随机(Random):所有服务器随机访问,实现简单,服务器的命中概率取决于随机算法,无法解决不同服务器之前性能差异问题。
  • 加权随机(Weighted Random):实现上可以参照加权轮询,生成的随机数作为列表的索引值,也可以降低服务器性能差异带来的问题。

4.2.动态负载均衡算法

动态负载均衡算法包括:最小连接数、加权最小连接数、源地址哈希、一致性哈希等。

  • 最小连接数(Least Connections):传递新的连接给那些进行最少连接处理的服务器。根据连接数并不能真实的反应服务器的负载能力,当服务器不处于同一水平时,有可能连接数少的服务器处理能力差,而连接数多的服务器处理能力强。
  • 加权最小连接数(Weighted Least Connection)在最小连接数的基础上,根据服务器的性能为每台服务器分配权重,再根据权重计算出每台服务器能处理的连接数。
  • 源地址哈希(IP Hash):这种方式通过生成请求源 IP 的哈希值,并通过这个哈希值来找到正确的真实服务器。这意味着对于同一主机来说他对应的服务器总是相同。
  • 一致性哈希(Consistent Hash):将主机 IP 或者主机名等唯一标识,按一致性 Hash 算法分布在 0 ~ 232-1 的闭环圆圈上,当我们取某个值的时候,将这个数据的 Key 用相同的 Hash 算法映射到 0 ~ 232-1上,从这个位置顺时针找到的第一个缓存节点,就是这个数据存储位置。
    在实际的映射中,服务器映射到哈希环上很有可以是斜的,称为哈希偏斜,在 Hash 环偏斜的情况下,大部分的数据很有可能会存到一台服务器上。导致分布极度不均匀,没有被平均的使用,如果数据较多的服务器失效,很有可能引起系统的故障。要想均衡的将数据分布到服务器上,要让服务器尽量多,这样才能均匀地分布在 Hash 环上,解决方式是:增加虚拟节点。引入虚拟节点后,虚拟节点越多,Hash 环上的服务器节点就越多,数据被均匀分布的概率就越大。当我们删除或新增其中一个节点,影响的只是这个节点之前的数据,其他节点并未受影响。

【计算机网络】负载均衡相关推荐

  1. 基于第四层交换技术的负载均衡

    摘 要 本文介绍了第四层交换技术的概念,技术原理以及如何使用第四层交换技术实现远程教育系统中的应用服务器负载均衡. 作者: 凌仲权,现就读于西安电子科技大学,2001级硕士研究生.主要的科研方向为计算 ...

  2. 科普|什么是负载均衡(Load balancing)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | Enter 来源 | cnblogs.com/kingr ...

  3. 【万字长文】吃透负载均衡

    首先告诉大家一件事,在十一国庆期间,引擎的机器又又...又扛不住了流量. 经过监控分析,发现某个服务的一个实例所在的虚拟机扛不住了,所以采取临时措施流量控制之后,问题解决了,但还是造成了不小的损失. ...

  4. nginx反向代理、负载均衡、动态请求

    NGINX 反向代理 我想通过上一章如何测试Nginx的高性能,想必大家对于NGINX作为一个高性能的web服务器毫无异议:但是NGINX的功能绝不局限于简单的web服务器,NGINX在互联网扮演的角 ...

  5. 负载均衡Load Balance学习

    目录 1. 负载均衡简介 2. 负载均衡算法 3. Nginx负载均衡调度算法源码调研 1. 负载均衡简介 0x1: 负载均衡是什么 负载均衡是一种技术架构方法,它并不是具体指哪一种技术,也正是因为这 ...

  6. apigateway-kong(四)负载均衡理论及实现

    负载均衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群).网络连接.CPU.磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用.最大化吞吐率.最小化响应时间.同时 ...

  7. 网页加载出现没有合适的负载均衡器_终于讲清楚了,什么是负载均衡(Load balancing)...

    什么是负载均衡(Load balancing) 在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但随着业务量越来越大,无论性能还是稳定性上都有了更大的挑战.这时候我们就会想到通过扩容的方式来 ...

  8. 负载均衡在分布式架构中是怎么玩起来的?

    什么是负载均衡(Load balancing) 在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但随着业务量越来越大,无论性能还是稳定性上都有了更大的挑战.这时候我们就会想到通过扩容的方式来 ...

  9. 科普|什么是负载均衡

    击上方"朱小厮的博客",选择"设为星标" 后台回复"加群",加入组织 来源:8rr.co/Ah6k 什么是负载均衡(Load balanci ...

最新文章

  1. vim学习笔记(三)
  2. 在线作图|微生物多样性分析——稀释曲线
  3. R语言dplyr包recode函数、recode_factor函数数值或因子替换实战
  4. python之web开发“三剑客”
  5. python文本菜单程序_python3.x Day1 菜单程序练习
  6. js uri解码_js进行URL编码(escape,encodeURI,encodeURIComponent)
  7. 分布式系统学习资料(ing)
  8. algorithm头文件下的reverse()
  9. 生成二维码如何制作二维码
  10. [Scala基础]--Either介绍
  11. 微软2015校园招聘 技术类职位在线笔试-题目1 : Browser Caching
  12. 移动端cpu天梯图2020_笔记本CPU排行天梯图2020
  13. 理性的光辉,“哥德尔不完备定理”到底说了些什么?
  14. 如何零成本实现微信公众号自助查券返利机器人(一)
  15. 阿里大鱼短信发送接口开发
  16. 车贴服务器维修,汽车衡的故障分析及处理
  17. 漫步数理统计十四——重要的不等式
  18. 工业智能网关BL110详解之5:实现三菱 PLC FX1S 接入华为云平台
  19. SOLIDWORKS: Mold Design SOLIDWORKS:模具设计 Lynda课程中文字幕
  20. PanDownload又复活了!抓紧保存...

热门文章

  1. java软件测试基础
  2. 一个比较土但凑合能用的画心方法
  3. 国内如何用chatgpt
  4. 音乐人报酬支付周期长 Emanate 用智能合约实现6秒实时分配
  5. 建议将com.alibaba:fastjson升级至1.2.83
  6. CSS高度自适应问题
  7. 三十岁开始学Java
  8. PS 滤镜——旋转模糊
  9. layui数据表格自带的排序功能
  10. 使用AFS, Active Directory和SSSD搭建用于集成电路设计的分布式存储系统 【十七】部署 AFS 客户端 2 统一身份登录