VPS托管提供商必须能够适应每个用户的需求。每秒产生数千美元收入的跨国在线业务应该能够获得与开始业余项目的博主相同的高速、可靠的服务。
对于大型跨国企业来说,单个 VPS无法满足需求。流量大且任务关键型应用程序多的网站通常使用虚拟服务器集群,这些集群协同工作以提供出色的正常运行时间统计数据和快速的加载速度。
如果没有负载均衡器(负责将请求重定向到各个虚拟实例的组件),这是不可能的。它必须考虑到冗余、安全性和性能,并且应配置为高效地提供数据,而不管负载如何。
今天,我们将讨论实现这一目标的一些策略。
VPS主机中的负载平衡简介
我们都知道虚拟专用服务器非常灵活且易于扩展。只需单击鼠标即可添加更多资源,并且如果将其部署在适当的云基础架构上,则几乎没有任何升级限制。然而,尽管单VPS 设置具有诸多优势,但它并不总是适合每个项目。
更具体地说,它在某些时候可能至关重要的两个方面并没有完全实现:
高可用性
这是行业术语,用于描述正常运行时间超过 99.999% 的服务。典型的虚拟服务器无法保证此类统计数据。
问题是,如果 VPS 崩溃,其上托管的所有内容都会离线。现代云基础设施允许主机快速重新部署服务器,但这至少需要几分钟——对大多数人来说没问题,但如果你正在运行诸如移动银行或交通控制等关键任务操作,那就不理想了。
出色的全球表现
您的网站越受欢迎,就越难始终保持出色的性能。流量高峰带来的额外负载必然会降低服务器速度,如果您没有其他实例可依赖,速度下降会很明显。
此外,如果您的访客来自世界各地,他们中的一些人将需要等待数据在虚拟服务器和他们的屏幕之间传输数千英里。
托管云 VPS 服务器集群是解决这些缺点的少数解决方案之一。两个或多个虚拟机(或节点)部署并连接到网络中。它们都包含您的项目数据并可以处理传入的请求。
除了多台服务器提供的硬件资源外,您还可以获得冗余– 如果其中一个实例发生故障,其他实例可以随时弥补不足并保持您的项目在线。您还可以在全球多个位置部署服务器并减少延迟。
构建 VPS 集群主要有两种方法:
- 主动-备用拓扑– 一个主节点处理所有传入请求,其余节点处于备用状态。如果主服务器出现故障 – 它会下线,而其中一个备份节点会启动以弥补它。如果第二个节点出现问题,则第三个节点会启动,依此类推。
- 主动-主动拓扑——集群中的每个节点同时处理请求。
在这两种情况下,互联网和虚拟服务器网络之间都有一个负载平衡器。它的工作是将每个请求重定向到集群中最合适的服务器。
如果您使用Active-Standby 拓扑,负载平衡器会将请求发送到主服务器。只有当主节点出现问题时,才会使用其他节点。切换是无缝的,称为故障转移。其目的是确保您的网站可用性不受任何硬件问题的影响。
在主动-主动集群中,负载平衡器使用几种算法之一来选择哪个节点来处理每个传入请求。多台服务器同时工作以均匀分配流量,确保完美无缺的性能。如果其中一个节点离线,流量会立即重定向到其余机器,用户不会看到任何错误。
您还可以在全球多个地点部署VPS 解决方案,并配置负载平衡器以将每个请求发送到距离客户端最近的服务器。这样可以确保每个人的加载速度相同,无论他们身在何处。
但这只是对负载均衡器功能的粗略描述。让我们更深入地了解一下细节。
负载均衡器的类型
负载平衡器对于确保您的VPS 集群提供出色的性能和可用性至关重要。但为了让一切正常运转,您需要确保选择并配置了正确的解决方案。
负载均衡器的两种主要类型是:
- 硬件负载均衡器是连接到网络的物理设备。它有自己的操作系统和软件,旨在根据设定的算法重定向流量。
- 软件负载均衡器(也称为虚拟负载均衡器)是一个软件包,通常部署在虚拟机上,并将请求分派到不同的集群节点。与硬件负载均衡器不同,您不需要单独的设备或特定的操作系统。
优点缺点
虚拟负载均衡器在几个关键方面领先。
首先,您有价格问题。硬件负载平衡器并不便宜,在数据中心部署它们也不便宜。说到数据中心,硬件平衡器最好位于托管 VPS 集群所在的位置。如果您在多个数据中心都有节点,则需要在每个数据中心都安装一个负载平衡器,再加上一个将流量重定向到不同位置的中央设备。
此外,使用托管 VPS 集群而不是单个服务器的全部意义在于消除单点故障。如果您只有一个硬件负载平衡器处理所有传入请求,则整个网络都依赖于它的健康状况。
一个好的 VPS 集群在每个位置至少有两个负载平衡器,它们以主动-备用配置工作,以确保冗余。换句话说,使用硬件负载平衡器的成本可能会迅速失控。
相比之下,虚拟负载均衡器可以部署在经济实惠的 VPS 解决方案上。同时协调多个软件负载均衡器更直接、更便宜,尤其是当您拥有多区域集群时。更不用说,它们更容易扩展——无论是垂直扩展还是水平扩展。
负载均衡器还可以根据其在所谓的OSI 模型中的位置进行分类。OSI 代表开放系统互连,该模型自 1980 年代以来一直用于可视化计算机网络中参与者之间的通信。
根据 OSI,共分为七层:
- 物理层
- 数据链路层
- 网络层
- 传输层
- 会话层
- 表示层
- 应用层
负载均衡器可分为第 4 层负载均衡器或第 7 层负载均衡器。以下是您需要了解的内容:
- 第 4 层负载平衡
第 4 层负载均衡器位于传输层。当它收到传入请求时,有关它的唯一信息是发送者的 IP 地址和网络端口。通常,请求本身中的数据是加密的,在传输层,平衡器无法解密它。在没有更多信息的情况下,它只是使用已配置的软件算法将请求重定向到其中一个集群节点。
- 第 7 层负载平衡
第 7 层是应用层;在此层,负载均衡器可以解密请求中的数据。根据收集到的信息,它可以决定将流量重定向到特定服务器。理论上,第 7 层负载均衡器可以修改标头和数据。
优点缺点
第 4 层负载平衡简单快捷。平衡器不需要读取、查找或比较数据,因此重新路由所需的时间和资源较少。
传输层的负载平衡也依赖于目标和源之间的单个 TCP 连接,因此平衡器上的整体负载较低。而且由于此时没有数据被解密,因此平衡器不会成为黑客的目标。
在应用程序级别解密数据使第 7 层负载平衡器成为可能的切入点,但对正确配置的集群的攻击非常罕见且难以实现。同时,平衡器可以在将数据重新路由到特定节点时考虑数据的性质,这意味着更灵活的设置和更多选项可将正确的流量引导到正确的 Web 服务器。第 7 层负载平衡还可以进行缓存,因此您有另一个机会从您的网站或应用程序中提取更多性能。
缺点是第 7 层负载平衡设置起来比较棘手,并且由于它依赖于多个 TCP 连接– 您很可能会更快地达到平衡器的容量。
第 4 层和第 7 层负载均衡器处理请求的方式不同也意味着它们不支持相同范围的负载均衡算法。
负载平衡算法
负载平衡算法包括负载平衡器在将流量重定向到特定节点时遵循的一组规则。 不同集群的实现方式不同,算法通常根据客户的要求进行定制。 但是,可以根据它们采用的原则将它们分组在一起。 以下是最常见的类型。
循环负载平衡
负载均衡器会形成一个服务器队列,并将每个后续请求传递到队列中的下一个节点。到达队列末尾后,负载均衡器会返回到队列开头。
例如,假设您有一个由 10 台服务器组成的集群,有 11 位网站访问者依次进入,每位访问者都发送一个请求。访问者 1 将被发送到服务器 1,访问者 2 将被发送到服务器 2,依此类推,当负载均衡器到达访问者 11 时,它会将其重定向到服务器 1。
这是一种简单的方法,尤其适用于具有相同硬件配置的服务器集群。该算法使所有节点的负载水平保持相似,并确保每个节点的性能一致。
加权循环赛
加权轮询是轮询算法的一种改进,特别适用于节点性能不相同的集群。例如,您有四台服务器,每台服务器有 2 个 CPU 核心和2GB RAM,还有一台服务器有 4 个核心和 4GB 内存。
加权轮询算法可以确保功能更强大的节点处理的请求数量是其他节点的两倍。同样,其理念是让所有服务器的负载保持均衡,同时有效利用功能更强大的机器的硬件。
最少连接
除了重新路由流量之外,负载均衡器还会监控服务器在任意时刻的繁忙程度。它知道每个节点正在处理多少个连接,因此算法可以使用此信息将请求重定向到最不繁忙的节点。由于它允许您均匀分布负载,因此您更有可能提供用户期望的极快加载速度。
加权最小连接
假设您有 5 台 Web 服务器和 30 个传入连接。如果您使用标准最小连接算法,负载均衡器会将6 个连接重定向到每台服务器。
如果您的节点相同,这将导致负载均匀分布且性能可预测。但是,集群中的 某些托管 VPS 服务器可能比其他服务器更强大。
如果不考虑这一点,您可能会使某些服务器超载,同时无法充分利用功能更强大的机器。使用加权最小连接算法,您可以配置负载平衡器以将更多流量重新路由到功能强大的节点,同时保持较小的节点正常运行。
最短响应时间和加权最短响应时间
最小响应时间算法是最小连接方法的演变。当需要重定向新请求时,负载均衡器会发现两个或多个节点具有相同数量的活动连接,它还会检查它们的平均响应时间。较短的响应时间表明服务器没有处理资源密集型操作,因此,待处理的请求会分配给它。
加权最小响应时间变化还考虑了各个服务器的硬件配置。
资源型
基于资源的负载平衡将每个传入请求重定向到任何给定时间总体负载最低的集群节点。它依赖于安装在每台服务器上的特殊软件代理,该代理监视节点的硬件资源并监控可用功率。单个服务器的负载一直在变化,平衡器会不断进行调整以确保最佳性能。
IP 哈希或 URL 哈希
IP 哈希负载均衡器获取请求的源 IP,并将其传递给加密函数,以创建唯一的哈希密钥,然后再将请求路由到集群中的某个服务器。每当负载均衡器从该 IP 收到请求时,它都会计算相同的哈希密钥并将客户端分配给同一服务器。如果您想确保特定 IP 地址由特定节点提供服务,这是一个不错的选择。
URL哈希算法是 IP 哈希的一种变体。不同之处在于负载均衡器对请求的 URL 进行哈希处理,而不是对源 IP 进行哈希处理。此算法可以确保不同的节点提供不同的内容。
上述算法可分为两类。基于资源的最小连接和最小响应时间方法用于所谓的动态负载平衡– 负载平衡器会考虑服务器的当前情况,然后再决定哪个节点最适合处理待处理的请求。
循环和IP/URL 哈希算法代表静态负载平衡,其中流量根据保持不变的规则进行重定向,而不管集群的当前状况如何。
动态和静态算法各有利弊,具体采用哪种方法取决于项目的要求和您构建的基础设施。例如,如果您有一个多区域集群,并希望根据访问者位置分配流量,请考虑将负载均衡器配置为使用 IP 哈希算法。另一方面,如果您的所有集群节点都位于同一个数据中心,您希望充分利用可用的硬件并发挥最佳性能,那么动态算法可能是您的最佳选择。
不过,选择算法并不是你从待办事项清单上勾选就可以完成的事情。除了构成整个服务器集群不可或缺的一部分之外,负载平衡器还可以成为分析数据的极佳来源。
您可以查看基础架构在特定条件下的表现,并根据所选算法进行调整。现代负载平衡解决方案甚至可以自动执行部分操作,并在潜在瓶颈真正拖慢您的速度之前识别它们。
负载平衡器还可以在另一个方面提供帮助。
负载平衡和安全
负载平衡器负责接收和重定向发送到服务器集群的每个请求。它处理大量流量并处理各种情况。如果您正确记录和审核所有这些事件,您最终会得到大量有用的信息,这些信息将优化集群的性能并增强其安全性。
例如,您可以使用工具和服务自动分析传入请求的 IP 地址、标头和有效负载并识别潜在异常或滥用者。这使您能够采取预防措施并确保数据安全。您唯一需要记住的是确保日志本身得到充分保护,因为它们可能包含大量敏感信息。
良好的负载平衡解决方案的另一个额外好处是DDoS(分布式拒绝服务)保护。
开箱即用, VPS 集群比单服务器设置更能抵御 DDoS 攻击- 您拥有多台机器,能够处理比单个虚拟服务器多得多的流量。但是,如果您要处理特别大型的活动,即使是您的 VPS 网络也可能不堪重负。幸运的是,通过正确配置的负载平衡解决方案,DDoS 攻击将无法到达您的基础设施。
现代负载均衡器可以配置为识别与 DDoS 相关的活动,并自动将不需要的流量重定向到公共云提供商。所有垃圾请求都不会淹没您的集群,而是发送到Google 和 Amazon等公司拥有的基础设施。它们可以轻松吸收流量,并有能力分析攻击源并采取预防措施,以最大限度地减少未来的恶意活动。
同时,您托管的 VPS 集群仍可保持完全运行,并完全隔离 DDoS 威胁。
结论
负载平衡是任何多节点托管基础设施的核心。有了它,您可以获得使用多台服务器的性能和可靠性优势。然而,构建一个好的负载平衡解决方案比您想象的要棘手。
技术已经发展到这样一个地步:您有许多不同的选择,而且有相当多的因素可以改变您的前进方向。仔细研究这些因素并仔细规划每一步,可以让您最大限度地利用托管 VPS 集群。
常问问题
问: 最广泛使用的负载均衡算法是什么?
答: 循环调度是最流行的负载平衡算法,已在全球生产服务器群中实施。它在大多数情况下都表现出色,并且易于理解和实施。
问: 什么是动态负载平衡?
答:动态负载平衡器会不断接收有关每台服务器的运行状况和负载的信息。基于此,它会确定哪个节点可以更有效地满足待处理的请求,并将流量重新路由到该节点。随着每台服务器上的负载发生变化,负载平衡器会调整并将流量转发到不同的机器,以获得最佳性能。
问: 负载均衡和负载共享有什么区别?
答:负载共享意味着两台或多台服务器共同为网站或应用程序提供服务。其中一台服务器可能处理 90% 的流量,而其他服务器仅处理 10%。负载平衡器会重定向请求,以确保有效利用所有可用硬件。