
Мне дали 3 кластера. Один из Kafka, один из Storm и один из ZooKeeper. Мне нужно сделать так, чтобы службы запускались и при остановке запускались снова, как описано вZookeeper руководство администратора.
OS for every machine => Ubuntu-trusty 14.04
Platform => Running in Amazon EC2
Итак, подведем итог: мне нужно иметь возможность запустить соответствующую службу при запуске. Если служба запускается, мне нужно, чтобы она перезапускалась. Мне нужно сделать это для Storm, Kafka и Zookeeper. И мне нужно, чтобы ответ был простым и прямым. Другой способ задать этот вопрос: какой самый простой способ достичь моих целей?
решение1
Механизм управления службами для Ubuntu — Upstart. Руководство по Upstart здесь: http://upstart.ubuntu.com/cookbook/
Не так уж и сложно начать. Есть много примеров, которые можно срисовать.
Оказывается (из нашего чата, ссылка на который есть в комментариях), что у @MassSql есть службы, которые работают в фоновом режиме (и, предположительно, отслеживают/перезапускают себя в случае смерти). Учитывая это, он может использовать более простой/устаревший механизм RC-скриптов (который реализован в Upstart, но имеет гораздо более простой интерфейс для более простых задач, таких как запуск чего-либо при загрузке и остановка при завершении работы). Итак, вот этот подход:
- Перейдите в /etc/init.d и сделайте копию dns-clean (переименуйте ее по своему усмотрению).
- Отредактируйте файл. Измените
INIT INFO
раздел, изменив описания и очистив поляRequired-Start
иRequired-Stop
. Создайте новое имя дляProvides
. (в основном измените все, кромеDefault-Start
) - Удалите эти строки:
тест -f /usr/sbin/pppconfig || выход 0
mkdir /var/run/pppconfig >/dev/null 2>&1 || true
тест -f /etc/ppp/ip-down.d/0dns-down || выход 0
Измените строки в
start)
блоке для запуска ваших скриптов. Оставьте;;
в конце.Запустите,
update-rc.d foobar enable
гдеfoobar
— имя вашей службы (должно быть именем файла, а также расширениемProvides
, по крайней мере, по соглашению).
Перезагрузите систему и проверьте.