今天互联网上的任何现代网站都会收到数千次点击,如果不是数百万次的话。如果没有任何可扩展性策略,网站要么崩溃,要么性能显着下降——我们希望避免这种情况。众所周知,添加更强大的硬件或垂直扩展只会延迟问题。但是,在没有经过深思熟虑的方法的情况下添加多个服务器或水平扩展可能无法充分利用这些好处。
在任何领域创建高度可扩展系统的秘诀是使用经过验证的软件架构模式。软件架构模式使我们能够创建经济高效的系统,可以处理数十亿个请求和 PB 级数据。本文介绍了最基本和最流行的可伸缩性模式,称为负载平衡。负载平衡的概念对于在云中构建高流量站点的任何开发人员都是必不可少的。本文首先介绍了负载均衡器,然后讨论了负载均衡器的类型;接下来是云中的负载均衡,然后是开源选项,最后是选择负载均衡器的一些指针。
什么是负载均衡器?
负载均衡器是一个流量管理器,用于在可以处理传入客户端请求的所有服务器上分配这些请求。该模式通过最小化请求处理时间和最大化容量利用率来帮助我们实现云计算的全部潜力。流量管理器仅将请求调度到可用服务器;因此,该模式适用于可扩展的云系统。每当将新服务器添加到组中时,负载均衡器都会开始调度请求并纵向扩展。相反,如果服务器出现故障,调度程序会将请求重定向到组中的其他可用服务器并缩减,这有助于我们节省资金。
负载均衡器的类型
了解负载均衡器的基础知识后,接下来是熟悉负载均衡算法。大致有两种类型的负载平衡算法。
1. 静态负载均衡器
静态负载均衡器根据算法平均分配传入流量。
- 轮循机制是执行负载平衡的最基本和默认算法。它按顺序将流量分配到组中的服务器列表。该算法假定应用程序是无状态的,并且可以隔离处理来自客户端的每个请求。每当有新请求进入时,它都会转到序列中的下一个可用服务器。由于该算法是基本的,因此不适合大多数情况。
- 加权循环是轮循机制的一种变体,管理员可以在其中为服务器分配权重。具有更高容量的服务器将比其他服务器接收更多的流量。该算法可以解决组具有不同容量的服务器的情况。
- 粘性会话(也称为会话亲和性算法)最适合于来自客户端的所有请求都需要由特定服务器提供服务的情况。该算法通过识别来自特定客户端的请求来工作。可以使用 Cookie 或 IP 地址来识别客户端。该算法在数据、内存和使用缓存方面更有效,但如果服务器开始陷入过长的会话,则可能会严重降级。此外,如果服务器出现故障,会话数据将丢失。
- IP 哈希是将请求路由到同一服务器的另一种方法。该算法使用客户端的 IP 地址作为哈希密钥,并根据密钥调度请求。此算法的另一个变体使用请求 URL 来确定哈希键。
2. 动态负载均衡器
顾名思义,动态负载均衡器会考虑每个服务器的当前状态,并相应地调度传入请求。
- 最少连接将流量分派到连接数最少的服务器。假设所有服务器都是相等的,并且具有最少连接数的服务器将具有最大的可用资源。
- 加权最小连接是最少连接的另一种变体。它使管理员能够为具有较高容量的服务器分配权重,以便可以根据容量分配请求。
- 最短响应时间考虑响应时间以及连接数。请求以最少的连接和最短的平均响应时间调度到服务器。原则是确保为客户提供最好的服务。
- 自适应或基于资源的调度负载并根据资源(即服务器上可用的 CPU 和内存)做出决策。每台服务器上运行一个专用程序或代理,用于测量服务器上的可用资源。负载均衡器查询代理以决定和分配传入请求。
云中的负载平衡
成功的云策略是将负载均衡器与 Auto Scaling 结合使用。通常,云应用程序的网络流量、内存消耗和 CPU 利用率受到监视。这些指标和趋势可以帮助定义扩展策略,以动态添加或删除应用程序实例。云中的负载均衡器会考虑动态调整大小,并根据可用服务器调度流量。以下部分介绍了云中一些众所周知的解决方案:
AWS:弹性负载均衡 (ELB)
Amazon ELB 是一种高度可用且可扩展的负载均衡解决方案。它非常适合在 AWS 中运行的应用程序。以下是四种不同的亚马逊ELB选择:
- 应用程序负载均衡器用于 HTTP 和 HTTPS 流量的负载均衡。
- 网络负载均衡器用于对 TCP、UDP 和 TLS 流量进行负载平衡。
- 网关负载均衡器用于部署、扩展和管理第三方虚拟设备。
- 传统负载均衡器用于跨多个 EC2 实例进行负载均衡。
GCP – 云负载平衡
Google Cloud Load Balancing 是 Google 提供的高性能且可扩展的产品。它每秒最多可支持100万+次查询。它可以分为两大类,即内部和外部。每个主要类别都根据传入流量进一步分类。以下是几种负载均衡器类型。
- 内部 HTTP(S) 负载平衡
- 内部 TCP/UDP 负载平衡
- 外部 HTTP(S) 负载平衡
- 外部 TCP/UDP 网络负载平衡
有关比较所有可用负载均衡器的完整指南,请参阅 Google 负载均衡器页面。
Microsoft Azure Load Balancer
Microsoft Azure 负载平衡解决方案提供三种不同类型的负载平衡器:
- 标准负载均衡器 – 公共和内部第 4 层负载均衡器。
- 网关负载均衡器 – 适用于第三方网络虚拟设备的高性能和高可用性负载均衡器。
- 基本负载均衡器 – 非常适合小规模应用程序。
开源负载均衡解决方案
尽管默认选择始终是使用特定于供应商的云负载均衡器,但有一些开源负载均衡器选项可用。以下是其中的两个。
NGINX提供NGINX Plus和NGINX现代负载平衡解决方案。有许多流行的网站,包括Dropbox,Netflix和Zynga,都使用NGINX的负载均衡器。NGINX负载均衡解决方案具有高性能,可以帮助提高高流量网站的效率和可靠性。
云耀斑
Cloudflare是另一种流行的负载平衡解决方案。它提供不同级别的负载均衡器,以满足特定的客户需求。定价计划基于提供的服务、运行状况检查和安全性。
- 零信任平台计划
- 网站和应用程序服务计划
- 开发人员平台计划
- 企业计划
- 网络服务
选择负载均衡器
从上面的部分中可以明显看出,负载均衡器会对应用程序产生重大影响。因此,选择正确的解决方案至关重要。以下是做出决定的一些注意事项。
- 确定企业的短期和长期目标有助于推动决策。业务需求应有助于确定预期的流量、不断增长的区域和服务的区域。业务注意事项还应包括可用性级别、加密的必要性或需要解决的任何其他安全问题。
- 市场上有很多选择。确定应用程序的必要功能有助于选择正确的解决方案。例如,负载均衡器应该能够处理应用程序的传入流量,例如 HTTP/HTTPS 或 SSL 或 TCP。另一个示例是用于内部流量的负载均衡器与外部负载均衡器具有不同的安全问题。
- 云供应商提供各种支持层和定价计划。因此,详细比较总拥有成本、功能和支持层有助于确定项目的正确选择。
大多数专家都认为,使用负载均衡器来管理流量是最佳实践,这对云应用程序至关重要。通过使用负载均衡器,应用程序可以更好地为请求提供服务,并节省成本。
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/295277.html