负载均衡
负载均衡
在计算机网络领域,将工作负载(如网络请求、数据传输及处理、计算任务)合理分配到不同的计算单元(如服务器、虚拟机、容器)的技术就是负载均衡。
负载均衡的目的是优化工作性能、提高工作可靠性、增加工作的可扩展性。
目标
- 高可用性:网络延迟、服务器宕机、CPU过载。
- 高性能性:提高访问速度、提升访问质量。
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 技术加解密请求内容。
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 是基于传输层。