系统设计:负载均衡

2021-09-03 15:02:07 浏览数 (1)

背景

负载平衡开始于20世纪90年代,当时硬件设备通过网络分发流量。组织希望提高服务器上运行的应用程序的可访问性。最终,随着应用程序交付控制器(ADC)的出现,负载平衡承担了更多的责任。它们提供了安全性以及在高峰时间对应用程序的无缝访问。

adc分为三类:硬件设备、虚拟设备(基本上是从遗留硬件中提取的软件)和软件本地负载平衡器。随着计算向云端移动,软件adc执行与硬件类似的任务。它们还具有附加的功能和灵活性。它们使组织能够根据云中的需求快速、安全地扩展其应用程序服务。现代adc允许组织整合基于网络的服务。这些服务包括SSL/TLS卸载、缓存、压缩、入侵检测和web应用程序防火墙。这就创造了更短的交付时间和更大的可伸缩性。

负载平衡定义

负载平衡是指在多个服务器之间分配网络流量的过程。这确保了没有一台服务器承受过多的需求。通过均匀地分配工作,负载平衡提高了应用程序的响应能力。它还提高了应用程序和网站对用户的可用性。没有负载平衡器,现代应用程序无法运行。随着时间的推移,软件负载平衡器增加了包括应用程序安全性在内的附加功能。

负载均衡作用

负载均衡器(LB)是任何分布式系统的另一个关键组件。它有助于将流量分布在服务器集群上,以提高应用程序、网站或数据库的响应能力和可用性。LB还在分发请求时跟踪所有资源的状态。如果服务器无法接收新请求或没有响应或错误率升高,LB将停止向此类服务器发送流量。

通常,负载均衡器位于客户机和服务器之间,接受传入的网络和应用程序流量,并使用各种算法将流量分布在多个后端服务器上。通过跨多个服务器平衡应用程序请求,负载平衡器可以减少单个服务器的负载,并防止任何一个应用程序服务器成为单一故障点,从而提高应用程序的总体可用性和响应能力。

负载均衡负载均衡

为了充分利用可扩展性和冗余,我们可以尝试平衡系统每一层的负载。我们可以在三个地方增加负载均衡:

•在用户和web服务器之间(通常我们意义上的网关层)

•在web服务器和内部平台层(如应用程序)之间比如服务器或缓存服务器(通常我们意义上的应用之间的应用层)

•内部平台层和数据库之间。(通常我们意义上的数据存储层)

如果对应到MVC层的架构来说,上面分别对应的是V视图直接对接用户的,C控制直接对接应用的,M模型直接对接数据的

负载均衡位置负载均衡位置

负载均衡OSI模型中的作用

负载平衡可以做的不仅仅是充当网络流量警察。软件负载均衡器提供了诸如预测分析之类的好处,可以在流量瓶颈发生之前确定它们。因此,软件负载均衡器为组织提供了可操作的见解。这些是自动化的关键,有助于推动业务决策。

在七层开放系统互连(OSI)模型中,网络防火墙处于一到三级(L1物理布线、L2数据链路和L3网络)。同时,负载平衡发生在第四层到第七层(L4传输层、L5会话层、L6表示层和L7应用层)之间。

负载平衡器具有不同的功能,包括:

L4-根据来自网络和传输层协议(如IP地址和TCP端口)的数据指导通信。

L7-将内容切换添加到负载平衡。这允许基于诸如HTTP头、统一资源标识符、SSL会话ID和HTML表单数据等属性的路由决策。

GSLB-全局服务器负载平衡将L4和L7功能扩展到不同地理位置的服务器。

负载均衡和SSL

安全套接字层(SSL)是在web服务器和浏览器之间建立加密链接的标准安全技术。SSL流量通常在负载平衡器上解密。当负载平衡器在传递请求之前对流量进行解密时,称为SSL终止。负载均衡器使web服务器不必花费解密所需的额外CPU周期。这将提高应用程序性能。

但是,SSL终止会带来安全问题。负载平衡器和web服务器之间的通信不再加密。这会使应用程序受到可能的攻击。但是,当负载平衡器与web服务器位于同一数据中心时,风险就降低了。

另一个解决方案是SSL传递。负载平衡器只是将加密的请求传递给web服务器。然后web服务器进行解密。这将在web服务器上使用更多的CPU能力。但是需要额外安全性的组织可能会发现额外的开销是值得的。

负载均衡和安全

随着计算不断向云端移动,负载平衡扮演着重要的安全角色。负载平衡器的卸载功能可保护组织免受分布式拒绝服务(DDoS)攻击。它通过将攻击流量从公司服务器转移到公共云提供商来实现这一点。随着DDoS攻击的数量和规模不断增加,DDoS攻击在网络犯罪中占很大比例。硬件防御,如周界防火墙,可能是昂贵的,需要大量的维护。具有云卸载功能的软件负载均衡器提供了高效且经济的保护。

负载均衡的好处

用户体验更快、不间断的服务。用户不必等待一台苦苦挣扎的服务器完成之前的任务。相反,他们的请求会立即传递给更容易获得的资源。

•服务提供商经历更少的停机时间和更高的吞吐量。即使是一个完整的服务器故障也不会影响最终用户的体验,因为负载平衡器只是将其路由到一个健康的服务器。

•负载平衡使系统管理员更容易处理传入请求,同时减少用户的等待时间

•智能负载平衡器提供了预测分析等好处,可以在流量瓶颈发生之前确定它们。因此,智能负载平衡器为组织提供了可操作的见解。这些是自动化的关键,有助于推动业务决策。

•系统管理员遇到的故障或压力组件更少。负载平衡不是让单个设备执行大量工作,而是让多个设备执行少量工作。

负载均衡算法

负载平衡器如何选择后端服务器?

负载平衡器在将请求转发到后端服务器之前会考虑两个因素。他们将首先确保他们选择的服务器实际上对请求做出了适当的响应,然后使用预先配置的算法从一组正常的服务器中选择一个。我们将很快讨论这些算法。

运行状况检查-负载平衡器应该只将流量转发到“正常”的后端服务器。为了监视后端服务器的运行状况,“运行状况检查”定期尝试连接到后端服务器,以确保服务器正在侦听。如果服务器未通过运行状况检查,它将自动从池中删除,并且在它再次响应运行状况检查之前,不会将流量转发给它。

有各种各样的负载平衡方法,它们根据不同的需要使用不同的算法。

•最少连接方法-此方法将流量定向到活动连接最少的服务器。当服务器之间存在大量不均匀分布的持久客户端连接时,这种方法非常有用。

•最小响应时间方法-此算法将流量定向到活动连接最少且平均响应时间最低的服务器。

•最小带宽方法-此方法选择当前服务于最小流量的服务器,以兆位每秒(Mbps)为单位测量。

•轮训方法-此方法循环遍历服务器列表,并将每个新请求发送到下一个服务器。当它到达列表的末尾时,它会从头开始。当服务器的规格相同并且没有太多持久连接时,它最有用。

•加权循环法-加权循环调度旨在更好地处理具有不同处理能力的服务器。为每个服务器分配一个权重(表示处理能力的整数值)。权重较高的服务器在权重较低的服务器之前接收新连接,权重较高的服务器比权重较低的服务器获得更多连接。

•IP哈希-在此方法下,计算客户端IP地址的哈希,将请求重定向到服务器。

随着应用程序变得更加复杂、用户需求增长和流量增加,负载平衡已成为一种必要。负载平衡器允许组织构建灵活的网络,在不损害安全性、服务或性能的前提下,能够应对新的挑战。

冗余负载均衡器

负载平衡器可能是单点故障;为了克服这个问题,可以将第二个负载平衡器连接到第一个负载平衡器以形成集群。每个负载均衡都监视另一个负载均衡的运行状况,由于这两个负载均衡都具有相同的服务流量和故障检测能力,因此在主负载均衡发生故障时,第二个负载均衡将接管

主备负载均衡器主备负载均衡器

参考资料

什么是负载均衡:https://avinetworks.com/what-is-load-balancing/

wiki维基百科:https://en.wikipedia.org/wiki/Load_balancing_(computing)

可弹性扩展设计:https://lethain.com/introduction-to-architecting-systems-for-scale/

0 人点赞