Skip to main content

负载均衡

负载均衡

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

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

流量分发

请求分发

请求分发

请求分发

处理结果

处理结果

处理结果

用户请求

负载均衡器

服务器 1

服务器 2

服务器 3

返回响应

返回响应

返回响应

最终用户

目标

  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 根据配置使用不同策略将流量分发到不同的服务器。
  • 负载配置简单,但配置规则有延迟性。
  • 作为区域服务的第一层的根据负载均衡策略的转发,保证负载均衡策略稳定。

DNS 解析

IP 地址 1

IP 地址 2

IP 地址 3

返回响应

返回响应

返回响应

用户请求

DNS 服务器

服务器 1

服务器 2

服务器 3

最终用户

ALB

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

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

/products

/users

/orders

用户请求

应用负载均衡器

产品服务

用户服务

订单服务

响应用户

响应用户

响应用户

info

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

后端服务器负载均衡器 (TLS Termination)客户端后端服务器负载均衡器 (TLS Termination)客户端HTTPS 请求 (加密)解密流量明文请求明文响应加密响应HTTPS 响应 (加密)

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

ServerProxyClientServerProxyClient客户端与代理完成 TLS 握手HTTPS 请求 (加密)提供伪造证书 (代理的 CA)解密 HTTPS 请求HTTPS 请求 (重新加密)HTTPS 响应 (加密)解密 HTTPS 响应HTTPS 响应 (重新加密)
NLB

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

客户端

NLB - 虚拟IP

用户应用

客户端

产品应用

总揽

客户端

请求

请求

分发到

分发到

四川客户端
User/Product

DLB

上海客户端
User/Product

西南域

华东域

ALB

ALB

用户服务 NLB

产品服务 NLB

用户服务 NLB

产品服务 NLB

APP-1

APP-2

APP-1

APP-2

APP-1

APP-2

APP-1

APP-2

算法

随机法

从服务器的 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)
目标设备物理层 (Physical Layer)数据链路层 (Data Link Layer)网络层 (Network Layer)传输层 (Transport Layer)会话层 (Session Layer)表示层 (Presentation Layer)应用层 (Application Layer)用户端目标设备物理层 (Physical Layer)数据链路层 (Data Link Layer)网络层 (Network Layer)传输层 (Transport Layer)会话层 (Session Layer)表示层 (Presentation Layer)应用层 (Application Layer)用户端请求完成,开始响应发起请求 (如 HTTP 请求)数据加解密/压缩 (如 TLS)会话建立与管理分段数据 (如 TCP)添加逻辑地址 (如 IP)封装为帧 (如 Ethernet)转换为信号通过电磁波传输数据响应信号到达转换信号为帧解析逻辑地址重组数据段恢复会话上下文解密/解压数据将数据呈现给用户返回完整响应 (如 HTTP 响应)

五层协议

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

数据封装与解封

映射

映射

映射

映射

映射

映射

映射

5 - 会话层

5 - 应用层

6 - 表示层

7 - 应用层

4 - 传输层

4 - 传输层

3 - 网络层

3 - 网络层

2 - 数据链路层

2 - 数据链路层

1 - 物理层

1 - 物理层

比特

数据与报文

负载均衡

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

链路层

网络层

传输层

七层协议

物理层

1 - 物理层

比特

7 - 应用层

数据与报文

6 - 表示层

5 - 会话层

4 - 传输层

3 - 网络层

2 - 链路层

DLB 与 ALB

NLB

PORT

IP ADDR

MAC ADDR