许多 IaaS 提供商提供 RAM 和内核的动态升级/降级。
通常,必须重新启动 Linux VM 才能应用这些更改。
有时,像 VMware 工具或其他访客服务这样的东西已经很好地集成了,因此对资源的升级可以立即使用,但降级仍然需要重新启动。
如何解决此问题,以便在降级资源时不必重新启动客人?
许多 IaaS 提供商提供 RAM 和内核的动态升级/降级。
通常,必须重新启动 Linux VM 才能应用这些更改。
有时,像 VMware 工具或其他访客服务这样的东西已经很好地集成了,因此对资源的升级可以立即使用,但降级仍然需要重新启动。
如何解决此问题,以便在降级资源时不必重新启动客人?
理想情况下,如果您在维护窗口之外处理单个节点的持续或按需扩展缩减,那么重启对您来说应该无关紧要。您的架构应该是容错的、集群的和/或负载平衡的,以便在调整大小期间丢失节点不会影响任何事情。这是 Heroku 和其他 PaaS 提供商透明地做的事情。如果您正在利用 IaaS 资源构建自己的 PaaS,那么您应该强烈考虑使用类似的模型。
此外,许多架构采用一种策略,其中应用程序给定层中的节点是固定大小的,并且整个来宾实例根据需要向上或向下旋转,而不是调整单个主机的大小。
我认为您通过将来宾资源分配更改为可扩展的方式来解决此问题。您应该做些什么来使应用程序可扩展,以便可以根据需要配置或销毁整个来宾,而不是摆弄单个 Web 前端或数据库服务器上的 RAM 或 CPU。
在 RHEL6(可能还有其他)上使用 libvirt + KVM,您可以使用 virsh 命令
setmem
和setvcpus
.诀窍是您必须在启动来宾之前在永久配置中设置最大可能值。
setvcpus
在;上有一个标志。对于记忆,你需要说setmaxmem
(那里很棒的用户界面)。然后,您可以在配置范围内即时放大和缩小它们。对于 linux 来宾,它将资源热插拔到来宾。对于 Windows 来宾,对于内存,它告诉 Windows 它始终具有完整的最大大小。但是,它将使用气球驱动程序来阻止您带走的任何内存。不确定 Windows 客户机上的 VCPU。
如果说 VMware,联机 RAM 和 CPU减少不是支持的操作。如果没有虚拟机停机时间,这是不可能的。