控制多个服务器的启动顺序

控制多个服务器的启动顺序

我正在寻找有关如何控制机架机器的启动顺序的建议,以防它们全部需要重新启动。更详细地说:

Group1:
  DHCP/DNS/LDAP Server
Group2:
  NFS servers
Group3:
  Web Servers
  Compute Nodes

我目前正在配置 apcupsd 来处理紧急关机,特别是对于数据服务器,但我不确定是否应该使用 WOL 编写一些复杂的启动脚本,或者是否存在早期的 Linux 网络事件系统来暂停启动过程,直到收到正确的事件。

如果这很重要的话,所有服务器都是戴尔的,并且它们有 iDRAC,但我还无法让它工作(还没有那么努力地尝试),如果它提供了任何替代方案。

答案1

您有多种选择。将其中两种或多种方法结合起来可能是个好主意。

  • 如果每组都使用专用的 UPS,那么您可以在一定程度上控制 UPS 的启动顺序。高功率 UPS 通常可以配置为延迟启动。错开启动延迟以满足您的需求。无论如何,您都应该错开启动时间,以防止启动负载触发电源上的保险丝或断路器。

  • 正如其他人所指出的,PDU 具有延迟功能。这些配置将与 UPS 相同。它们也可能是网络可控的,因此当所需服务可用时,可以打开下一组。

  • 正如其他人所指出的,WoL 是您可以使用的一种方法。

  • 如果您使用的是单线程 init 进程,则可以添加一个 init 脚本,该脚本等待所需服务可用后再继续。或者,您可以将检查添加到适当的 init 脚本中。无论如何,为必要的服务添加保护检查可能是一个好主意。

  • 您可以检测面向 Internet 的 IP 地址。但不要启用它们,直到所有必需的服务都到位。这将需要一个保护脚本来验证所需的服务是否可用。

  • NFS 挂载可以配置为阻塞,直到挂载可用。这应该会延迟进一步的初始化处理,直到 NFS 服务器提供所需的挂载。

答案2

我对您所计划的具体场景存有疑问......

您是否正在计划断电后的开机?从某种灾难中恢复?或者您的担忧更多地与电涌有关?对于后者,我有时会使用在服务器 BIOS 中配置的随机启动延迟或使用开关 PDU 来处理开机顺序以防止过载。

在排序方面,我会在应用程序级别围绕依赖关系进行设计。从冷启动开始,您的应用程序服务器应该能够容忍支持服务器 (DHCP/DNS/LDAP) 的故障、延迟或缺失。您有运行这些服务的备份服务器吗?位置之外还有什么?

如果没有,您可以设置应用程序或守护进程启动检查 - 例如,如果无法访问 DNS 服务器,则不要启动 NFS 守护进程。我使用以下方法做了一点依赖性检查监控或者包装脚本......但在大多数环境中确实没有考虑过这种类型的排序。

答案3

您想要实现什么目标?是最小化(平滑)由一组服务器同时启动而产生的需求高峰,还是可以推动紧急断电适应的某种方式?如果是前者,那么请寻找电源定序器 - 机架内有设计用于以可编程延迟为插座组供电的装置 - 比如说,每组插座之间间隔几分钟,以允许每个插座在启动前稳定下来。这曾经在一些中端较大供应商中很常见。

答案4

我认为你已经回答了自己的问题。WoL 是确保服务器按设定顺序启动的好方法。没有什么复杂的。只需让每台服务器向序列中的下一台服务器发送 WoL 信号即可。只要确保记录该顺序,以备出现故障或需要修改时使用。理想情况下,WoL 脚本将首先检查相关服务是否正在运行,然后再发送信号。如果出现问题,这些检查可能还会超时,从而向您发送警报,如果服务器无法启动,这可以节省一些回溯时间。

相关内容