在当今充满活力的世界,企业不断面临着向全球数百万用户提供关键应用的挑战。 部署网络和应用服务以使应用程序具有可扩展性、安全性和可用性极其重要。 这是应用交付控制器(ADC)发展的主要原因之一。 然而,如果没有坚实的基本负载均衡技术基础,这些功能都无法实现。 因此,让我们首先了解负载均衡的重要性、它如何实现高效的应用交付,以及 ADC 如何不断发展并拥抱云优先世界。
负载均衡的全部目的是平衡多台物理服务器之间的传入网络或应用流量 - 并使这些服务器在外界看来就像一台服务器。 这样做的原因有很多,但主要驱动因素是“可扩展性”、“高可用性”和“可预测性”的需求。
可扩展性是指在不影响现有性能的情况下动态或轻松适应增加的负载的能力。 另一方面,高可用性 (HA) 是指即使在一个或多个系统出现故障时站点仍能保持可用和可访问的能力。 服务虚拟化(模仿软件组件的行为来加速和测试应用开发)为可扩展性和可用性提供了一个有趣的机会。 如果服务或用户接触点与实际服务器分开,则可以通过添加更多服务器来扩展应用。 此外,单个服务器的故障不会导致整个应用不可用。 可预测性不太明确,因为它代表了 HA 的部分内容以及沿途获得的一些经验教训。 最好将其描述为对服务交付的方式和时间的可用性和性能的控制。
追溯到商业互联网发展的早期,许多想要成为网络百万富翁的人发现他们的计划存在严重问题。 大型机没有 Web 服务器软件(直到 AS/400e 才有),而且即使有,在启动预算内也买不起。 他们能够负担得起的是一家知名 PC 制造商提供的标准、现成的服务器硬件。 其中大多数面临的主要问题是,单个基于 PC 的服务器根本无法处理其业务产生的流量。 一旦发生故障,他们就会下线并停止营业。 幸运的是,其中一些人计划通过解决这个特殊问题来赚取数百万美元。 这导致了负载均衡的诞生。
在出现任何商用的、专用的负载均衡设备之前,人们曾多次尝试利用现有技术来实现可扩展性和可用性的目标。 最流行(且仍在使用)的技术是 DNS 循环。
在这种方法下,DNS 会使用相同的 DNS 名称为不同的服务器分配多个唯一的 IP 地址。 这意味着,当用户第一次请求解析“ www.example.com ”时,DNS 服务器会将每个新连接传递给队列中的第一个服务器,直至到达队列底部,然后再返回第一个服务器。 这个解决方案很简单,并且能够在多台机器上均匀分布连接。
从可扩展性的角度来看,该解决方案效果非常好,因为它提供了向 DNS 名称添加几乎无限数量的服务器的机会。 然而,就可用性而言,该解决方案造成了障碍,因为 DNS 无法知道列出的服务器是否正常工作。 如果服务器不可用并且用户尝试访问它,则请求可能会被发送到已关闭的服务器。
DNS 循环的另一个驱动因素是可预测性,即对将用户发送到特定服务器具有高度的信心。 这是以持久性的思想为中心的——确保会话开始后或用户恢复先前挂起的会话时,用户不会负载平衡到新服务器的概念。 这是 DNS 循环无法解决的一个非常重要的问题。
为了解决这个问题,首批专门构建的解决方案之一是将负载均衡直接内置到应用软件或应用服务器的操作系统 (OS) 中。 尽管实施方案与开发方案的公司一样多,但大多数解决方案都围绕基本的网络欺骗展开。 例如,这样的解决方案将所有服务器放在一个池中(也称为集群),并且拥有各自的物理 IP 地址。
当用户尝试连接到服务时,他们会连接到池 IP,而不是服务器的物理 IP。 池中的哪个服务器首先响应连接请求,就会将用户重定向到物理 IP 地址(他们自己的地址或池中的另一个系统),然后服务会话将启动。 该解决方案的主要优点之一是应用开发人员可以使用各种信息来确定客户端应该连接到哪个物理 IP 地址。 例如,他们可以让池中的每个服务器都维护每个池成员已服务的会话数,然后将任何新请求定向到利用率最低的服务器。
最初,该解决方案的可扩展性是显而易见的。 您所要做的就是构建一台新服务器,将其添加到池中,然后就可以增加应用的容量。 然而,随着时间的推移,基于应用程序的负载均衡的可扩展性受到质疑。 由于池成员需要彼此保持持续联系以了解下一个连接应该交给谁,因此随着每个新服务器添加到池中,池成员之间的网络流量呈指数增长。 当池增长到一定规模(通常为 5-10 台主机)后,这些流量开始影响最终用户流量以及服务器本身的处理器利用率。 因此,只要您不需要超过少量服务器(顺便说一下,比 DNS 循环少),可扩展性就很好。
通过 DNS 循环和软件负载均衡,HA 得到显著提高。 由于池成员之间保持着持续的沟通,并且应用开发人员可以利用其广泛的应用知识来了解服务器何时正常运行,因此这些解决方案实际上消除了用户访问无法满足其请求的服务器的可能性。 然而,必须指出的是,智能 HA 特性的每次迭代都会对服务器和网络利用率产生相应的影响,从而进一步限制了可扩展性。 HA 的另一个负面影响是在可靠性领域。 这些系统中用于分配流量的许多网络技巧都很复杂,并且需要大量的网络级监控。 因此,这些分发方法经常会遇到影响整个应用和应用网络上所有流量的问题。
这些解决方案还增强了可预测性。 由于应用设计人员知道何时以及为何需要将用户返回到同一台服务器而不是进行负载均衡,因此他们可以嵌入有助于确保用户在需要时保持持久性的逻辑。 他们还使用相同的“池”技术在服务器之间复制用户状态信息,从而消除了许多首先需要持久性的实例。 最后,由于他们拥有深厚的应用知识,他们能够更好地根据应用的真实运行状况来开发负载均衡算法,而不是根据连接之类的东西,因为连接并不总是服务器负载的良好指标。
除了真正的可扩展性的潜在限制和可靠性问题之外,专有的基于应用程序的负载均衡还有一个缺点: 它依赖于应用供应商来开发和维护。 这里的主要问题是并非所有应用都提供负载均衡(或池)技术,而提供该技术的应用程序通常不能与其他应用供应商提供的技术兼容。 虽然有多家组织生产了与供应商无关的操作系统级负载均衡软件,但不幸的是,它们也面临同样的可扩展性问题。 而且,由于没有与应用紧密集成,这些软件“解决方案”还面临着额外的 HA 挑战。
专用负载均衡的第二次迭代是作为基于网络的设备出现的。 他们是当今应用交付控制器的真正创始人。 这些设备物理上位于应用之外,虽然它们最初是作为负载均衡器启动的,但它们使用更直接的网络技术(如 NAT)实现了负载均衡。 这些设备会向外界提供一个虚拟服务器地址,当用户尝试连接时,设备会将连接转发到最合适的真实服务器上。
负载均衡器可以精确控制哪个服务器接收哪个连接,并使用越来越复杂的“健康监视器”来确保应用服务器(真实的物理服务器)按需要做出响应。 如果服务器没有正确响应,负载均衡器将自动停止向该服务器发送流量,直到它产生所需的响应。 尽管健康监视器很少像应用开发人员自己构建的监视器那样全面,但基于网络的硬件方法可以以统一、一致的方式为几乎每个应用提供基本的负载均衡服务 - 最终创建一个特定于应用服务器的真正虚拟化服务入口点。
从可扩展性的角度来看,开始用基于硬件的解决方案取代基于软件的负载均衡的组织会发现其服务器的利用率急剧下降。 这使得他们不必在短期内购买额外的服务器,并有助于在长期内提高投资回报率。
同样,HA 有助于降低解决方案的复杂性并提供应用程序无关的负载均衡,从而提高解决方案的可靠性和深度。 基于网络的负载均衡硬件使企业主能够为所有应用提供高水平的可用性,而不是仅为少数具有内置负载均衡的应用程序提供高水平的可用性。
可预测性是基于网络的负载均衡硬件添加的核心组件。 现在,预测新连接的方向变得容易得多,而且操纵起来也容易得多。 这些设备为该过程添加了智能,从而有助于创建受控的负载分配(而不是动态 DNS 的不受控制的分配)。 这使得企业主能够根据服务器处理负载的能力将负载分配给服务器。
基于网络的负载平衡器和虚拟化的出现为安全和管理带来了新的好处,例如,向互联网社区掩盖应用服务器的身份,并提供从服务器“释放”连接的能力,以便可以在不影响用户的情况下将其脱机进行维护。 这就是 ADC 起源的基础。
通过中央负载均衡功能(也是一个全代理),IT 看到了分层和整合新兴服务的绝佳场所。 这导致负载均衡设备演变为可扩展的 ADC 平台。 简单来说,代理是负载均衡的基础,也是实现ADC的底层技术。
在讨论 ADC 安全性时,代理(基础技术)创建的虚拟化至关重要。 无论我们讨论 SSL/TLS 加密卸载、集中式身份验证,甚至是应用程序流畅的防火墙,这些解决方案的强大之处在于,负载均衡器(硬件或虚拟版)是所有应用的虚拟化聚合点。 集中式身份验证就是一个典型的例子。 传统的身份验证和授权机制一直直接构建于应用本身之中。 与基于应用程序的负载均衡一样,每个实现都依赖于每个应用程序的实现,并且是其独有的,从而产生众多不同的方法。 相反,通过在虚拟化入口点对所有应用应用身份验证,可以应用单一、统一的身份验证方法。 这不仅大大简化了身份验证系统的设计和管理,而且通过消除执行该功能的需要还提高了应用服务器本身的性能。 此外,它还消除了(特别是在自主开发的应用中)花费时间和金钱在每个单独的应用中开发身份验证流程的需要。
可用性是与原始负载均衡器最容易联系在一起的 ADC 属性,因为它与所有基本负载均衡器属性相关:可扩展性、高可用性和可预测性。 然而,ADC 比负载均衡器更进一步。 ADC 的可用性还代表了应用依赖性和动态配置等高级概念。 ADC 能够理解应用现在很少以独立的方式运行: 他们通常依赖其他应用来实现他们的设计。 通过将这些其他流程也考虑进去,这些知识增强了 ADC 提供应用可用性的能力。 市场上最智能的 ADC 还提供编程接口,允许它们根据外部输入动态地改变提供服务的方式。 这些接口支持现代环境(如云和容器化部署)所需的动态配置和自动扩大/缩小。
性能增强是负载均衡概念的另一个明显的扩展。 负载均衡器通过确保连接不仅指向可用的服务(并在可接受的时间内响应),而且还指向连接量和/或处理器利用率最少的服务,从本质上提高了应用的性能。 这确保了每个新连接都由最能处理它的系统提供服务。 后来,随着 SSL/TLS 卸载(使用专用硬件)成为负载均衡产品的常见主要内容,它减少了加密流量的计算开销以及后端服务器的负载,从而也提高了它们的性能。
如今的 ADC 甚至走得更远。 这些设备通常包括缓存、压缩甚至速率整形技术,以进一步提高应用的整体性能和交付。 此外,ADC 并不是提供这些服务的传统独立设备的静态实现,而是可以利用其固有的应用智能,仅在这些服务能够产生性能优势时才应用这些服务,从而优化它们的使用。
例如压缩技术—尽管人们普遍认为 — 但并不一定对应用的所有用户都有益。 当然,由于瓶颈是实际吞吐量,因此带宽较小的用户可以从较小的数据包中受益匪浅。 即使必须穿越长距离的连接也可以受益,因为较小的数据包意味着传输数据的往返次数更少,从而降低了网络延迟的影响。 然而,在应用压缩时,具有大带宽的短距离连接(例如,在同一个大陆内)的性能可能会更差。 由于吞吐量不一定是瓶颈,因此压缩和解压缩的额外开销会增加延迟,而从性能角度来看,增加的吞吐量无法弥补这一延迟。 换句话说,如果管理不善,压缩技术作为一种解决方案可能会比原来的问题更糟糕。 但是,通过仅在有利于整体性能时智能地应用压缩,ADC 可以优化压缩技术的使用和成本,为最能发挥其作用的功能留下更多的处理器周期。
由于数字化转型是一项如此重要的战略要务,许多企业已经开始踏上云计算之旅。 随着越来越多的应用出现并改变着我们周围的世界,人们相信迁移到云端的组织将享受许多好处,例如更高的灵活性、更协调的运营成本、按需可扩展性以及对核心业务的更多关注。
“云”并不是一个由共享计算、存储和网络资源组成的无定形单一实体;相反,它是由通常部署在多个全球节点上的提供商、基础设施、技术和环境的复杂组合组成。 这就是许多企业实际上将应用部署到许多不同的云(公共云、私有云,甚至是所有云的组合)的原因。 这就是多云:新的现实。
即使在这种快速发展的形势下,仍有几个因素阻碍了云计算的采用。 第一个挑战是多云蔓延,其中现有应用被“提升和转移”,并且“诞生于云”的应用以无计划和无管理的方式部署。 此外,为了满足短期需求,组织倾向于使用不同的云平台、不同的架构、不同的应用服务和多种工具集。 这会导致整个企业的架构复杂化,并且使应用从一个环境转移到另一个环境变得更加困难,更不用说成本高昂了。
尽管存在这些挑战,未来几年公共云和私有云内部及跨公共云的新部署必然会增加。 多云时代正在快速到来,企业是时候部署智能应用服务和 ADC 了,这些服务和 ADC 不仅仅支持有限的应用,或者仅在硬件和单一云中运行。
ADC 是过去的负载均衡器所占据的关键网络空间的自然演变。 尽管 ADC 很大程度上继承了那些过去的设备,但它们是一种独特的新一代设备,不仅提供可用性,还提供性能和安全性。 正如其名称所暗示的,他们关注以最佳方式交付应用的各个方面。
凭借应用智能、SSL 卸载和编程接口等先进功能,现代 ADC 可以帮助组织扩展业务并随时随地接触用户。 随着技术世界不断变化的需求,ADC 也更有能力适应多云和容器环境中的最新技术。
最后,我们可以有把握地说,ADC 不仅将成为以更快、更智能、更安全的方式交付应用的主要渠道和集成点,而且还将继续发展并拥抱云优先世界。