负载均衡器怎么获得(系统设计基础知识)
负载均衡器怎么获得(系统设计基础知识)系统设计基础知识(八)了解IP地址和端口 系统设计基础知识(七)—代理 系统设计基础知识(四)—系统可用性 系统设计基础知识(五)—缓存 系统设计基础知识(六)—缓存区
系统设计基础知识系列第九章负载均衡器。你可以阅读我以前的文章
系统设计基础知识(一) - 网络
系统设计基础知识(二)—数据库
系统设计的基础知识(三)吞吐量和延迟
系统设计基础知识(四)—系统可用性
系统设计基础知识(五)—缓存
系统设计基础知识(六)—缓存区
系统设计基础知识(七)—代理
系统设计基础知识(八)了解IP地址和端口
什么是负载均衡?
负载均衡:在一组资源上分配一组任务的过程。有两种主要方法:静态算法和动态算法。
负载均衡是一种集群技术,利用基于网络的硬件或软件定义的设备,在多台服务器之间共享特定的服务(网络服务、网络流量等),从而提高业务处理能力,保证业务的高可靠性。
随着互联网的发展,流量变得越来越大,也越来越复杂。业务逻辑也变得非常复杂。因此,需要多台服务器来执行性能的横向扩展并避免单点故障。
负载均衡的优势
- 防止多用户并发问题,提高应用处理性能(增加吞吐量,加强网络处理能力)
- 提供故障转移以实现高可用性
- 通过添加或减少服务器数量来提供网站可扩展性
- 安全保护(做一些过滤、白名单、黑名单等)
负载均衡技术
为了满足不同的应用需求,实现了许多不同的负载均衡技术。
- 软件负载均衡
- 在操作系统上安装一个或多个附加软件,例如 DNS、CheckPoint Firewall-1 ConnectControl、Keepalive Ip Virtual Server (IPVS)、Linux Virtual Server (LVS)、Nginx和Haproxy。
- LVS——它是一个基于传输层的负载均衡器。主要原理是对网络数据包做一些修改,然后转发给服务器。端口检测、URL检测、自定义脚本检测比较完善。具有抗负载能力强、性能高、稳定性高、可靠性高等特点。
- Nginx——它是基于网络层和应用层的负载均衡器。它通过反向代理的功能实现负载均衡的功能。端口检测和URL检测比较完善,但是检测方式是被动的,会对用户访问产生一定的影响。
- HAproxy——它是基于 TCP 层和 HTTP 层的负载均衡器。它支持虚拟机、会话持久性、cookie 指导以及检测服务器的状态以获取指定的 URL。
- 软件负载均衡配置简单、成本低、使用灵活,可以满足基本需求。但效率不高。
- 但是,在每台服务器上安装额外的软件会消耗一定的系统资源。当连接请求非常大时,取决于系统,软件的好坏决定了环境的性能,系统的安全,软件的稳定性会影响整个环境的安全。
2. 硬件负载均衡
- 直接在服务器和外网之间安装负载均衡设备
- 它独立于操作系统,专门的设备完成专门的负载均衡任务,从而使整体性能大大提高,再加上多样化的负载均衡策略和智能流量管理。
- 一些负载均衡器与交换设备集成在一起,一些负载均衡器使用 2 个网络适配器来连接这个负载均衡器。
- 但是,它非常昂贵。
3.本地负载均衡
- 它可以解决数据流量过大和网络负载过重的问题。
- 它具有灵活多样的均衡策略,将数据流量分配到服务器组中的共享服务器上,避免服务器单点故障造成的数据流量丢失。
- 它是水平缩放。在不改变现有网络结构的情况下,可以将新服务器添加到服务组中。
4. 全局负载均衡
- 它主要用于在多个区域拥有自己的服务器的站点。
- 全球用户只需一个 IP 地址或域名就可以访问最近的服务器。
- 站点分布广泛的大公司使用Intranet来达到资源均匀合理分布的目的。
5. 网络级别的负载均衡
DNS(DNS负载平衡)——通过为客户端解析不同的IP地址
第 2 层(HTTP 负载平衡)— 基于 MAC 地址
第 3 层(IP 负载平衡)- 基于 IP 地址
第 4 层(反向代理负载平衡)——基于 IP 端口
第 7 层(应用层负载平衡)——基于应用层信息,例如 URL
DNS 负载平衡可以通过为客户端解析不同的 IP 地址来分配流量。客户端的流量可以直接到达每台服务器。但是,缺点是延迟问题。调度策略改变后,各级DNS节点的缓存不会及时在客户端生效。所以,DNS无法满足业务需求,需要负载均衡。
第 2 层负载平衡可以在同一网络上的机器之间分配流量。就是说服务器绑定的是同一个虚拟IP(VIP),客户端直接通过这个VIP请求。所以,为了区分同一IP下的不同服务器,会使用一个MAC地址,因为每个客户端都有不同的MAC地址。负载均衡服务器收到请求后,重写HTTP报文中以太网头的MAC地址,按照一定的算法将请求转发给目标。但是负载均衡服务器只负责请求的入口,不负责请求的响应。
第 3 层负载平衡可以使用 IPv4 和 IPv6 地址路由流量。意思是它根据不同的IP地址将请求转发到不同的服务器。它并不比二层负载均衡更有优势,因为传入和传出的请求都必须经过负载均衡服务器,这会对负载均衡服务器造成损坏。
4层负载均衡通过虚拟IP 端口接收请求,然后分发给真实服务器。它通过发布带有端口号的 IP 地址、对流量执行网络地址转换 (NAT) 处理并将流量转发到服务器来确定需要平衡哪些流量。然后,它记录哪个服务器处理 TCP 或 UDP 流量。此连接的所有后续流量都被转发到同一台服务器进行处理。所以,主要分析IP层和TCP/UDP层来实现负载均衡。这种负载均衡器不理解应用协议(如HTTP/FTP/MySQL等)
第 7 层负载平衡通过虚拟 URL 或主机名接收请求,然后将它们分发到真实服务器。它根据第 4 层信息或第 7 层信息转发流量。没有第 4 层负载均衡,绝对不可能有第 7 层负载均衡。可以根据 URL、浏览器类别和语言来确定正在转发的流量。例如,Web 服务器可以分为 2 组,中文用户和英文用户。然后,七层负载均衡可以在用户访问您的域名时自动识别用户语言并选择相应的服务器组。因此,它主要分析应用层信息,例如HTTP协议URL或cookie信息。这种负载均衡器可以理解Haproxy等应用协议和MySQL 代理。
- 第 7 层负载均衡器的优势在于让整个网络更加“智能”。例如,可以通过缓存技术将图像请求转发到特定的图像服务器。可以使用压缩技术将文本请求转发到特定的文本服务器。此外,第7层负载均衡器可以修改客户端的请求和服务器的响应,以提高应用系统在网络层的灵活性。例如,功能被部署,例如客户端请求中的Header重写,服务器响应中的关键字过滤或内容插入。
- 第 7 层负载均衡器可以提供一定程度的安全性。例如,它可以防止常见的SYN 洪水攻击,这是一种拒绝服务攻击形式,攻击者在网络中没有最终连接的情况下快速启动与服务器的连接。比如会发送大量的SYN包,耗尽服务器上的资源。它自然会终止对负载均衡设备的这些SYN攻击,不会影响服务器的正常运行。此外,第 7 层负载均衡器可以在第 7 层设置各种策略来过滤特定的数据包,例如 SQL 注入和其他应用级特定攻击方法,并且必须具有强大的抗DDoS能力,以进一步提高系统的整体安全性。
- 七层负载均衡器主要针对HTTP协议的应用,所以它的适用范围主要是针对很多网站或者内部信息平台等基于浏览器/服务器开发的系统。
- 第 4 层负载均衡器主要针对 TCP 应用,例如即时通讯(IM)、实时消息推送等套接字长连接系统。
- 但是,第 7 层负载均衡器必然会导致设备配置复杂,负载均衡压力增大,故障排查复杂。
负载均衡算法
负载均衡算法可以分为两类:静态负载均衡算法和动态负载均衡算法。
静态负载平衡算法
- 循环法——每台服务器同样能够处理相同数量的请求。所有请求都被调度以循环方式分发到不同的服务器。
- 加权循环法——不同的服务器可能有不同的配置和系统负载,因此它们的能力也不同。为配置较高且负载较低的服务器分配较高的权重,以便它可以处理许多请求或其他情况。这种方法是按照权重将请求按顺序分发给服务器。
- 随机- 根据概率和统计理论,请求随机分布到每个服务器。实际效果越来越接近平均分布。
- 权重随机法——根据服务器的配置和系统的负载分配不同的权重。这种方法是根据权重随机将请求分发给服务器,而不是按顺序分配。
- 比率— 为每个服务器分配一个加权值。根据比例将用户请求分配给每个服务器。当其中一台服务器在第 2 层到第 7 层出现故障时,BIG-IP 应用交付服务将其从服务器队列中取出,直到恢复正常后才参与下一个用户请求的分配。
- 优先级— 为服务器组中的每个组定义优先级。用户请求被分配给具有最高优先级的服务器组。在同一组内,它可能使用循环或比率算法来分配用户的请求。当优先级最高的服务器组发生故障时,BIG-IP 应用交付服务将请求发送到优先级较低的服务器组。
- Source IP Hash——它使用一种算法,获取客户端和服务器的源和目标IP地址,通过基于IP地址的哈希函数计算一个值,并生成一个唯一的哈希键。因此,客户端可以使用特定服务器的密钥。
- Key-Value Range Method——根据key的范围加载。例如,前 1 亿个密钥将存储在服务器 A 上,从 1 亿到 2 亿个密钥将存储在服务器 B 上。
动态负载平衡算法
- 最小连接数方法- 将新连接传递给那些连接处理最少的服务器。动态选择当前连接积压最少的服务器处理当前请求,从而提高服务器的利用效率,将请求合理分配到各个服务器。
- 更快的响应速度——根据请求的响应时间,动态调整各个节点的权重,为响应速度较快的服务节点分配更多的请求,为响应速度较慢的服务节点分配更少的请求.
- 观察法——连接数和响应时间以这两者的最佳平衡为基础,作为选择服务器处理新请求的依据。
- 预测方法——BIG-IP利用收集到的服务器当前性能指标进行预测分析,为相应用户的请求选择性能在净时间内达到最佳性能的服务器。
- 动态性能分配——BIG-IP 收集应用和应用服务器的各种性能参数,并动态调整流量分配。
- 动态服务器补给——当主服务器数量因故障而减少时,动态地为主服务器组补充备份服务器
- 服务质量——根据不同的优先级或场景分配请求。
- 服务类型——将不同服务类型的请求分发到不同的服务器。
- Rule - 为不同的请求设置指导规则
- Shortest Expected Delay — 它基于加权最小连接调度算法。
- Least Queue Scheduling——真实服务器连接数等于0,直接分配。因此,它基于最少的真实服务器连接数。
如果你发现我的任何文章有帮助或有用,麻烦点赞或者转发。 谢谢!