首页 > 编程知识 正文

负载均衡的原理,负载均衡器漏洞

时间:2023-05-06 03:46:29 阅读:114860 作者:2597

负载均衡

在分布式系统中,负载平衡是一个将网络请求有效分配给多个服务的过程。 通过均衡负载,可以有效改善系统响应时间,提高系统可用性。 随着系统越来越复杂、用户越来越多、网络流量越来越大,负载均衡已成为系统设计的一个重要环节。

负载平衡是水平扩展APP应用程序服务器体系结构的最直接方法。 如果系统面临用户和并发请求的增加,则可以直接向系统添加服务器进行水平扩展。 负载平衡器立即开始向新服务器发送部分用户请求,以支持系统的水平扩展。 其结果是,每个服务器产生几乎相同数量的客户请求。

实现负载均衡主要有两个目的。 第一,通过对每个服务施加相同的负载,减轻一个服务的负载,实现上述系统的水平扩展。 二是提高系统容错能力,实现高可用性。 在分布式系统中,由于多个服务器通常提供相同的服务,因此在一个服务器宕机时,可以通过负载平衡器将与该服务器对应的负载传输到其他机器,来提高系统的可用性如果没有负载平衡器,则只需将相应的负载直接传输到几个设备,这几个设备本身就会承受很高的负载,如果暴露在突然的大量负载中,其他设备可能会停机。

负载均衡器

负载平衡器可以是硬件或软件,它将网络请求分发给服务群集。 在下图中,负载均衡器位于客户端和服务器之间,通过将客户端请求传输到另一个后端服务器来完成客户端请求。 通过将客户端请求均匀分布到后端服务器,负载平衡器可以有效减少服务请求,避免服务在单点上失败。

负载平衡器的特点总结如下。

如果一台服务器停机,负载平衡器将删除该服务器并将请求转发到其他在线服务器

将新服务器添加到群集后,负载平衡器会自动开始发送请求

的客户端请求或网络负载有效地分发到多个服务器

仅向在线服务器发送请求,以确保高可用性和可靠性

提供根据需要增加或减少服务的灵活性,而不影响与现有服务的连接

它可以应用于不同的层,包括服务、数据库和缓存

负载平衡器基于以下两个步骤选择与一个客户端请求相对应的后端服务器: 首先,检查服务器是否可用。 然后,根据配置的负载平衡算法,从这些健康服务中选择服务。

运行状况检查会定期连接到后端服务器,以确保服务器监听,以便健康检查(Health Check):负载平衡器只向健康服务器发送请求。 如果服务器运行状况检查失败,服务器将自动从服务器群集中删除,并且在服务器开始响应运行状况检查之前,不会将客户端请求传输到服务器。

负载均衡算法

轮询调度算法(Round Robin)

该算法依次向运行状况服务器列表中的每台服务器发送请求。 例如,健康服务器的列表是a、b、c、d。 请求将以此顺序分发。

最少连接算法(Least Connections)

该算法确定群集中哪个服务具有最低连接数,并将请求发送到具有最低连接数的服务

最少响应时间(Least Response Time)

算法将请求转发到连接数最小、平均响应时间最短的服务器

最小带宽算法(Least Bandwidth Method)

此方法将请求转发到具有通过Mbps测量的最小通信量的服务

IP地址哈希(IP Hash)

该算法根据IP地址确定将请求转发到哪个服务器

粘滞会话(Sticky Session Scheme)

http://基于www.Sina.com /请求相关性将请求转发到正确的服务器。 例如,用户的购买请求依赖于用户的登录请求,负载平衡器在从用户收到购买请求时将相应的登录请求转发到处理该请求的服务器。 否则会报告错误。

每个服务器将接收到的请求放在队列中。 如果服务器处理请求的速度快,队列中的请求数少,则负载平衡器只会根据队列数将请求放在最小数量的队列中。

均匀任务队列派发(Even Size Task Queue Distribution Scheme)

根据传输层协议(如33558www.Sina.com/IP地址和TCP端口)转发请求

根据APP应用层的数据和属性进行请求传输,包括3358www.Sina.com/http标头、统一资源集成器(uri )、SSL会话ID和HTML表单数据

负载均衡器的能力

器负载均衡器: 对L4和L7进行扩展,使得负载均衡器可以对全局的服务器进行负载均衡

常用负载均衡器

负载均衡器已经有了很多的解决方案。比如,硬件方面有F5,A10,软件方面有Nginx,HAProxy,LVS。如果整个系统是云架构,那么云厂商也提供了成熟的负载均衡选择比如Azure负载均衡器和AWS负载均衡器。硬件负载均衡器往往具有难以扩展(因为需要额外增加硬件),成本贵(购买硬件,专业人员安装维护)和安全性(物理硬件自身设计导致)等缺点。软件负载均衡器消除了硬件负载均衡器的这些缺点,并具有按需进行调节的灵活性和易于和系统进行集成。因此,我们在面对系统进行水平扩容的时候不妨先考虑开源的软件负载均衡器,如果确实有满足不了的地方,再考虑重复造轮子。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。