概述
负载均衡建立在现有的网络结构之上,提供了廉价、有效、透明的方式来扩展网络设备和服务器的带宽,增加了吞吐量,加强了网络数据的处理能力,提高了网络的灵活性和可用性。项目中常用的负载均衡有四层负载均衡和七层负载均衡。
四层负载均衡与七层负载均衡的对比
四层负载均衡基于 IP 地址和端口的方式实现网络的负载均衡,具体实现为对外提供一个虚拟 IP 地址和端口接收所有用户的请求,然后根据负载均衡配置和负载均衡策略请求发送给真实服务器
七层负载均衡基于 URL 等资源来实现应用层基于内容的负载均衡,具体实现为通过虚拟的 URL 或主机名接收所有用户的请求,然后将请求发送给真实的服务器
四层负载均衡和七层负载均衡的最大区别是:四层负载均衡只能针对 IP 地址和端口上的数据做统一的分发,而七层负载均衡能根据消息的内容做更加详细的有针对性的负载均衡。我们通常使用 LVS 等技术实现基于 Socket 的四层负载均衡,使用 Nginx 等技术实现基于内容分发的七层负载均衡,比如将以 user/***
开头的 URL 请求负载到单点登录服务器,而将以 /business/***
开头的 URL 请求负载到具体的业务服务器
负载均衡算法
1. 轮询均衡(Round Robin)
轮询均衡指将客户端的请求轮流分配到 1 至 N 台服务器上,每台服务器均被均等地分配一定数量的客户端请求。轮询均衡算法适用于集群中所有服务器都有相同的软硬件配置和服务能力的情况
2. 权重轮询均衡(Weighted Round Robin)
权重轮询均衡指根据每台服务器的不同配置及服务能力,为每台服务器都设置不同的权重值,然后按照设置的权重值轮询地将请求分配到不同的服务器上。例如,服务器 A 的权重值被设计成 3,服务器 B 的权重值被设计成3,服务器 C 的权重值被设计成 4,则服务器 A、B、C 将分别承担 30%、30%、40% 的客户端请求。权重轮询均衡算法主要用于服务器配置不均等的情况
3. 随机均衡(Random)
随机均衡指将来自网络的请求随机分配给内部的多台服务器,不考服务器的配置负载情况
4. 权重随机均衡(Weighted Random)
权重随机均衡算法类似于权重轮询算法,只是在分配请求时不再轮询发送,面是选择某个权重的服务器发送
5. 响应速度均衡(Response Time)
响应速度均衡指根据服务器设备响应速度的不同将客户端请求发送到响应速度最快的服务器上。对响应速度的获取是通过负载均衡设备定时为每台服务器都发出一个探测请求(例如 Ping)实现的。响应速度均衡能够为当前的每台服务器都根据其不同的负载情况分配不同的客户端请求,这有效避免了某台服务器单点负载过高的情况。但需要注意是这里探测到的响应速度是负载均衡设备到各台服务器之间的响应速度,并不完全代表客户端到服务器的响应速度,因此存在一定偏差
6. 最少连接数均衡(Least Connection)
最少连接数均衡指在负载均衡器内部记录当前每台服务器正在处理的连接数量,在有新的请求时,将该请求分配给连接数最少的服务器。这种均衡算法适用于网络连接和带宽有限、CPU 处理任务简单的请求服务,例如 FTP
7. 处理能力均衡
处理能力均衡算法将服务请求分配给内部负荷最轻的服务器,负荷是据服务器 CPU 型号、CPU 数量、内存大小及当前连接数等换算而成的。处理能力均衡算法由于考虑到了内部服务器的处理能力及当前网络的运行状况,所以相对来说更加精确
8. DNS 响应均衡
DNS 响应均衡算法指在分布在不同中心机房的负载均衡设备都收到同一个客户编的域名解析请求时,所有负载均衡设备均解析此域名并将解析后的服务器 IP 地址返回给客户端,客户端向收到第一个域名解析后的 IP 地址发起请求服务,而忽略其他负载均衡设备的响应
9. 哈希算法与衡
哈希算法均衡指通过一致性哈希算法和虚拟节点技术令相同参数的请求总是发送会同一台服务器,该服务器将长期、稳定地为某些客户端提供服务。在某台服务器被移除或异常宕机后,该服务器的请求基于虚拟节点技术均衡到其他服务器,而不会影响集群整售的稳定性
10. IP 地址哈希
IP 地址哈希指在负载均衡器内部维护了不同链接上客户端和服务器的 IP 地址对应关系表,将来自同一客户端的请求统一转发给相同的服务器。该算法能够以会话为单位,保证同一客户端的请求能够一直在同一台服务器上处理,主要适用于客户端和服务器需要保持长连接的场景,比如基于 TCP 长连接的应用
11. URL 哈希
URL 哈希指通过管理客户端请求 URL 信息的哈希表,将有相同 URL 的请求转发给同一台服务器。该算法主要适用于在七层负载中将不同类型的用户请求转发给不同类型的应用服务器的场景