负载平衡。 人们普遍认为我们需要它、依赖它、每天使用它来扩大(并希望缩小)应用。 它已成为关键的基础设施,不仅负责扩展以满足需求,还负责确保企业依赖其实现生产力和利润的应用和服务的持续可用性。
这就是为什么我们需要重新审视它。 因为负载均衡不应该像操作人员那样具有战术性,而操作人员现在常常需要提供、配置和部署这些神奇的服务。 从战略角度来看,负载均衡能够提高性能、降低风险,并有助于更有效地利用交付应用所需的资源。 他们比经常被迫承受的“管道”绰号更聪明,理解一些关键点将有助于操作人员更多地思考如何使用负载均衡来支持应用。
因此,事不宜迟,以下是操作人员真正需要了解的有关负载均衡的三件事。
首先要说的是,循环赛是您应该提及的最后一种算法,但您已经知道这一点了,对吗? 因此我们将跳过这一步并解决更智能的算法,例如最少连接和最快响应时间。 当然,当您制定如何平衡性能和有效利用资源的策略时,这些都是更好的选择。 每一个方法都考虑了应用的特性(或者至少是交付应用的平台的特性),这些特性对于决定哪个应用实例(或容器,如果你愿意的话)应该接收下一个请求至关重要。 最少连接意味着,如果一个实例具有较少的连接,则它具有更大的容量,因此能够更好地满足此请求。 它选择的是容量效率而不是性能。
另一方面,最快的响应时间是根据性能选择引导请求。 实例越快,被选中的次数就越多。 操作公理就是如此(随着负载的增加,性能会下降),这意味着最终负担较轻的服务器将响应更快,从而被选中。 虽然这意味着对容量效能的认可,但该算法每次都会选择性能而不是容量。
但现在请注意算法的名称: 最少且最快。 现在想象一下,如果两只乌龟在人行道上赛跑,其中一只速度更快,尽管它们都以我们称之为“慢”的速度行进。 对于最少连接也是如此。 如果要在 99 和 100 之间做出选择,那么 99 肯定是最低的。
为什么重要
负载均衡管理请求的方式对性能和可用性有直接的影响。 两者都是最终影响客户参与度和员工生产力的关键特征。 优化包括负载均衡在内的架构将有助于确保企业成功实现更高的生产力和利润目标。
更深入的探索:
自从云和软件定义数据中心兴起以来,弹性已经成为扩展应用的方式。 弹性需要按需扩大和缩小规模,作为优化资源(和预算)使用的一种手段。 当您可以根据需要扩大规模时,为什么还要过度配置呢? 同样,依赖于冗余原则的高可用性(HA)架构也几乎已经过时了。 为什么需要在主应用程序实例发生故障(不太可能)的情况下将空闲资源置于待机状态? 这是对资本和运营预算的浪费! 出去,出去待命!
虽然按需故障和扩展是一个美丽的理论,但在实践中并不是那么简单。 事实是,即使是虚拟服务器(或云服务器,或任何您想使用的术语)也需要时间来启动。 如果您(或您的自动化系统)等到主服务器出现故障或容量达到上限后才启动另一个服务器,那就已经太晚了。 多云环境中的容量规划不能基于传统环境中的相同数学计算。 现在,容量阈值需要将消耗率以及启动另一台服务器所需的时间考虑在内,以便根据需求无缝扩展。
故障转移也是如此。 如果主服务器发生故障,则需要花费一些时间来启动替代服务器。 在这段时间里,人们可能会失去联系、超时并可能为了竞争对手或最新的猫咪视频而抛弃你。 虽然当你确实需要备用零件时,闲置的备用零件似乎是一种浪费(就像保险一样),但你会很高兴它在那里。 特别是,如果该应用程序负责客户参与度或收入,那么即使是几分钟的停机风险(及其后续成本)也可能超过保持备用状态的成本。
有趣的是,容器似乎可以通过极快的启动时间解决这些问题。 如果可用性、性能和成本都同等重要,那么也许是时候开始探索容器在平衡三者方面可以带来的价值了。
为什么重要
停机成本高昂。 停机的原因并不像一开始就避免停机那么重要。 确保在发生故障时采用正确的架构和故障转移计划对于维持业务成功至关重要的持续可用性至关重要。
更深入的探索:
在应用程序从开发阶段转向生产阶段时发生的所有问题中,这可能是最常见且最容易避免的问题。 您会看到,大多数负载均衡服务(无论如何,所有好的服务)都是代理。 这意味着客户端连接到代理,代理连接到您的应用程序。两者都使用 TCP 来传输 HTTP,这意味着它必须遵守网络规则。 源 IP(您认为的客户端 IP)实际上是代理的 IP 地址。 如果您根据 IP 地址进行安全、身份验证或计量,这将带来严重的问题。 您从 HTTP 标头中提取的值不是您想要的值。
业界已基本标准化了如何利用 HTTP 自定义标头来处理此类问题。 X-Forwarded-For标头可能是您真正在寻找的 – 这是代理在转发请求时放置真实的实际客户端 IP 地址的地方。 不幸的是,它不是一个标准,它更像是一个事实上的“我们都同意”的标准,所以你需要验证。
关键在于您正在寻找的客户端 IP 地址不是您认为的那个,因此开发人员需要在需要该信息的应用程序进入生产环境并突然停止工作之前考虑到这一点。
为什么这对企业如此重要
解决生产中的问题比在开发或测试环境中的问题成本要高得多。 查找和解决问题的时间都会对项目时间表产生负面影响,并阻碍产品上市时间,而产品上市时间对于应用领域的竞争优势和业务成功至关重要。 认识到这个常见问题并在开发或测试阶段解决它可以确保更快、无缝地部署到生产和市场。
更深入的探索: