Skip to main content

负载均衡

负载均衡​

在计算机网络领域,将工作负载(如网络请求、数据传输及处理、计算任务)合理分配到不同的计算单元(如服务器、虚拟机、容器)的技术就是负载均衡。

负载均衡的目的是优化工作性能、提高工作可靠性、增加工作的可扩展性。

目标​

  1. 高可用性:网络延迟、服务器宕机、CPU过载。
  2. 高性能性:提高访问速度、提升访问质量。

SLA​

SLA(Sevice-Level Agreement),即服务等级协议。系统服务 Provider 对 Customer 的一个可量化的服务承诺,大型分布式系统中用于衡量系统服务是否稳定健康的协议方案。

  • 可用性:Availability 年平均故障时长(小时),5个9(99.999%)-5分钟。
  • 准确性:Accuracy 请求错误率(错误请求数/全部请求数),95%。
  • 系统容量:Capacity
    • QPS (Query Per Second) 每秒处理的请求数。
    • TPS (Transactions Per Second) 每秒处理的事务个数。
    • 并发数 (Concurrency Level) 系统可同时承载的正常使用系统功能的用户数量。
  • 延迟:Latency 系统收到用户请求到响应请求之间的时间间隔。
    • P95:100 个请求里 95 个请求响应时间小于 1s。

软硬件实现​

硬件​
  • F5 硬件,性能好,购买及扩展昂贵。
软件​
  • HAProxy:提供高可用性、负载均衡、基于 TCP 和 HTTP 的应用程度代理。
  • Nginx:提供高性能、负载均衡、反向代理的 Web 服务器程序。
  • LVS:Linux Virtual Server 负载均衡技术,用于提高服务器的可用性和处理能力。

软件实现分类​

DLB​

DLB(DNS Load Balancer),即 DNS 负载均衡。

  • 将域名随机解析成不同服务器的 IP 地址对不同的服务器进行访问。
  • DNS 根据配置使用不同策略将流量分发到不同的服务器。
  • 负载配置简单,但配置规则有延迟性。
  • 作为区域服务的第一层的根据负载均衡策略的转发,保证负载均衡策略稳定。
ALB​

ALB(Application Load Balancer),即应用负载均衡。

  • 将不同类型的请求转发到不同类型的服务应用(如HaProxy、Nginx)。
  • 请求压力分散到不同的服务应用,且可做数据缓存,减少单应用的访问压力和请求数量。
  • HTTPS 需要 TLS Termination 与 TLS Forward Proxy 技术加解密请求内容。
info

TLS Termination 是指在代理服务器端对客户端的 TLS 加密流量进行解密,并将解密后的明文流量转发到后端服务。

TLS Forward Proxy 是在客户端和目标服务器之间,代理服务器充当中间角色或进行先解密再加密,最终达到目标服务器。

NLB​

NLB(Network Load Balancing),即网络负载均衡,基于网络传输层 IP 地址的分发策略,应用原始 IP 地址不可见,IP 地址无序进行记录。

总揽​

算法​

随机法​

从服务器的 IP 地址列表中随机选取一个 IP 地址进行访问。

从概率学的角度上讲,随着访问量的增大,所有 IP 的访问会趋于平均分配,达到负载均衡。

但这只是理论上,实际情况影响的因素会很多,比如服务器性能、网络带宽等,在一个时机下的均衡的达成率无法量化。

加权随机法​

在随机法的基础上,考虑了服务器性能,并对服务器性能增加了指标,根据权重指标的大小来对一个服务器访问进行分配,相对于随机算法的均衡性相对高一些。

轮询法​

按照 IP 地址列表的顺序分配访问,但不考虑服务器性能,无法使用服务器资源利用最大化。

加权轮询法​

在轮询法的基础上,考虑了服务器性能,并对服务器性能增加了权重指标,相对于轮询法的均衡相对高一些。

IP Hash​

用一种散列的算法来分配 IP 的权重,需要一个客户端 IP 以及可分配的 IP 权重个数,算出一个需要分配的 IP:

客户端IP.HashCode % IP权重个数

但缺点是客户端的 IP 固定,分配的 IP 就固定,灵活性不高。

最小连接数​

选择积压的连接数最少的服务器进行分配,更灵活也更合理。

网络模型​

七层协议​

层级英文名称功能描述常用协议
应用层Application Layer面向用户,提供应用服务,如邮件、文件传输、网页浏览等HTTP, HTTPS, FTP, SMTP, POP3, IMAP
表示层Presentation Layer负责数据的加解密、压缩、格式转换等SSL/TLS, JPEG, GIF, MPEG, PNG
会话层Session Layer建立、维护和终止会话,进行身份验证和权限管理NetBIOS, RPC, PPTP, SIP
传输层Transport Layer实现端到端通信,提供可靠性和错误恢复TCP, UDP
网络层Network Layer负责路径选择和数据包转发,提供逻辑地址寻址IP, ICMP, IGMP, IPsec
数据链路层Data Link Layer负责物理地址寻址、帧的封装与解封装,通过交换机传输数据Ethernet, PPP, ARP, VLAN, MPLS
物理层Physical Layer将数据转换为电磁波或光信号,通过物理介质进行传输USB, Bluetooth, IEEE 802.11 (Wi-Fi)

五层协议​

网络五层协议是在七层协议的基础再次进行的划分。

负载均衡​

负载均衡的方案中,DLB 与 ALB 是基于应用层,而 NLB 是基于传输层。