负载均衡

1.负载均衡的概念

负载均衡的核心目标是实现高可用,即高并发、容灾等。

负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,如FTP服务器、Web服务器、应用服务器和其它主要任务服务器等,从而协同完成工作任务。
负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。

2.二层、三层、四层、七层负载均衡的区别

TCP/IP 的分层管理
TCP/IP 协议按照层次分为 4 层:应用层、传输层、网络层、数据链路层。 对于分层这个概念,大家一定不陌生,比如我们的分布式架构体系中会分为业务层、服务层、基础支撑层。比如docker,也是基于分层来实现。所以我们会发现,复杂的程序都需要分层,这个是软件设计的要求,每一层专注于当前领域的事情。如果某些地方需要修改,我们只需要把变动的层替换掉就行,一方面改动影响较少,另一方面整个架构的灵活性也更高。 最后,在分层之后,整个架构的设计也变得相对简单了。

负载均衡中所谓的层指的是OSI体系中的分层,OSI模型共有七层,从下到上分别是物理层、数据链路层、网络层、运输层、会话层、表示层和应用层。

1)二层负载均衡(mac)

二层负载均衡又称为数据链路层负载均衡。主要的实现方式就是PPP捆绑和链路聚合技术。一般是用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应。

2)三层负载均衡(ip)

三层负载均衡也就是网络层的负载均衡,需要用到网络层的协议,如OSPF协议,RIP协议等。一般采用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后分配后端实际的IP地址响应。

3)四层负载均衡(tcp)

四层就是基于IP+端口的负载均衡,是在三次负载均衡的基础上,即从第四层"传输层"开始,使用"ip+port"接收请求,再转发到对应的机器。七层负载均衡器也称作七层交换机,即L4 switch(四层交换),在OSI第4层工作,此种Load Balance不理解应用协议(如HTTP/FTP/MySQL等等)。如:LVS、F5、深信服AD等。

4)七层负载均衡(http)

七层就是基于URL等应用层信息的负载均衡。从第七层"应用层"开始,根据虚拟的url或IP,主机名接收请求,再转向相应的处理服务器。七层负载均衡器也称作七层交换机,即L7 switch(七层交换),OSI的最高层,应用层。此时,该Load Balancer能理解应用协议。如:HAProxy、Nginx等。

工作中最常见的是四层和七层负载均衡。

3.其他负载均衡概念

这里解释下其他表达的负载均衡概念,如:DNS域名解析负载均衡、数据链路层负载均衡、IP负载均衡、HTTP重定向负载均衡、反向代理负载均衡。

(1)DNS域名解析负载均衡

利用DNS解析到多个地址实现负载均衡。
大型网站使用较多。
优点是将负载均衡工作交给DNS,省略掉了负载均衡器网络管理和配置的麻烦;为用户选择最近的服务器,提高访问速度。缺点就是DNS缓存,修改DNS可能会较长时间才生效;控制权在DNS服务商,系统本身能做的控制非常有限。但实际上,大型网站喜欢使用DNS域名解析作为一级负载均衡,然后再在内部用其他手段做二级负载均衡。

(2)数据链路层负载均衡

数据链路层负载均衡即二层负载,在数据链路层(OSI模型的第二层)修改mac地址进行负载均衡。

(3)IP负载均衡

IP负载均衡即三层负载,通过在网络层(OSI模型的第三层)修改请求目标地址进行负载均衡。

(4)HTTP重定向负载均衡

利用HTTP重定向协议实现负载均衡。
不推荐使用。
优点是配置简单。缺点是需要请求两次服务器才能完成一次访问,性能较差;无法保证用户一直从主页进入站点,用户可以直接收藏一个具体地址跳过负载调度。

(5)反向代理负载均衡

利用反向代理服务器进行负载均衡。反向代理服务器核心工作是转发HTTP请求,它工作在HTTP层面,也就是OSI模型七层结构中的应用层(第七层),所以反向代理负载均衡也称为七层负载均衡。

 

posted @ 2022-06-08 15:07  古锁阳关  阅读(300)  评论(0编辑  收藏  举报