如何处理网络启动时的竞争条件

如何处理网络启动时的竞争条件

我有一个远程容器,其中装有多个连接到现场 tftp/dhcp 服务器的 PXE 启动的计算机。

如果发生断电,服务器机器需要很长时间才能启动,而 PXE 启动的机器将超时并跳回 BIOS 并且永远无法启动。这很糟糕,因为我无法物理访问这些机器。

我对解决这个问题有一些想法:

  • 找到一种方法来延长客户端机器的启动时间(还没有弄清楚如何做到这一点)
  • 增加客户端机器的网络启动超时时间(还没弄清楚如何做到这一点)
  • 从 DHCP 租约文件中获取 MAC 地址,并在服务器准备就绪后向其发送 LAN 唤醒多播请求(这似乎是最不脆弱的,但却不必要地复杂)
  • 将服务器机器替换为启动速度更快的机器 (...)

我知道一定有一个我还没有考虑过的简单解决方案。

我应该怎么办?

答案1

或者,

  1. 为服务器机器配备 UPS。
  2. 使用 PDU 延迟启动 PXE 客户端。
  3. 将 PXE 客户端设置为仅使用 PXE 并无限期重试(如果可能)。
  4. 优化服务器,使其启动更快(SSD,更多 RAM,...)。

编辑:

  1. 如果 3. 不起作用,请将一个 USB 棒插入每台计算机上,上面只有一个 PXE 客户端或一个重启设置。
  2. 在服务器启动时关闭计算机,并在启动后通过 WoL 唤醒它们。 [...] 看到下面的脚本做了完全相同的事情。 ;-)

答案2

我使用了一个快速而简单的 Golang 脚本,在 crontab 中运行,并将 PXE 启动的机器设置为在通电时不开机。

如果你有类似的问题,可以参考以下脚本 https://gist.github.com/mraaroncruz/f103b8af4d81f59a54a5f2af6dc238b6

相关内容