L4和L7负载均衡原理

四层负载均衡原理

所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN请求时,即通过上述方式选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器.TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。

七层负载均衡原理

所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的器选择方式,决定最终选择的内部服务器。以常见的TCP为例,负载均衡设备如果要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。负载均衡设备在这种情况下,更类似于一个代理服务器。负载均衡和前端的客户端以及后端的服务器会分别建立TCP连接。所以从这个技术原理上来看,七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。

常用的负载均衡 实现方式

1、http重定向

原理:当http代理(比如浏览器)向web服务器请求某个URL后,web服务器可以通过http响应头信息中的Location标记来返回一个新的URL。这意味着HTTP代理需要继续请求这个新的URL,完成自动跳转。

优点:

  • 比较简单。

不足:

  • 吞吐率限制(主要是http重定向服务器自身的处理能力可能成为瓶颈);
  • 重定向访问深度不同。

我们需要权衡转移请求的开销和处理实际请求的开销,前者相对于后者越小,那么重定向的意义就越大,例如下载。

2、DNS负载均衡

原理:DNS 负责提供域名解析服务,当访问某个站点时,实际上首先需要通过该站点域名的DNS服务器来获取域名指向的IP地址,在这一过程中,DNS服务器完成了域名到IP地址的映射,同样,这样映射也可以是一对多的,这时候,DNS服务器便充当了负载均衡调度器,它就像http重定向转换策略一样,将用户的请求分散到多台服务器上,但是它的实现机制完全不同。

优点:

  • 动态DNS:在每次IP地址变更时,及时更新DNS服务器。当然因为缓存,一定的延迟不可避免;
  • 使用简单:负载均衡工作,交给DNS服务器处理,省掉了负载均衡服务器维护的麻烦;
  • 提高性能:可以支持基于地址的域名解析,解析成距离用户最近的服务器地址,可以加快访问速度,改善性能。

不足:

  • 没有用户能直接看到DNS解析到了哪一台实际服务器,对服务器运维人员的调试带来了不便;
  • 策略的局限性。例如无法将HTTP请求的上下文引入到调度策略中,而在前面介绍的基于HTTP重定向的负载均衡系统中,调度器工作在HTTP层面,它可以充分理解HTTP请求后根据站点的应用逻辑来设计调度策略,比如根据请求不同的URL来进行合理的过滤和转移;
  • 可用性差:DNS解析是多级解析,新增/修改DNS后,解析时间较长;解析过程中,用户访问网站将失败;
  • 扩展性低:DNS负载均衡的控制权在域名商那里,无法对其做更多的改善和扩展;
  • 维护性差:也不能反映服务器的当前运行状态;支持的算法少;不能区分服务器的差异(不能根据系统与服务的状态来判断负载)。

3,反向代理负载均衡

原理:基于反向代理负载均衡的核心工作就是转发HTTP请求。反向代理处于Real Server这边,反向代理服务器提供负载均衡的功能,同时也能够管理一组Real Server,它根据负载均衡算法将请求的用户的访问转发到不同的Real Server处理,处理结果经过反向服务器返回给用户。

相比前面的HTTP重定向和DNS解析,反向代理的调度器扮演的是用户和实际服务器中间人的角色:

1)任何对于实际服务器的HTTP请求都必须经过调度器;
2)调度器必须等待实际服务器的HTTP响应,并将它反馈给用户(前两种方式不需要经过调度反馈,是实际服务器直接发送给用户)。

优点:

  • 调度策略丰富。例如可以为不同的实际服务器设置不同的权重,以达到能者多劳的效果;
  • 反向代理服务器可以监控后端服务器,比如系统负载、响应时间、是否可用、TCP连接数、流量等,从而根据这些数据调整负载均衡的策略;
  • 反向代理服务器可以让用户在一次会话周期内的所有请求始终转发到一台特定的后端服务器上(粘滞会话),这样的好处一是保持session的本地访问,二是防止后端服务器的动态内存缓存的资源浪费。

不足:

  • 对反向代理服务器的并发处理能力要求高,因为它工作在HTTP层面;
  • 反向代理服务器进行转发操作本身是需要一定开销的,比如创建线程,与后端服务器建立TCP连接,接收后端服务器返回的处理结果,分析HTTP头部信息,用户空间和内核空间的频繁切换等,虽然这部分时间并不长,但是当后端服务器处理请求的时间非常短时,转发的开销就显得尤为突出。例如请求静态文件,更适合使用前面介绍的基于DNS的负载均衡方式。

4,IP负载均衡(LVS-NAT)

原理:用地址翻译实现虚拟服务器。地址转换器有能被外域访问到的合法IP地址,它修改来自与有网络的流出包的地址。外点看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点。

优点:

  • 节省IP地址,能对内部进行伪装;在内核进程完成数据分发,比在应用层分发性能更好;
  • 支持端口映射; - RS可以使用任意操作 系统。

不足:

  • DIP和RIP必须在同一个网段内;
  • RS应该使用私有地址,RS的网关必须指向DIP;
  • 请求和响应报文都需要经过Director Server,高负载场景中,Director Server易成为性能瓶颈。

5,直接路由(LVS-DR)

原理 :用直接路由技术实现虚拟服务器。当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此方法,控制管理的计算机接收到请求包时直接送到参与集群的节点。直接路由模式比较特别,直接路由模式则是工作在数据链路层上(二层)。DR和Real Server都使用同一个IP对外服务。但只有DR对ARP请求进行响应,所有Real Server对本身这个IP的ARP请求保持静默。也就是说,网关会把对这个服务IP的请求全部定向给DR,而DR收到数据包后根据调度算法,找出对应的Real Server,把目的MAC地址改为Real Server的MAC并发给这台Real Server。这时Real Server收到这个数据包,和直接从客户端收到这个数据包无异,所以Real Server处理后可以直接返回给客户端。

优点:

  • 相比LVS-NAT模式,效率要高很多,因为返回给请求方的流量是不需要经过负载均衡器的;
  • RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问;
  • RS可以是大多数常见的操作系统。

不足:

  • 由于DR要对二层包头进行改换,所以DR和Real Server之间必需在一个广播域,也可以简单的理解为在同一台交换机上。

L4和L7负载均衡原理和常用负载均衡架构实现相关推荐

  1. php负载均衡原理_Java开发大型互联网架构深入负载均衡原理之方案分析

    引言 负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡,英文名称为Load Balan ...

  2. java负载均衡原理_多种负载均衡算法及其 Java 代码实现

    首先给我们介绍下什么是负载均衡 负载均衡 树立在现有网络结构之上,它供给了一种廉价有用通明的办法扩展 网络设备和 效劳器的带宽.添加 吞吐量.加强网络数据处理才能.进步网络的灵敏性和可用性. 负载均衡 ...

  3. php负载均衡原理_PHP超级负载均衡

    现有系统中存在的问题: 1. 慢连接.瞬时访问慢. 场景一: 如果后端新增加机器,cache命中率低,因此响应速度慢,但是能连接上且不超时.如果ui持续访问就会把uiCheap sunglasses  ...

  4. 负载均衡原理与技术实现

    负载均衡(Load Balance,简称LB)是一种服务器或网络设备的集群技术.负载均衡将特定的业务(网络服务.网络流量等)分担给多个服务器或网络设备,从而提高了业务处理能力,保证了业务的高可用性.负 ...

  5. 想实现高可用?先搞定负载均衡原理

    在互联网大行其道的今天,随着业务的迅猛增长,技术上我们常常要面对高并发,大流量. 图片来自 Pexels 为了实现高可用,高性能我们采用了很多的技术手段,负载均衡就是其中之一.作为外部流量与内部应用的 ...

  6. 使用LVS实现负载均衡原理及安装配置详解

    使用LVS实现负载均衡原理及安装配置详解 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均 ...

  7. Ribbon负载均衡原理,Feign是如何整合Ribbon的?

    文章目录 1. 什么是负载均衡? 2. Ribbon的使用 ①:自定义负载均衡策略 ②:Ribbon的饥饿加载 3. Ribbon的负载均衡原理 ①:收集带有@LoadBalanced注解的RestT ...

  8. 负载均衡原理与实践详解 第三篇 服务器负载均衡的基本概念-网络基础

    负载均衡原理与实践详解 第三篇 服务器负载均衡的基本概念-网络基础 系列文章: 负载均衡详解第一篇:负载均衡的需求 负载均衡详解第二篇:服务器负载均衡的基本概念-网络基础 负载均衡详解第三篇:服务器负 ...

  9. 负载均衡原理与实践详解 第五篇 负载均衡时数据包流程详解

    负载均衡原理与实践详解 第五篇 负载均衡时数据包流程详解 系列文章: 负载均衡详解第一篇:负载均衡的需求 负载均衡详解第二篇:服务器负载均衡的基本概念-网络基础 负载均衡详解第三篇:服务器负载均衡的基 ...

最新文章

  1. setitimer 创建两个定时器_JavaScript第二十四篇 高级定时器(下)
  2. 点击切换属性html,jQuery_$方法、属性、点击切换
  3. 【关于学习渗透】手把手教你玩转java反序列化cb链
  4. 给你安利几个牛逼的公众号~
  5. 使用jieba提取文本TF-IDF关键词
  6. 谈谈技术原则,技术学习方法,代码阅读及其他的(引用)
  7. 行为型设计模式之解释器模式(Interpreter)
  8. 冠军奖金50万,2020腾讯广告算法大赛广发“英雄帖”
  9. 语音云识别工具_语音识别工具_web语音识别应用程序的工具 - 云+社区 - 腾讯云...
  10. wordpress如何让百度快速收录_百度搜狗蜘蛛池让你的新网站内页快速收录
  11. readelf ELF 文件格式分析
  12. 小爱同学音色服务器响应失败,小爱同学获取数据失败怎么回事
  13. win10总是更新失败
  14. 带掩码的自编码器MAE在各领域中的应用总结
  15. 摸鱼一小时实现的斗牛Game【Java版】,希望各位友友远离赌博~
  16. css3帧(雪碧图)动画实现
  17. Linux操作系统相关资料
  18. scilab系列---概述
  19. 微信H5页面,返回上一页面后页面不会自动刷新
  20. [免杀]基于python的ipv4加载器

热门文章

  1. TOM集团CEO杨国猛
  2. 读书笔记(12)QINQ
  3. MAC执行sed命令报“command c expects \ followed by text”错误解决办法
  4. RecycleView配合Adapter调用notifyDataSetChanged闪屏?
  5. 一张表可以有多少个主键
  6. 论文阅读 Enhancing knowledge graph embedding with relational constraints
  7. docker存出和载入镜像、导出和导入容器
  8. 【Codechef POLYEVAL Evaluate the polynomial】【FFT】
  9. gensim从word2vec到song2vec 在推荐领域的应用
  10. 三门问题c语言蒙特卡洛法