supervisord: не запускайте программу до запуска другой
Я использую супервизор в Ubuntu с несколькими программами для надзора. Можно ли настроить супервизор таким образом, чтобы он не запускал программу до успешного запуска другой конкретной программы?
Т.е. я хочу запускать Кафку только после запуска Zookeeper.
2 ответа
Вы не можете сделать это, насколько я знаю. Смотрите эту проблему: https://github.com/Supervisor/supervisor/issues/122
Один комментатор предлагает использовать все ваши программы как autostart = false, кроме одной, которая отвечает за приведение всех остальных (используя supervisorctl или API, я полагаю) в правильном порядке.
Я не уверен, что супервизор может это гарантировать, но попытайтесь указать приоритет Zookeeper ниже, чем у Кафки, что-то вроде этого:
[program:Zookeeper]
command=xx
priority=1
autostart = true
autorestart = true
[program:Kafka]
command=yy
priority=999
autostart = true
autorestart = true