在低负载情况下,如何closures(closures)群集节点?

我正在为能源咨询业务开发软件,并监控数据中心的能源使用情况,我注意到数据中心的典型电力负载“模式”只是一条扁平线,因为所有的设备都是24/7全天候运行的。 如果您将其与我们所做的实际使用模式(networking负载,CPU使用率等)进行比较,则您经常会有很长的使用时间,但可用的全部容量。

这些模式在许多情况下是非常可预测的,为了节约能源,定期或在低负载条件下closures部分设备(服务器,交换机,存储设备)将是非常好的。 不过,我可以想到几个方面,必须考虑,包括

  • 处理峰值负载或突然峰值
  • 节点间的数据一致性
  • 与节点的平均正常运行时间相比,启动时间很长(可能还有同步)

可能还有更多。 有没有处理这种情况的软件,还有什么应该寻找的? 这是一个可行的build议吗?

就我的目的而言,集群不一定意味着在操作系统级别对机器进行集群,而通过负载平衡器(即应用程序级集群)接收请求的相同主机也可以进行计数。 我不知道MySQL集群或类似的工作,但我也可能会计数。

我正在寻找任何操作系统的build议。

另请参阅Stack Overflow 上关于能效的文章 ,提出了这个问题。

功率

使用Switched PDU,以便您可以打开和closures带外服务器和开关。 这是与操作系统和设备无关的,这将大大简化开关电源的configuration和逻辑。 如果您的服务器都具有支持networking的IPMI接口,则可以使用这些接口。 我build议不要尝试使用局域网唤醒等更高级别的事情来打开和closures事物。

上电/掉电逻辑

这可能有多种forms。 有些集群软件(如Moab )有内置的解决scheme。否则,你可以用下面的伪代码编写一些脚本:

  1. 检查总体集群负载
  2. 如果群集负载> threshold1,打开一些节点
  3. 如果集群负载<threshold2,closures一些节点

把它放在cron中,每隔半小时运行一次。

集群软件堆栈

显然,您需要确保您的集群软件堆栈可以处理这些设备始终处于closures状态。 在这里进行大量testing,考虑模糊的时序问题(引导需要时间)以及任何竞争条件,这些问题会在您使用的上电/掉电逻辑中蔓延。

VMware的

他们的企业级产品VSphere 4的最新版本可以closures不需要满足容量的主机,并在需要时通过实时分发虚拟机将其唤醒。 将这一点与通过在虚拟化平台上整合您的硬件所获得的功耗/节能相结合,您可以大大节省功耗。

这是在今天的Planet Ubuntu上提到的。 这篇文章可以在这里find。 它介绍了使用PowerNap在云中按需开机/关机的实用解决scheme的开发。

这个问题有一百万个答案,其中大多数不适合你。

它是操作系统特定的,硬件特定的和负载特定的。

如果这个解决scheme是响应的,即。 快速降低功耗,并快速回来,你应该看看硬件与ACPI睡眠function,而不是closures。 如上所述,wakeonlan只有在硬件处于睡眠状态时才能正常工作。

这个问题的第二部分是控制。 什么时候让系统进入睡眠状态,什么时候再次唤醒系统。 不知道你的集群如何pipe理工作负载,你真的不会得到答案。

就我个人而言,我运行一个webfarm,前面有一个负载平衡器。 交通是直接到一对主机,直到一定的水平,然后它自圆其余。 当其他服务器在一小时或18:00后不显示任何活动时,它们将进入睡眠状态。 当snmp脚本显示负载平衡器上的用户卷正在增加时,这些睡眠主机将发送一个wakeonlan魔术数据包,并且该群集将恢复到最大值。 它可能更加细腻,但我真的只能在现场进行试验,所以这是一个小动作,我有信心。

干杯

那么,对于服务器SHUTDOWN.EXE命令可以用来远程closures一个窗口框。 使用telnet / ssh脚本可以很容易地在Unix上完成同样的事情。

更大的问题是如何重新启动它们。 你需要LAN唤醒或类似的东西。

做这件事的难点在于validation你正在关机的机器实际上并没有做重要的事情。 就像那个没有人真正确定应该去哪里的cron工作一样,所以他们只是把它放在一个集群的web服务器上。 现在你关掉了这台机器,这个工作不再像原来那样运行了。

如果环境受到严格的控制,而且你确切地知道每台机器在做什么,这将是很有道理的。

远程打开和closures机器真的不应该成为一个问题 ,因为几乎所有的服务器硬件都实现IPMI ,并且开始使用这些工具是非常容易的 。

WoL在其他使用情况下是很好的,例如,当您的台式计算机已经进入睡眠状态,并且希望在备份作业运行之前唤醒它。

没有用于“LAN上睡眠”的标准接口。 IPMI旨在解决这些问题,从而为您提供更多的一致性和更好的控制。

更新 :请注意,如果您使用dm-suspend午睡而不是closures,您可能可以使用WoL来唤醒 …可以作出有趣的折衷。


(请注意search引擎:我早就发现了这个线程,是否有一个标题更像是“ 自动化,负载自适应的群集节点的电源循环 ”)

Sun的SGE(Sun Grid Engine)是一种集群调度/批量排队系统,它在最新版本中通过按照一定的队列/工作负载规范closures当前不需要的节点来支持节能。 请记住,这是一个HPC-ish专用系统。 closures数据中心的某些部分可能是一个巨大的依赖性问题。