两个目标:
1) 确保后台守护进程(如 webserver/rabbitmq)始终处于运行状态。如果它们崩溃,则会自动重新启动等。为此,我使用如下配置的 monit:
set httpd port PORTNUM and
use address localhost
allow localhost
check process WEBSERVER with pidfile /var/run/WEBSERVER.pid
start program = "/etc/init.d/WEBSERVER start"
stop program = "/etc/init.d/WEBSERVER stop"
2) 同时运行 'n' 个 python 进程。为了运行这些进程,使用 Supervisord,其配置如下:
[program:name]
command= somecommand
numprocs=3
process_name=%(process_num)s
问题:
1. 这种方法可能存在问题吗?或者总体来说这不是一个好主意?
2. 有没有办法避免这种情况?
据我所知,supervisord 需要所有内容在前台运行,并且 Monit 无法运行多个脚本。
这将被“dockerized”(以防万一)。
谢谢
答案1
我预计这不会有什么问题,尤其是如果主管正在管理除 monit 之外的另一个工具池(即它们不重叠)
监控主管和监控确保其始终处于运行状态可能是个好主意。
正如你所说,monit 无法处理多个相同的以传统方式处理。
声明多个监视器服务和/或需要使用自定义脚本。