[Moscow.pm] Ubic service dependencies

Grigory Batalov grisxa на gmail.com
Пн Июл 14 04:49:49 PDT 2014


В Sat, 12 Jul 2014 00:17:12 +0400
Vyacheslav Matyukhin <me на berekuk.ru> пишет:

> Зависимостей в ubic'е нет, и я не понимаю, зачем они, и как их можно
> было бы правильно реализовать. Предположим, что A зависит от B, и
> сервис B сломался. Что должен делать ubic, выключать сервис A?
> показывать его статус как сломанный? зачем? Если A не может работать
> без B, он сломается сам. При этом если A обязательно надо запускать
> после сервиса B, и без этого ничего не будет работать, то есть такое
> обязательное требование на очередность, то это значит, что если B
> перезапустится, то A скорее всего сломается, и это плохо, в таком
> случае A надо чинить. Если же требования на очередность нет, то
> зависимость тоже не нужна. Тем не менее, если очень хочется, можно
> проверять статус: Ubic->status("service.name") (возвращает объект
> класса Ubic::Result::Class). Но я это все-таки считаю антипаттерном.

Моя цель проста: обеспечить автоматический запуск всех служб
при включении сервера, и без участия админа. Как это делают
все init-системы.

Если Redis не стартовал или не смог из-за ошибки, то и зависимые
от него службы запускать нет смысла. Как и запускать их до него
(если только в них не заложена периодическая проверка и реконнект).

Т.е. я рассматриваю только команду start: она проверяет требования
и стартует службу. А если требования не выполнены, то не стартует.

Самый простой вариант, который меня устраивает, это запуск безо
всяких проверок, но в заданной очерёдности. Например, как упорядочены
симлинки в /etc/rc3.d:
S17rsyslog
...
S20mysql

Если я пронумерую сервисы Ubic, это мне гарантирует очерёдность? :-)
(Пытался найти это в коде при общем запуске ubic start, но запутался.)

# ubic start --force
Starting 05_redis... started (pid 12689)
Starting 15_myservice... started

> Всем привет!
> Спрошу здесь, всё-таки Ubic написан на Перле :)
> 
> Мне нужно, чтобы перед запуском моего сервиса уже был запущен Redis.
> Как в этом убедиться? Нет ли в Ubic каких-то настроек/зависимостей
> для составления очерёдности запуска (как в некоторых init.d-системах)?
> 
> Или, может, есть какое-то API для проверки статуса сервиса redis
> внутри скрипта с моим сервисом?


Подробная информация о списке рассылки Moscow-pm