负载均衡新手指南

负载均衡将资源分配到当下最需要的地方。
104 位读者喜欢这篇文章。

在个人电脑刚兴起时,一个家庭很可能只有一台(或更少)电脑。孩子们白天在上面玩游戏,父母晚上做会计或编程,或浏览 BBS。但想象一下今天的单电脑家庭,你就可以预测它会造成的冲突。每个人都想同时使用电脑,而且键盘和鼠标也不够用。

或多或少,IT 行业也发生了同样的场景,因为计算机变得越来越普及。对服务和服务器的需求增加到可能因过度使用而停顿的程度。幸运的是,我们现在有了负载均衡的概念来帮助我们处理这种需求。

什么是负载均衡?

负载均衡是一个通用术语,指的是您为确保您管理的资源得到有效分配而做的任何事情。对于 Web 服务器的系统管理员来说,负载均衡通常意味着确保 Web 服务器软件(例如 Nginx)配置了足够的工作节点来处理涌入的访问者激增。换句话说,如果一个站点突然变得非常受欢迎,并且其访问者数量在几分钟内翻了两番,则运行该服务器的软件必须能够响应每个访问者,而不会让他们注意到服务降级。对于简单的站点,这就像一行配置选项一样简单,但对于具有动态内容和每个用户多个数据库查询的复杂站点,这可能是一个严重的问题。

这个问题本应通过云计算来解决,但 Web 应用程序在遇到意外激增时未能扩展出来并非不可能。

在负载均衡方面,要记住的重要一点是,有效分配资源并不一定意味着均匀分配资源。并非所有任务在所有时间都需要所有可用资源。智能负载均衡策略仅在需要时才向用户和任务提供资源。这通常是应用程序开发人员的领域,而不是 IT 基础设施的责任。异步应用程序对于确保离开电脑去喝咖啡的用户不会占用服务器上的宝贵资源至关重要。

负载均衡如何工作?

负载均衡通过将工作负载分配到多个计算节点来避免瓶颈。这些节点可以是数据中心的物理服务器、云中的容器、为边缘计算战略性部署的服务器、复杂应用程序框架中的独立 Java 虚拟机 (JVM) 或在单个 Linux 服务器上运行的守护程序。

其理念是将一个大问题分解为小任务,并将每个任务分配给一台专用计算机。例如,对于一个要求用户登录的网站,该网站可能托管在服务器 A 上,而登录页面和随之而来的所有身份验证查找都托管在服务器 B 上。这样,新用户登录帐户的过程不会从正在积极使用该站点的其他用户那里窃取资源。

云负载均衡

云计算使用容器,因此通常没有单独的物理服务器来处理不同的任务(实际上,有许多单独的服务器,但它们聚集在一起充当一个计算“大脑”)。相反,从几个容器中创建一个“pod”。当一个 pod 由于其用户或任务负载而开始耗尽资源时,会生成一个相同的 pod。Pod 共享存储和网络资源,并且每个 pod 在创建时都会分配给一个计算节点。可以根据负载需要按需创建或销毁 Pod,以便用户无论有多少用户都能体验到一致的服务质量。

边缘计算

边缘计算在负载均衡时考虑了物理世界。云自然是一个分布式系统,但在实践中,云的节点通常集中在少数数据中心。用户离运行云的数据中心越远,他们为获得最佳服务必须克服的物理障碍就越多。即使使用光纤连接和适当的负载均衡,位于 3000 英里外的服务器的响应时间也可能大于位于仅 300 英里外的服务器的响应时间。

边缘计算将计算节点带到云的“边缘”,试图弥合地理鸿沟,形成云的一种卫星网络,因此它也在良好的负载均衡工作中发挥作用。

什么是负载均衡算法?

负载均衡有很多策略,它们的复杂程度取决于所涉及的技术和需求。负载均衡不必很复杂,即使在使用 KubernetesKeepalived 等专用软件时,从一开始就进行负载均衡也很重要。

当您可以设计应用程序自行采取简单的预防措施时,不要依赖容器来平衡负载。如果您从一开始就将应用程序设计为模块化和短暂的,那么您将受益于巧妙的网络设计、容器编排以及未来技术带来的负载均衡机会。

一些流行的算法可以指导您作为应用程序开发人员或网络工程师的工作,包括

  • 按顺序将任务分配给服务器(这通常称为轮询)。
  • 将任务分配给当前最不繁忙的服务器。
  • 将任务分配给响应时间最佳的服务器。
  • 随机分配任务。

这些原则可以组合或加权,例如,在分配特别复杂的任务时,优先考虑组中最强大的服务器。编排通常用于管理员不必绞尽脑汁想出完美的负载均衡算法或策略,尽管有时由管理员来选择要使用哪种负载均衡方案的组合。

预料之外

负载均衡实际上不是为了确保您的所有资源在整个网络中均匀使用。负载均衡完全是为了保证可靠的用户体验,即使在意外情况发生时也是如此。良好的基础设施可以承受计算机崩溃、应用程序过载、网络流量冲击和用户错误。考虑您的服务如何才能具有弹性,并从一开始就相应地设计负载均衡。

接下来阅读什么

什么是边缘计算?

边缘计算有望将下一代物联网技术推向主流。以下是它如何与云协同工作以造福所有业务运营……

Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。他曾在电影和计算机行业工作,而且经常同时从事这两个行业。

3 条评论

很棒的文章,Seth!

我喜欢容器的概念。结合负载均衡,它可以为复杂项目设计可靠的架构

非常好的文章

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.