概述

负载均衡系统是整个CDN系统的核心,负载均衡根据当前网络的流量分布、各中心机房服务器的负载和用户请求的特点将用户的请求负载到不同的中心机房或不同的服务器上,以保障用户内容访问的流畅性。

负载均衡建立在现有网络结构之上,提供了一种廉价、有效、透明的方法来扩展网络设备和服务器的带宽,增加了吞吐量,加强了网络数据处理能力,并提高了网络的灵活性和可用性。

负载均衡系统包括全局负载均衡(GSLB)和本地负载均衡(SLB)。

全局负载均衡主要指跨机房的负载均衡,通过DNS解析或应用层重定向技术将用户的请求负载到附加的中心机房上。

本地负载均衡主要指机房内部的负载均衡,一般通过缓存服务器,基于LVS、Nginx、服务网关等技术实现用户访问的负载。

负载均衡的实现

四层负载均衡

四层负载均衡主要通过修改报文中目标和端口来实现报文的分发和负载均衡。

以TCP为例,负载均衡设备在接收到第一个来自客户端的SYN请求后,会根据负载均衡策略选择一个最佳的服务器,并将报文中目标IP地址修改为该服务器的IP直接转发给该服务器。

TCP连接的建立是在客户端和服务器端之间完成的,负载均衡设置只起到路由器的转发功能。

四层负载均衡常用的软硬件:
F5:硬件负载均衡器,功能完善,价格昂贵。
LVS:基于IP+端口实现的四层负载均衡软件,常和Keepalice配合使用。
Nginx:同时实现四层负载和七层负载均衡,带缓存功能,可基于正则灵活转发。

七层负载均衡

七层负载均衡又叫做“内容负载均衡”,主要通过解析报文中真正有意义的应用层内容,并根据负载配置和负载均衡策略选择一个最佳的服务器响应用户的请求。

七层应该负载可以使整个网络更智能化,七层负载均衡根据不同的数据类型将数据存储在不同的服务器上来提供网络整体发负载能力。

比如将客户端的基本信息存储在内存较大的缓存服务器上,将文件信息存储在磁盘空间较大的文件服务器,将图片视频存储在网络IO能力较强的流媒体服务器上。在接收到不同的客户端的请求时从不同的服务器上获取数据并将其返回给客户端,提高客户端的访问效率。

七层负载均衡常用的软件:
HAProxy:支持七层代理,会话保持、标记、路径转移等。
Nginx:同时实现四层负载和七层负载均衡,在HTTP和Mail协议上功能比较好,性能与HAProxy差不多。
Apache:使用简单,性能差。

两者对比

四层负载均衡基于IP和端口的方式实现网络的负载均衡,具体实现为对外提供一个虚拟IP和端口接收所有用户的需求,然后根据负载均衡配置和负载均衡策略将请求发送给真实的服务器。
七层负载均衡基于URL等资源来实现应用层基于内容的负载均衡,具体实现为通过虚拟的URL或主机名接收所有用户的请求,然后将请求发送给真实的服务器。

区别
四层负载均衡只能针对IP地址和端口上的数据做统一的分发,而七层负载均衡能根据消息的内容更加详细的有针对性的负载均衡。
CDN之负载均衡系统
CDN之负载均衡系统

负载均衡算法

轮询均衡(Round Robin)

轮询均衡指将客户端请求轮流分配到1至N台服务器,每台服务器被均等地分配一定数量的客户端请求。轮询均衡算法适用于集群所有服务器都有相同的软硬件配置和服务器能力的情况下。

权重轮询均衡(Weighted Round Robin)

权重轮询均衡指根据每台服务器不同配置及服务能力,为每台服务器都设置不同的权重值,然后按照设置的权重轮询地将迁就分配到不同的服务器上。

随机均衡(Random)

随机均衡指将来自网络的请求随机分配给内部的多态服务器,不考虑服务器的配置和负载情况。

权重随机均衡(Weighted Random)

权重随机均衡算法类似于权重轮询算法,只是在分配在分配请求时不再轮询发送,而是随机选择某个权重的服务器发生。

响应速度均衡(Response Time)

相应速度均衡指根据服务器设备响应速度不同将客户端请求发送到响应速度最快的服务器上。对响应速度的获取是通过负载均衡设备定时实现的。

最少连接数均衡(Least Connection)

最少连接数均衡指在负载均衡器内部记录当前每台服务器正在处理的连接数量,在有新的请求时,将该请求分配给连接数最少的服务器。

处理能力均衡

处理能力均衡算法将服务请求分配给内容负荷最轻的服务器。负荷是根据服务器的CPU型号、CPU数量、内存大小及当期连接数等换算而成的。

DNS响应均衡(Flash DNS)

DNS响应均衡算法指在分布在不同中心机房的负载均衡设备都收到同一个客户端的域名解析请求时,所有负载均衡设备解析此域名并将解析后的服务器IP地址返回给客户端,客户端向收到第一个域名解析后的IP地址发起请求服务,而忽略其他负载均衡设备的响应。

散列算法均衡

散列算法均衡指通过一致性的散列算法和虚拟节点技术将相同参数的请求总是发送到同一台服务器,该服务器将长期、稳定地为某些客户端提供服务。在某个服务器被移除或宕机后,该服务器的请求会平摊到其他服务器,而不会影响集群整体的稳定性。

IP地址散列

IP地址散列指在负载均衡内部维护了不同链接上客户端和服务器的IP对应关系表,将来自同一客户端的请求统一转发给相同的服务器。该算法能够以会话为单位,保证同一客户端的请求能够一直在同一台服务器上处理,主要适用于客户端和服务器需要保持长时间的场景,比如基于TCP长连接的应用。

URL散列

URL散列指通过管理客户端请求URL信息散列表,将相同URL的请求转发给同一台服务器。

相关文章: