我从未遇到过一家托管公司/云公司提供真正的垂直扩展,而无需关闭机器和/或将网站或虚拟机复制到另一台机器上。我只见过一些服务/仪表板声称它们可以进行垂直扩展,但实际上只是对我上一句话中描述的过程进行抽象。
目前是否无法在不先关闭机器的情况下添加/删除 RAM 和 CPU?或者托管公司提供这项服务的成本效率不够高?(或者我错了,有些公司在同一台机器上提供垂直扩展而无需停机)?
如果不可能,那为什么呢?是当前处理器能力的限制吗?
答案1
这取决于平台,但仍然需要提前进行容量平移。
在许多虚拟机管理程序平台中,有一个“内存膨胀”的概念。这将允许您指定“当前”RAM 量,以及“最大”RAM 量。最大值是提前定义的硬限制,但膨胀机制允许尚未在虚拟机管理程序上完全分配其最大内存映射的客户操作系统按需扩展分配给它的内容。这在实验室环境中最有用,并且对于静态部署的工作负载,您预计会出现大量且不频繁的分配峰值(但如果配置过多,则不会一次性全部出现)。
同样适用于 CPU 资源,指定核心的“最大”数量或核心百分比,并分配从“软”值一直到最大“硬”值。
这是虚拟化的一个技巧,可以看作是热插拔硬件系统的直接并行。我们假设虚拟机有未填充的额外内存插槽,或未填充的额外 CPU。但我们仍然必须明确定义插槽数量。
通常,您可以在大多数平台上动态地向几乎任何类型的实例添加磁盘存储,而无需担心任何这些问题。
然而,云编排系统通常具有良好实施和自动化的部署系统,使得这些类型的模型变得更加无用(除了添加存储,这几乎总是同样有用)。
考虑到许多提供商是按分配的容量收费,而不是按使用的容量收费。实现动态垂直扩展实例模型会为提供商带来另一层调度和资源分配问题 - 一个问题是,任何数量的客户可能同时需要相当多的资源,但任何一个客户都可能随时使这些实例膨胀。
在这种情况下,从云基础设施角度正确规划的唯一方法是根据最大容量分配实例,并合理地向其他客户收取他们原本可以负担得起的分配费用。
这时候,既然已经付费了,为什么不直接使用最大容量呢?如果我们按最大容量做事,那么重新定义实例就变得有必要,以实现垂直扩展。
答案2
在线垂直扩展是可能的。但硬件和软件必须支持它,可能更重要的是服务提供商必须有兴趣为您提供此功能。
例如,IBM Power Systems 将多个节点捆绑到一个系统中。存在以下功能:热添加节点通过物理安装和连接另一盒 CPU。然后可以将 CPU 和内存热添加到正在运行的分区(VM)。
这种可维护性功能价格昂贵,企业将为此支付额外费用。而且也相对复杂。
与许多通常运行 x86 的商用云相比。您的实例大小是固定列表,切换到其他实例需要重新启动,但您可以拥有任意数量的实例。由于 RAS 功能不太先进且规模经济,因此成本通常较低。
这些云宁愿你扩大出去到多个主机。它们有更多相同大小的实例,以某种最佳方式分配到硬件上。热添加在重新平衡不同大小的虚拟机负载方面成本高昂。当你能说服架构师和开发人员进行扩展时,为什么还要费心设计呢?