Nodejs upstart封装mongodb应用为系统服务

Nodejs upstart封装mongodb应用为系统服务

alt upstart封装mongodb应用为系统服务

本文将介绍封装mongodb应用为系统服务,mongod应用会像一个守护程序一样,被操作系统所管理。通过upstart以系统服务的方式管理mongodb应用。运维起来也会很容易!!

本次实验是针对单个进程mongodb的,如果是mongodb集群,效果会更加明显的。特别进程被非法停止后的自动重启功能,增加了系统的健壮性。

文章目录:

mongodb环境介绍 upstart任务脚本 mongodb应用管理

请查看博客文章
http://blog.fens.me/linux-upstart-mongodb/


4 回复

Nodejs upstart封装mongodb应用为系统服务

文章概览:

本文将介绍如何使用Upstart来封装MongoDB应用为系统服务,使得MongoDB应用能够像守护程序一样被操作系统管理。通过这种方式,运维变得非常简单,并且可以实现进程被非法停止后的自动重启功能,从而增加系统的健壮性。

环境介绍:

  • 操作系统:Ubuntu 18.04 LTS
  • MongoDB版本:MongoDB 4.2

Upstart任务脚本

首先,我们需要创建一个Upstart配置文件来管理MongoDB服务。以下是具体的步骤:

  1. 创建Upstart配置文件 /etc/init/mongodb.conf
sudo nano /etc/init/mongodb.conf
  1. 在打开的文件中添加以下内容:
# mongodb.conf
description "MongoDB Database Server"
author      "Your Name"

start on runlevel [2345]
stop on runlevel [!2345]

limit nofile 64000 64000

expect fork

script
    exec /usr/bin/mongod --config /etc/mongodb.conf
end script

上述配置文件做了以下几件事:

  • descriptionauthor 是关于配置文件的描述。
  • start on runlevel [2345] 表示MongoDB服务将在运行级别2, 3, 4, 5时启动。
  • stop on runlevel [!2345] 表示MongoDB服务将在非运行级别2, 3, 4, 5时停止。
  • limit nofile 64000 64000 设置了打开文件的最大数量限制。
  • expect fork 表示该进程将进行fork操作。
  • exec /usr/bin/mongod --config /etc/mongodb.conf 是实际执行的命令,其中/usr/bin/mongod 是MongoDB的可执行文件路径,/etc/mongodb.conf 是MongoDB的配置文件路径。

MongoDB应用管理

现在,我们可以通过Upstart来管理和监控MongoDB服务:

  1. 启动MongoDB服务:
sudo start mongodb
  1. 停止MongoDB服务:
sudo stop mongodb
  1. 检查MongoDB服务状态:
sudo status mongodb
  1. 查看MongoDB日志:
tail -f /var/log/mongodb/mongodb.log

总结

通过上述步骤,我们成功地使用Upstart将MongoDB应用封装为系统服务。这不仅简化了MongoDB的运维工作,还增强了系统的健壮性。如果MongoDB进程被非法停止,Upstart会自动重启它,确保服务的持续运行。


他的脚本是默认的,不是制定的。 我们需要根据应用的情况,在他的脚本上面进行修改,每个应用会对应到不同的mongod进程中。

  1. mongodb并不是只能启动一次的守护进程。你配置集群的时候,会启动动多个mongod进程。

  2. 他的upstart是有一些是向前兼容的,像start-stop-daemon这个命令,新版本已经不建议使用了。

  3. 他的默认配置,不支持自动重启,给进程传参数等等

很多需要改进的地方,所以才需要自己去做upstart。

你看这个mongodb的自动分片集群, 如何用默认mongodb的upstart完成 http://blog.fens.me/mongodb-shard/

3个节点,光是启动命令就有9行。手动运维会估计就要天天加班干活了。

封装MongoDB应用为系统服务可以确保其在系统启动时自动运行,并且在异常退出时能够自动重启。这可以通过Upstart(Ubuntu 16.04及以下版本)或Systemd(Ubuntu 16.04及以上版本)来实现。这里提供一个基于Upstart的例子,演示如何将MongoDB应用作为系统服务进行管理。

Upstart任务脚本

首先,我们需要创建一个Upstart配置文件。该文件通常放置在/etc/init/mongodb.conf路径下。下面是示例配置文件的内容:

# MongoDB upstart script at /etc/init/mongodb.conf

description "MongoDB Database Server"
author      "fens.me"

# Used to verify if the process is still alive
expect fork

# Start mongod automatically on system boot
start on runlevel [2345]
stop on runlevel [!2345]

# Automatically restart process if it exits
respawn
limit nofile 20000 20000

# Set the environment variables
env MONGOD_CONF=/etc/mongod.conf

# Run as user 'mongodb'
setuid mongodb

# The command to start MongoDB
exec /usr/bin/mongod --config $MONGOD_CONF

解释

  • descriptionauthor 提供了脚本的基本信息。
  • expect fork 告诉Upstart预期该进程将会fork两次。
  • start on runlevel [2345] 指定在运行级别2、3、4和5时启动服务。
  • stop on runlevel [!2345] 指定不在这些运行级别时停止服务。
  • respawn 确保MongoDB在异常退出后能够自动重启。
  • limit nofile 设置打开文件的最大数量限制。
  • env MONGOD_CONF 定义MongoDB配置文件的位置。
  • setuid mongodb 指定以mongodb用户身份运行服务。
  • exec /usr/bin/mongod --config $MONGOD_CONF 是实际启动命令。

启动与停止服务

使用Upstart管理MongoDB服务非常简单:

sudo service mongodb start
sudo service mongodb stop
sudo service mongodb restart

上述配置使MongoDB应用成为系统服务的一部分,可以更方便地进行管理和维护。

回到顶部