выскочка и супервизор используются для одного и того же?

13

У меня есть некоторые процессы, основанные на jvm, которые необходимо запускать каждый раз, когда мой сервер перезагружается, а также останавливается из-за непредвиденной ошибки и т. Д.

Я использую Ubuntu 12.04 на всякий случай.

Я видел примеры сценариев выскочки, и я склоняюсь таким образом, но я хочу понять, в чем разница с чем-то вроде выскочки или супервизора.

Используются ли они для одних и тех же целей или есть различия в функциональности?

Бланкмэн
источник

Ответы:

12

Разница в том, что выскочка является заменой инициализации, а супервизор - Process Control System. Это объяснение дается на supervisord сайте :

Он разделяет некоторые цели программ, таких как launchd, daemontools и runit. В отличие от некоторых из этих программ, он не предназначен для замены init как «идентификатор процесса 1». Вместо этого он предназначен для управления процессами, связанными с проектом или клиентом, и предназначен для запуска, как и любая другая программа во время загрузки.

Это означает, что сам супервизор будет запущен при помощи upstart, либо через файл задания upstart, либо через скрипт инициализации sysV. Лично я решил использовать диспетчер процессов, а не обычный init, исходя из следующих причин:

  1. Служба не работает должным образом
  2. Служба, как известно, умирает и нуждается в мониторинге и перезапуске

Пример программы, которая не работает должным образом, - это когда она не закрывает stdout и stderr и продолжает записывать данные в эти места. Supervisord может обрабатывать регистрацию этого вывода.

jordanm
источник
Я вижу, не уверен, что полностью понимаю, но я подумал, что выскочка может также перезапустить процесс, если он потерпит неудачу.
Blankman
@Blankman Я думаю, что с современными системами инициализации причин еще меньше
Джорданм
Я хотел бы отметить, что правильное решение для службы, которая не работает должным образом, будет состоять в том, чтобы исправить ошибку с указанной службой, которая приведет к ее неправильной работе. Я признаю, что что-то вроде supervisord было бы полезно для # 2, хотя.
Шадур
1
@shadur Я не согласен, что это лучшее решение. Процесс может не принадлежать вам, поэтому вы не можете это исправить. Даже если вы можете это исправить, независимо от того, сколько ошибок вы исправляете, вы никогда не узнаете, что больше ничего не скрывается, и спустя годы ваш процесс снова умрет, в производстве, из-за некоторой ситуации, которая никогда не была обнаружена раньше, например, необычное состояние сети или базы данных. Вы бы предпочли, чтобы ваш сайт оставался в автономном режиме, расстраивая пользователей, стоив вам денег? Нет. Вам нужен инструмент для перезапуска сервисов. Период.
Джонатан Хартли,