我正在为能源咨询业务开发软件并监控数据中心的能源使用情况,我注意到数据中心的典型电力负载“模式”只是一条直线,因为所有设备都 24/7 全天候运行。如果您将其与我们所做的实际使用模式(网络负载、CPU 使用率等)进行比较,您通常会经历很长一段时间,使用量很少,但可用的容量却是全部。
这些模式在许多情况下是非常可预测的,为了节省能源,定期或在低负载条件下关闭部分设备(服务器、交换机、存储)会很棒。但是,我可以想到必须考虑的几个方面,包括
- 处理峰值负载或突然的峰值
- 节点间数据一致性
- 与节点的平均正常运行时间相比,启动(可能还有同步)时间长
可能还有更多。是否有软件可以处理这种情况,还有什么需要注意的?这是一个可行的建议吗?
出于我的目的,集群不一定意味着在操作系统级别上对机器进行集群,通过负载平衡器(即应用程序级别集群)接收请求的相同主机也将计算在内。我不确定 MySQL 集群或类似的工作是如何工作的,但我可能也会算上这些。
我正在寻找任何操作系统的建议。
另请参阅我在 Stack Overflow上关于能源效率的帖子,该帖子提出了这个问题。
VMware
其企业产品的最新版本 VSphere 4 可以关闭不需要满足容量需求的主机,并在需要时通过实时分发虚拟机来唤醒它们。将此与通过在虚拟化平台上整合硬件所获得的电力/能源节约相结合,您可以获得显着的能源节约。
刚才在 Planet Ubuntu 上提到了这一点。帖子可以在这里找到。它讨论了使用PowerNap在云中按需启动/关闭机器的实用解决方案的开发。
这个问题有一百万个答案,其中大多数都不适合你。
它是特定于操作系统、特定于硬件和特定于负载的。
如果这个解决方案是响应式的,即。快速降低功耗并快速返回您应该查看具有 ACPI 睡眠功能的硬件,而不是关闭。如上所述,wakeonlan 只有在硬件处于睡眠状态时才能正常工作。
这个问题的第二部分是控制。何时让系统进入睡眠状态以及何时再次唤醒它。在不知道您的集群如何管理工作负载的情况下,您真的不会得到答案。
我个人运行一个前面有负载均衡器的网络农场。流量被定向到一对主机直到某个级别,然后循环其余的主机。当那些其他服务器在一小时内或 18:00 后没有显示任何活动时,它们将进入睡眠状态。当 snmp 脚本显示负载均衡器上的用户量正在增加时,那些休眠的主机会收到一个 wakeonlan 魔术包,并且集群会恢复到最大强度。它可以更细粒度,但我真的只能在现场进行实验,所以这是我有信心的小动作。
干杯M。
力量
使用交换式 PDU,以便您可以在带外打开和关闭服务器和开关。这是独立于操作系统和设备的,这将大大简化启动和关闭设备的配置和逻辑。如果您的服务器都具有启用网络的 IPMI 接口,您可以使用这些接口。我建议不要尝试使用 LAN 唤醒等更高级别的东西来打开和关闭东西。
上电/断电逻辑
这可以采取多种形式。一些集群软件(例如Moab)有一个内置的解决方案。否则,您可以使用以下伪代码编写一些脚本:
把它放在cron中,让它每半小时运行一次。
集群软件栈
显然,您需要确保您的集群软件堆栈能够始终处理这些设备的上下波动。在这里进行大量测试,考虑模糊的时间问题(启动需要时间)以及任何会在您使用的加电/断电逻辑中蔓延的竞争条件。
好吧,对于服务器而言,SHUTDOWN.EXE 命令可用于远程关闭 Windows 框。使用 telnet/ssh 脚本可以在 Unix 上轻松完成相同的操作。
更大的问题是如何重新启动它们。你需要Wake-on-LAN或类似的东西。
这样做的难点在于验证您要关闭的机器实际上并没有做一些重要的事情。就像没有人真正确定它应该去哪里的 cron 作业一样,所以他们只是将它放在其中一个集群 Web 服务器上。现在您关闭了那台机器,并且该作业不再像预期的那样运行。
如果环境受到严格控制,并且您确切地知道每台机器在做什么,那将很有意义。
在今天,远程打开和关闭机器应该不是问题,因为几乎所有的服务器硬件都实现了IPMI,并且开始使用这些工具非常容易。
WoL在其他用例中非常有用,例如当您的台式计算机进入睡眠状态并且您希望它在备份作业运行之前唤醒它。
“sleep-on-LAN”没有标准接口。IPMI 旨在解决此类问题,从而为您提供更高的一致性和更好的控制。
(更新:请注意,如果您使用dm-suspend打个盹而不是关闭,您可能可以使用 WoL 来唤醒......可能会做出一个有趣的妥协。)
(搜索引擎注意:如果它的标题更像“自动化,集群节点的负载自适应电源循环”,我会更早发现这个线程)
Sun 的 SGE (Sun Grid Engine) 是一个集群调度/批量排队系统,在它的最新版本中,它支持通过根据某些队列/工作负载规范关闭当前不需要的节点来省电。请记住,这是一个类似于 HPC 的专用系统。关闭数据中心的某些部分可能是一个巨大的依赖性问题。