前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >系统设计:负载均衡

系统设计:负载均衡

原创
作者头像
小诚信驿站
修改2021-09-03 15:02:07
1.6K0
修改2021-09-03 15:02:07
举报
文章被收录于专栏:技术一号位指南(小诚信驿站)

背景

负载平衡开始于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/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 负载平衡定义
  • 负载均衡作用
    • 负载均衡OSI模型中的作用
    • 负载均衡和SSL
    • 负载均衡和安全
    • 负载均衡的好处
    • 负载均衡算法
    • 冗余负载均衡器
    • 参考资料
    相关产品与服务
    负载均衡
    负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档