7层负载均衡

时间:2024-11-09 08:08:59编辑:阿星

CDN负载均衡是如何实现的呢?

DNS
名词:DNS是客户端发送请求中一个非常重要的中转,他的作用是将用户请求的URL映射为具体的IP地址,全世界有13台根服务器,但通常为我们进行域名解析的并不是根服务器,而是直接访问我们的 LDNS(Local DNS Server),通常由网络运营商维护。
最早的负载均衡就是利用搭建本地DNS服务器实现的,实现方式简单易懂,为同一个主机名分配多个映射 ,可采用轮循,随机等方式分配请求。看上去没什么问题,但是在使用过程中会发现,如果其中一个地址down机,我们是无法及时发现的,如果有用户被分配到这个主机就会出现访问失败的状况,同时我们也无法判断每个server的负载,可能会出现,某个server几乎闲置,另外一个server负载压力极高的情况。
↗(进入服务器1,处理数据)↘
(客户端输入URL定位符)→(DNS服务器寻找映射)→(DNS分配请求)             (返回数据至客户端) 
↘(进入服务器2,处理数据)↗


CDN技术的负载均衡

负载均衡技术不仅仅应用于CDN中,在网络的很多领域都得到了广泛的应用,如服务器的负载均衡、网络流量的负载均衡。顾名思义,网络中的负载均衡就是将网络的流量尽可能均匀分配到几个能完成相同任务的服务器或网络节点上,由此来避免部分网络节点过载。这样既可以提高网络流量,又提高了网络的整体性能。在CDN中,负载均衡又分为服务器负载均衡和服务器整体负载均衡(也有的称为服务器全局负载均衡)。服务器负载均衡是指能够在性能不同的服务器之间进行任务分配,既能保证性能差的服务器不成为系统的瓶颈,又能保证性能高的服务器的资源得到充分利用。而服务器整体负载均衡允许Web网络托管商、门户站点和企业根据地理位置分配内容和服务。通过使用多站点内容和服务来提高容错性和可用性,防止因本地网或区域网络中断、断电或自然灾害而导致的故障。在CDN的方案中服务器整体负载均衡将发挥重要作用,其性能高低将直接影响整个CDN的性能。

四层和七层负载均衡有啥区别?

简单理解四层和七层负载均衡:\x0d\x0a  ① 所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 换句换说,二层负载均衡会通过一个虚拟MAC地址接收请求,然后再分配到真实的MAC地址;三层负载均衡会通过一个虚拟IP地址接收请求,然后再分配到真实的IP地址;四层通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器。\x0d\x0a  ② 所谓的四到七层负载均衡,就是在对后台的服务器进行负载均衡时,依据四层的信息或七层的信息来决定怎么样转发流量。 比如四层的负载均衡,就是通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。七层的负载均衡,就是在四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。举个例子,如果你的Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。\x0d\x0a  ③ 负载均衡器通常称为四层交换机或七层交换机。四层交换机主要分析IP层及TCP/UDP层,实现四层流量负载均衡。七层交换机除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI或Cookie信息。\x0d\x0a  1、负载均衡分为L4 switch(四层交换),即在OSI第4层工作,就是TCP层啦。此种Load Balance不理解应用协议(如HTTP/FTP/MySQL等等)。例子:LVS,F5。\x0d\x0a  2、另一种叫做L7 switch(七层交换),OSI的最高层,应用层。此时,该Load Balancer能理解应用协议。例子: haproxy,MySQL Proxy。\x0d\x0a  注意:上面的很多Load Balancer既可以做四层交换,也可以做七层交换。


七层与三层负载均衡

十年间,负载均衡的前沿技术层出不穷,令用户眼花缭乱。经常在技术网站、文档中出现的“四层负载均衡”、“七层负载均衡”字眼有什么含义?有什么区别?对客户网络有哪些不同的优化?带着这样的疑问,今天我们就来仔细研究一番。

四层负载均衡像银行自助排号机 七层负载均衡像银行大堂经理

首先,我们来了解一下什么是四层负载均衡、什么是七层负载均衡。四层负载均衡指的是负载均衡设备通过报文中的目标IP地址和端口负载均衡算法,选择到达目的的内部服务器;七层负载均衡,也被称为“内容交换”,指的是负载均衡设备通过报文中的应用层信息(URL、HTTP头部等信息)和负载均衡算法,选择到达目的的内部服务器。二者的区别可以举个例子形象的说明:四层负载均衡就像银行的自助排号机,每一个达到银行的客户根据排号机的顺序,选择对应的窗口接受服务;而七层负载均衡像银行大堂经理,先确认客户需要办理的业务,再安排排号。这样办理理财、存取款等业务的客户,会根据银行内部资源得到统一协调处理,加快客户业务办理流程。

七层应用负载的好处是使得整个网络更“智能化”!例如,在网站的运行中,用户可以通过七层的方式,将图片类的请求通过缓存技术传输到特定的图片服务器,将对文字类的请求通过压缩技术传输到特定的文字服务器。当然这只是七层应用的一个小案例,从技术原理上,这种方式可以对客户端的请求和服务器的响应进行任意方式的修改,极大提升了应用系统在网络层的灵活性。很多在后台(例如Nginx或者Apache)上部署的功能可以前移到负载均衡设备上(例如客户请求中的Header重写,服务器响应中的关键字过滤或者内容插入等)。

另外一个常常被提到功能就是安全性。在网络中常见的SYN Flood攻击中,黑客会控制众多客户端(肉鸡),使用虚假IP地址对同一目标发动SYN攻击,通常这种攻击会大量发送SYN报文,耗尽服务器上的相关资源,以达到Denial of Service(DoS)的目的。从技术原理上也可以看出,四层模式下这些SYN攻击都会被转发到后端的服务器上;而在七层模式下这些SYN攻击自然在负载均衡设备上就截止,不会影响后台服务器的正常运营。另外负载均衡设备可以在七层层面设定多种策略,过滤SQL Injection等应用层面的特定攻击手段,进一步提高系统整体安全。

国内负载均衡技术缺少根本性突破 “浑水摸鱼”伪七层负载均衡或将逐步减少

聊到这里,大家应该都明白四层负载均衡和七层负载均衡的区别了。七层负载均衡技术对产品的性能、算法、高可靠性和安全性有着更高的要求。而导致这种技术的差异性,更多的体现在厂商对负载均衡专有平台的开发上,具体可以概括为以下四点,不满足这四点的产品都不能称为七层负载均衡:

第一、七层负载的应用以HTTP协议为主,四层负载的应用以TCP为主,通过测试仪可以看出,七层负载的吞吐性能要比四层负载的吞吐性能低。七层吞吐性能严重考验着负载均衡厂商们,如果不解决这个核心问题,负载均衡设备就会成为网络的瓶颈,严重影响网络的稳定性。

第二、七层负载算法需要识别URL、Cookie和HTTP head等信息,算法计算程度更丰富,对CPU的负载要求更高,这就需要更高性能的产品。虽然目前硬件平台已经发展到多核,但是国内厂商在多核平台的应用开发上存在着较大差距,严重制约负载均衡设备多核之间计算能力的协调分配和使用。

第三、七层负载的可靠性体现在两个方面:一方面是保证服务器访问的完整性和连续性,这主要体现在七层负载均衡的会话保持技术,通过HTTP Cookie、HTTP SessionID、HTTP ServerID、HTTP 自定义头域和SSL SessionID等方式实现。另一方面是保证网络的稳定性,网络的稳定性主要通过设备关键部件的冗余设计,以及双机、集群部署方式实现。

第四、七层负载的安全性同样至关重要,因为目前负载均衡已经成为网络的核心组件,成为服务器业务连续性、完整性、可靠性的保护神。七层负载均衡的安全性需要从两个方面体现:一是系统本身的安全性,软件系统应采用自主研发,无系统漏洞和后门;二是可以提供必要的网络安全防护,减少服务器被直接攻击的威胁,这样可以减少服务器区设备串联堆叠带来的单点故障。

从以上几点可以看出,七层负载均衡有着严格的定义,优势也非常明显。但是,从市场份额来看,七层负载均衡设备还是以国外厂商占据主导地位,国内能够进行自主研发的只有太一星晨等少数的几家厂商。而且,国内负载均衡厂商应用场景以链路负载为主,难以进入占据负载均衡市场70%份额、主导负载均衡技术发展的服务器负载均衡市场,更缺乏在大型数据中心及大型门户网站使用案例。


四层负载均衡和七层负载均衡的区别

关于负载均衡,经常听到四层负载均衡和七层负载均衡的说法,他们之间有什么关系和区别呢,今天就简单总结概括下。 也就是说,四层负载均衡是 基于IP+端口 的负载均衡,七层负载均衡是 基于URL 等应用层信息的负载均衡。 同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。 在实际应用中,比较常见的就是四层负载及七层负载。这里也重点说下这两种负载。   所谓的四到七层负载均衡,就是在对后台的服务器进行负载均衡时, 依据四层的信息或七层的信息来决定怎么样转发流量 。 比如四层的负载均衡,就是通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。七层的负载均衡,就是在四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。举个例子,如果你的Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。 负载均衡器通常称为 四层交换机 或 七层交换机 。那么四层和七层两者到底区别在哪里?   以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。TCP的连接建立,即 三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作 。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。   以常见的TCP为例,负载均衡设备如果要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。 负载均衡设备在这种情况下,更类似于一个代理服务器 。负载均衡和前端的客户端以及后端的服务器会分别建立TCP连接。所以从这个技术原理上来看,七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。   七层因为可以代理任意修改和处理用户的请求,所以可以使整个应用更加智能化和安全,代价就是设计和配置会更复杂。所以是否有必要使用七层负载均衡是一个需要权衡的问题。   现在的7层负载均衡,主要还是着重于应用HTTP协议,所以其应用范围主要是众多的网站或者内部信息平台等基于B/S开发的系统。 4层负载均衡则对应其他TCP应用,例如基于C/S开发的ERP等系统。

上一篇:歌手2018第三期

下一篇:没有了