如何在低负载期间关闭(关闭)集群节点?

Han*_*etz 7 cluster

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

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

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

可能还有更多。是否有处理这种情况的软件,还有什么应该注意的?这是一个可行的建议吗?

就我而言,集群并不一定意味着在操作系统级别对机器进行集群,通过负载平衡器(即应用程序级别集群)接收请求的相同主机也将被计算在内。我不确定 MySQL 集群或类似的工作方式,但我可能也会计算这些。

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

另请参阅我在 Stack Overflow 上提出这个问题的关于能源效率的帖子

luk*_*yca 1

力量

使用开关 PDU,以便您可以带外打开和关闭服务器和交换机。这是独立于操作系统和设备的,这将大大简化打开和关闭电源的配置和逻辑。如果您的服务器都具有支持网络的 IPMI 接口,您可以使用这些接口。我建议不要尝试使用 LAN 唤醒等更高级别的功能来打开和关闭功能。

上电/断电逻辑

这可以采取多种形式。一些集群软件(例如Moab)对此有内置的解决方案。否则,您可以使用以下伪代码编写一些脚本:

  1. 检查集群整体负载
  2. 如果集群负载>threshold1,则开启部分节点
  3. 如果集群负载<threshold2,则关闭部分节点

将其放入 cron 中并让它每半小时运行一次。

集群软件堆栈

显然,您需要确保您的集群软件堆栈可以处理这些不断变化的设备。在这里进行大量测试,考虑模糊的时序问题(启动需要时间)以及您使用的加电/断电逻辑中会出现的任何竞争条件。