我正在寻找有关如何控制机器机架的启动顺序的建议,如果它们都需要重新启动的话。更详细地:
Group1:
DHCP/DNS/LDAP Server
Group2:
NFS servers
Group3:
Web Servers
Compute Nodes
我目前正在配置 apcupsd 来处理紧急关机,特别是对于数据服务器,但我不确定我是否应该使用 WOL 编写一些复杂的启动脚本,或者是否有用于 linux 的早期网络事件系统来暂停启动过程直到接收到正确的事件。
如果重要的话,所有的服务器都是戴尔的,他们有 iDRAC,但我无法让它工作(没有那么努力),如果它提供任何替代方案。
我会质疑你计划的具体场景......
您是否正在尝试计划在停电后重新启动?从某种灾难中恢复?还是您的担忧与功率峰值有关?对于后者,我有时会使用在服务器 BIOS 中配置的随机启动延迟或使用开关式 PDU 来处理开机顺序以防止过载。
在排序方面,我会围绕应用程序级别的依赖项进行设计。从冷启动开始,您的应用程序服务器应该能够容忍故障、延迟或缺少支持服务器 (DHCP/DNS/LDAP)。您是否有运行这些服务的备份服务器?位置以外的东西?
如果没有,您可以设置应用程序或守护程序启动检查 - 例如,如果无法访问 DNS 服务器,则不要启动 NFS 守护程序。我已经使用Monit或包装器脚本对这种依赖关系进行了少量检查……但在大多数环境中确实没有考虑过这种类型的排序。
你想达到什么目的?它是最小化(消除)由一堆服务器同时启动造成的需求尖峰,还是可以推动紧急适应断电的东西?如果是前者,则寻找电源定序器 - 机架内单元设计用于为具有可编程延迟的插座组供电 - 比如在每个组之间间隔几分钟,让每个组在启动前稳定下来。这在中档较大端的一些供应商中曾经很常见。
您有多种选择。将这些方法中的两种或多种结合起来可能是个好主意。
如果每个组都在专用的 UPS 上,那么您可以在某种程度上控制 UPS 的启动顺序。大功率 UPS 通常可以配置为延迟启动。错开启动延迟以满足您的需求。无论如何,您应该错开启动,以防止启动负载触发电源上的保险丝或断路器。
正如其他人所指出的,有些 PDU 具有延迟功能。这些将按照 UPS 进行配置。它们也可以是网络可控的,因此当所需服务可用时可以打开下一组。
正如其他人所指出的,WoL 是您可以使用的一种方法。
如果您使用的是单线程初始化进程,您可以添加一个初始化脚本,等待所需的服务可用,然后再继续。或者,您可以将检查添加到适当的初始化脚本中。无论如何,为必要的服务添加警卫检查可能是个好主意。
您可以探测面向 Internet 的 IP 地址。但在所有必需的服务都到位之前不要启用它们。这将需要一个保护脚本来验证所需的服务是否可用。
NFS 挂载可以配置为阻塞,直到挂载可用。这应该会延迟进一步的 init 处理,直到 NFS 服务器为所需的挂载提供服务。
在我看来,你已经回答了你自己的问题。WoL 是确保服务器按设定顺序启动的好方法。没什么复杂的。只需让每个服务器将 WoL 信号发送到序列中的下一个服务器即可。请务必记录该顺序,以便在出现问题或需要修改时使用。理想情况下,WoL 脚本将在发送信号之前首先检查相关服务是否正在运行。您可能还会对那些可以在出现问题时向您发送警报的检查超时,如果服务器未启动,这可以节省一些回溯。