如果 MongoDB 崩溃则自动重新启动

如果 MongoDB 崩溃则自动重新启动

我在 Ubuntu 服务器上运行 MongoDB。它使用 upstart 脚本在机器启动时启动 mongod。我注意到,如果进程崩溃,它不会重新启动。

我如何确保如果它崩溃了,mongod 进程会重新启动?

答案1

我自己找到了答案:实现该目标的最简单方法是在 MongoDB 安装的 upstart 脚本末尾添加以下两行(/etc/init/mongodb.conf):

respawn
respawn limit 10 90

如果进程终止,它将尝试重新启动它;如果它在 90 秒内崩溃超过 10 次,它将停止。

答案2

我认为较新版本的 MongoDB/Ubuntu 不使用 upstart。以下是我在 Ubuntu 18.04、MongoDB 4.0.2 上实现此目的的方法:

/lib/systemd/system/mongod.service在文本编辑器中打开:

sudo nano /lib/systemd/system/mongod.service

添加Restart=on-failureRestartSec=10在服务器以非零退出代码退出时在 10 秒后重新启动服务器:

[Service]
User=mongodb
Group=mongodb
EnvironmentFile=-/etc/default/mongod
Restart=on-failure
RestartSec=10
...

Restart=always如果您想重新启动,无论退出代码是什么,请使用。

然后您可以systemctl daemon-reload重新启动服务,或者只是重新启动服务器。

答案3

基于已接受的答案(因为我没有足够的代表来评论它)

Respawn不是 mongo 配置参数,它是 upstart 服务配置文件。

respawn
respawn limit 10 90

Digital Ocean 有一个关于使用 upstart 和 systemd(较新)的很好的教程。 https://www.digitalocean.com/community/tutorials/how-to-configure-a-linux-service-to-start-automatically-after-a-crash-or-reboot-part-1-practical-examples

答案4

mongod.service通过此systemctl命令打开:

sudo systemctl edit --full mongod.service

编辑[service]只需添加以下两个命令即可阻止:

Restart=on-failure
RestartSec=10

并重新启动服务

sudo systemctl restart mongod.service

或者,再次检查状态

sudo systemctl status mongod.service

您可以在任何服务中使用此技术在失败时重新启动

@syedasadrazadevops

相关内容