性能文章>【译】一篇简单介绍负载均衡器的原理,类型和选择逻辑>

【译】一篇简单介绍负载均衡器的原理,类型和选择逻辑转载

1月前
241935

过去,只有系统管理员和网络管理员需要了解负载均衡器。但是在通过 DevOps 实践管理大量流量的时代,每个人都必须对负载均衡器及其在现代应用程序基础架构中的作用有一个基本的了解。

负载均衡器,也称为应用程序交付控制器 (ADC),是用于跨服务器分配网络流量的硬件或软件工具。它们用于提高网站和应用程序的性能。

当用户访问您的站点时,Web 服务器会为请求提供服务。但是每个 Web 服务器都有处理和内存限制。因此,如果请求过多,Web 服务器可能会不堪重负。解决方案是增加 Web 服务器的数量并确保流量在这些服务器之间平均分配,以消除性能瓶颈。

负载均衡器负责流量分配。当用户向您的网站发送请求时,请求会发送到负载均衡器,然后负载均衡器会根据各种负载均衡算法决定使用哪台服务器。在需要高可用性的关键任务应用程序中,负载平衡器可以将流量路由到故障转移服务器。此外,负载均衡器本身也可能成为漏洞。通常,网络架构师会实施某种形式的负载平衡器复制,以确保存在冗余。

负载均衡器简史

1990 年代,在互联网的早期,当时的创业者发现了一个问题。他们的预算不允许他们购买当时功能最强大的大型计算机。他们只能买得起当时 PC 制造商销售的标准服务器。但这些服务器的功能不足以满足这些初创公司所获得的那种流量。因此,其中一些先驱者提出了使用更多现成服务器的聪明想法。他们在用户和服务器之间放置了一个负载均衡器,并以循环方式不断地将流量发送到不同的服务器。它解决了他们的可扩展性问题。所以负载均衡的概念是硬件限制的直接结果,硬件限制是早期互联网企业业务增长的障碍。

负载均衡器处理流量的方式

根据设计和目的,负载均衡器的不同流量处理方式:

  • HTTP - HTTP 平衡很简单。负载均衡器接受请求,使用网络管理员设置的标准将请求路由到后端服务器。头部信息根据应用程序的需要进行修改,因此后端服务器拥有处理请求所需的信息。
  • HTTPS - HTTPS 协议用于加密流量。除了处理加密的方式外,它遵循与 HTTP 相同的方法。如果负载均衡器使用 SSL 直通,那么它们只会让流量进入后端服务器并在那里进行解密。具有 SSL 终止的负载平衡器解密请求,然后将未加密的请求传递给后端服务器。
  • TCP - 具有 TCP 功能的负载平衡器可以直接路由 TCP 流量。它对于处理流行的应用程序和服务(如 LDAP、MYSQL 和 RTMP)很有用。
  • UDP - 最近负载平衡器也开始添加 UDP 功能。UDP 负载平衡用于 DNS 负载平衡、轻量级 Syslog 或 RADIUS 等身份验证应用程序。

负载均衡的算法

负载均衡算法决定哪个后端服务器发送特定请求。网络管理员根据特定站点或应用程序的独特需求设置算法。以下是一些常用的方法:

  • Round Robin -在这个算法中,负载均衡器向服务器发送一个请求,然后移动到下一个。它以循环方式继续遵循此过程。如果您的所有服务器都具有相似的处理器和内存,这是一种有用的方法。
  • 最少连接方法- 负载平衡器将流量定向到连接最少的服务器,并假设该服务器将拥有最多的可用资源。
  • 最短响应时间方法- 负载均衡器同时考虑连接和响应时间。连接最少且平均响应时间最短的服务器优先。当您的服务器具有不均匀的处理能力和内存资源时,此算法会很有用。该算法允许您使用最强大的服务器,同时在大量请求期间依赖较弱的服务器。
  • IP 哈希方法- 负载平衡器根据访问者的 IP 地址哈希选择服务器。当流量需要一致地流向特定服务器时,使用此方法。

制造商或设计者决定负载均衡器上的可用算法,因此您的负载均衡器可能没有可用的特定算法,甚至可能为特定应用程序创建自定义算法。

负载均衡器的特殊注意事项

除了流量类型和算法,网络架构师在实现负载均衡器时还需要​​考虑以下几点:

健康检查

由于各种原因,后端服务器可能会变得无响应。负载均衡器向无响应的服务器发送请求是没有意义的。所以负载均衡器通常有健康检查机制来监控正在使用的后端服务器的健康状况。健康检查将使用特定协议和预定义端口定期监控服务器。检查通常是根据它们所服务的应用程序的需求来定义的。

冗余和高可用性

为了避免负载均衡器成为单点故障,网络具有冗余。在主负载均衡器发生灾难性故障的情况下,通常有一个故障转移服务器来接管负载均衡职责。这确保了网络的高可用性 (HA)。由于 DNS 传播可能需要时间,系统管理员使用浮动 IP 轻松自动指向故障转移服务器。

粘性会话负载

当来自用户的请求由于应用程序会话要求而每次都需要到同一个后端服务器时,负载均衡器必须有一种方法来识别用户并将流量路由到正确的服务器。在这种情况下,负载平衡器使用 cookie 来识别用户。然后,cookie 或会话信息用于将流量引导到适当的服务器。

负载均衡器的类型

有硬件和软件负载平衡器。尽管基于云的负载均衡器基本上是软件解决方案,但它们仍然可以被视为一个特殊类别,因为它们是由云服务提供商开发和维护的。以下是对各种负载均衡器类别的更深入了解:

硬件负载均衡器

组织使用硬件负载平衡器来提高速度。它们采用特殊处理器设计以优化性能。此外,这些类别的安全性更好,因为它们是物理服务器,并且只能由组织的人员访问。但他们需要更高水平的专业知识才能运作。由于物理限制,在高增长时期扩展您的业务也更加困难。以下是一些硬件负载均衡器的顶级供应商:

思科 是最大的网络硬件生产商之一。Cisco 路由器硬件产品可以用作负载平衡器。思科曾经生产专用的负载均衡器。但他们自 2012 年起停止生产。

软件负载均衡器

软件负载平衡提供了灵活性和可扩展性。如今,大多数企业更喜欢软件负载均衡器,因为它们运行起来更便宜。此外,企业可以在云中部署这些解决方案。例如,公司可以决定使用 Nginx 在 AWS 上创建 EC2 负载均衡器。然而,与硬件解决方案类似,软件负载均衡器也需要高层次的知识和经验才能有效地运行。以下是一些著名的软件负载平衡解决方案:

这里有一些其他的软件负载均衡器可供查看:Seesaw、Neutrino、Balance、Pen 和 Traffic。

基于云的负载均衡器

即使应用程序正在迁移到云端,对负载均衡器的需求并没有减少。仍然需要智能分配工作负载。云的早期推动者使用软件负载平衡器来满足他们的需求。但从那时起,云提供商提出了自己的基于云的负载平衡解决方案。任何在云中开发应用程序的人都应该了解可用的服务。以下是一些突出的:

AWS 弹性负载均衡器

亚马逊网络服务 (AWS) 是云计算领域的主导者。AWS 设计的Elastic Load Balancer (ELB) 可以很好地与他们的 Amazon EC2 实例、容器和 IP 地址配合使用。弹性负载均衡器能够将流量路由到各种可用区。因此,它是扩展具有高可用性需求的大容量应用程序的绝佳解决方案。AWS 当前提供三种类型的负载均衡器:

  • Application Load Balancer: Application Load Balancer 适用于 HTTP 和 HTTPS 流量。它在 OSI 模型的第 7 层(应用程序)中工作。它可以平衡 Amazon Virtual Private Cloud (VPC) 范围内的流量。
  • 网络负载均衡器:网络负载均衡器适用于具有低延迟和高性能要求的 TCP 流量。它在第 4 层(传输)中工作。它更擅长处理不可预测的流量模式。
  • 经典负载均衡器:这些类别的负载均衡器不受欢迎。它们是为遗留目的而保留的。亚马逊积极阻止新客户使用此负载均衡器。

Elastic Load Balancer 为您处理所有资源需求。如果您使用启用了 Auto Scaling 的应用程序设置 ELB,负载均衡器将跟踪自动扩展的服务器,以确保它可以将流量路由到健康的服务器。ELB 也可以在混合云中用于将流量路由到您的本地服务器。

Azure 负载均衡器

Azure 是 Microsoft 的云解决方案。它已经在其标准套件中提供了完全托管的负载平衡服务。应用程序网关提供传输层安全 (TLS) 协议终止或 HTTP/HTTPS 请求和应用程序层处理。流量管理器提供 DNS 负载平衡解决方案。

Azure 有两种类型的负载均衡器:基本 SKU 和标准 SKU。Standard SKU 可以处理 Basic SKU 的所有职责。标准 SKU 具有更高的价位和更高的性能。以下是一些主要区别:

  • 池大小:基本 SKU 最多可以处理 100 个实例,而标准 SKU 最多可以处理 1000 个实例。
  • 端点限制:基本 SKU 可以为单个可用性集或虚拟机规模集中的虚拟机 (VM) 提供服务。标准 SKU 可以在单个虚拟网络的范围内工作,该网络可以跨多个可用性集和虚拟机规模集进行扩展。
  • 管理操作时间:基本的 SKU 管理操作可能需要 60-90+ 秒。标准 SKU 操作在 30 秒内执行。
  • 服务水平协议 (SLA):基本 SKU SLA 取决于 VM SLA。标准 SKU 保证具有两个健康 VM 的数据路径的 99.99%。
  • 定价:基本 SKU 是免费的。标准 SKU 定价取决于入站和出站数据以及实施的规则数量。

GCP 负载均衡器

Google Cloud Platform (GCP)提供高性能和可扩展的负载平衡解决方案。它的负载均衡器可以平衡 HTTP/HTTPS 和 TCP/SSL。此外,它具有 SSL 卸载解决方案,因此您可以集中管理您的 SSL 证书。它还添加了 UDP 负载平衡。负载平衡器与 Google 内容分发网络 (CDN) 无缝集成。这意味着从 GCP 下载内容的用户可以获得更好的性能。

全局外部负载平衡可以通过 HTTP(S) 负载平衡、SSL 代理负载平衡或 TCP 代理负载平衡来处理。区域外部负载均衡通过网络负载均衡处理,区域负载均衡通过内部负载均衡处理。价格取决于转发规则(协议转发)和入口和出口数据处理。

DigitalOcean 负载均衡器

DigitalOcean 是一家在开源社区和小型企业中广受欢迎的云服务提供商。它提供完全托管、高度可用的负载均衡器。DigitalOcean 中的每个服务器都称为 Droplet。负载平衡器旨在将流量自动路由到故障转移服务器或 Droplet。

DigitalOcean以固定价格提供负载均衡服务。负载均衡器可以支持 HTTP、HTTPS、HTTP/2 和 TCP。在 HTTPS 场景中,它们可以处理 SSL 直通和 SSL 终止。他们可以使用循环和最少连接算法进行平衡。即使负载均衡器在多个区域中可用,特定负载均衡器也只能将流量路由到位于其区域中的后端服务器。

Cloudflare 负载均衡器

Cloudflare是一个内容交付网络 (CDN)。它为其服务提供 DNS 负载平衡。它定期运行健康检查,并可以快速迁移到故障转移服务器以避免客户不满。Cloudflare 负载均衡器可以根据地理位置路由流量,因此欧洲请求将由欧洲数据中心提供服务,而美国请求将由美国数据中心提供服务。它改善了延迟。

用户可以订阅不同层次的负载均衡器以满足他们的特定需求。定价层取决于来源的数量、健康检查频率、地理路由等。每个层还包括一定数量的每月 DNS 查询。

封装负载均衡器

是另一个 CDN 提供商。它提供负载均衡器即服务 (LBaaS)。它为内容交付提供本地和全局负载平衡。这是一个简单的基于规则的负载平衡系统,适用于 HITACHI、SIEMENS 和 XOOM 等大型企业。它使用专业、商业和企业级别的每个站点每月订阅。

注意:即使每个云服务都提供自己的负载均衡解决方案,您也可以在云实例上使用软件负载均衡器来创建自己的负载均衡器。

选择负载均衡器的注意事项

显然,任何寻找负载均衡器的人都有很多选择。在决定解决方案时,请考虑以下因素:

  • 业务需求:采取阻力最小的路径是很诱人的。如果您与云提供商合作,您可能会开始使用他们的负载均衡器。但是想想对您的业务的长期影响。如果您将来有可能需要使用混合模型(云和本地)或使用多个云提供商,您将不得不改变策略。因此,选择一个考虑到您未来业务目标的解决方案。
  • 估计工作负载:查看您的业务目标并尝试估计流量的增长。您可能正在订阅某些负载平衡服务,该服务对于较大的流量激增可能不具有成本效益,或者您可能正在使用无法扩展的解决方案。未来的工作负载应该是您选择过程的一部分。
  • 高可用性 (HA):如果您的应用程序需要高可用性,那么您需要钱可以买到的最好的负载均衡器。但是,如果您为非 HA 应用程序使用昂贵的负载均衡器,您可能会浪费金钱和资源。因此,请尝试根据您的服务质量要求选择解决方案。
  • 安全性:如今,每个应用程序都面临着安全威胁。当您正在寻找负载均衡器时,这表明业务良好并且您的流量正在增加。这也意味着你正在成为一个更大的目标。因此,请确保您选择的负载均衡器具有最新的安全功能。
  • 投资回报率 (ROI):即使是云服务上的免费负载均衡器也需要大量时间投资。除了硬件、软件或订阅成本外,还要考虑学习、配置和操作系统的时间。根据总拥有成本 (TCO) 计算投资回报率。
点赞收藏
willberthos

keep foolish!

请先登录,查看3条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步

为你推荐

【译】比较低延迟消息队列中的持久性方法

【译】比较低延迟消息队列中的持久性方法

【译】Netty 在Java中处理上万并发连接时,必须遵守的六大原则

【译】Netty 在Java中处理上万并发连接时,必须遵守的六大原则

基于开源方案构建统一的文件在线预览与office协同编辑平台的架构与实现历程

基于开源方案构建统一的文件在线预览与office协同编辑平台的架构与实现历程

可观测性:如何使用 OpenTelemetry进行端到端的追踪

可观测性:如何使用 OpenTelemetry进行端到端的追踪

【译】Maven 实现高可用性 (HA) 的 7 个小技巧

【译】Maven 实现高可用性 (HA) 的 7 个小技巧

如何修改 Nginx 源码实现 worker 进程隔离

如何修改 Nginx 源码实现 worker 进程隔离

5
3