我们在远程数据中心有一台裸机。有时,我们无法通过 ssh 登录,通常原因是 ssh 服务器死机了。它只需要重新启动,但我们无法快速完成(必须向数据中心打几个电话/提出几个请求),必须等待一天左右,直到有人走到机器前按下物理按钮。
因此,我们考虑设计一个在服务器上运行的 API(当然需要凭证)。每当我们无法 ssh 时,我们就会调用该 API 并触发重启过程。
这是个好的解决方案吗?如果不是,还有其他做法吗?
谢谢。
答案1
有很多解决方案。您的脚本可以工作,但如果 SSH 无法访问但 http 可以访问,则您应该修复根本原因,而不是重新启动。(猜测是旋转磁盘上的交换空间太多。尝试将 vm.swappiness 设置为 5,并减少(但不要消除)交换分区大小(如果是 Linux 并且是原因所在)。
正如其他人所说,“合适的”服务器通常具有带外管理,允许远程重启等等(例如 HP 的 iLo 和 Dell 的 iDrac)。
另一个选择是购买能够切换电源端口的电源开关。它们并不贵。
进行“更多黑客攻击”,查看看门狗定时器支持 - 这里有很多变体和选项,具体取决于硬件和操作系统,但其想法是系统监控自身,如果操作系统不定期写入特殊设备,系统就会重新启动。
如果您是黑客(从道德意义上讲),或者认识这样的人,那么您应该能够使用 Raspberry pi(或者如果您制作自己的看门狗或有 WIFI,甚至可以使用 arduino)使用基本计算机来驱动继电器(碰巧的是,我今天早些时候正在看一个带继电器的 arduino 板,价格低于 10 美元 - 在 aliexpress 上搜索 esp8266 继电器)
另一个解决方案(对我来说效果很好)是将我的裸机转换为 VM 服务器(如果预算是个问题,请查看 KVM/proxmox),并确保我没有过度配置资源和虚拟化应用程序。这样,您可以进入虚拟机管理程序并在大多数情况下进行调试和执行重新启动。您可以通过将不同的功能分解到不同的 VM 上来进一步改进,以便在发生故障时您仍有部分服务 - 当然,这假设您不只是走云/虚拟机路线。