Bacula Daemon не может остановить или перезапустить
Предисловие: Я уже решил эту проблему и задаю этот вопрос, чтобы поделиться найденным решением. Пожалуйста, имейте в виду, что описанная здесь проблема может (или не может) быть более общей и может относиться не только к Bacula, но и к другим услугам. Это также может быть специфично для Debian, так как кажется, что это вопрос упаковки, но в настоящее время я не могу протестировать его на любом другом дистрибутиве.
Вопрос:
При установке Bacula я столкнулся со странным поведением файлового демона:
/etc/init.d/bacula-fd start
запускает демон ОК/etc/init.d/bacula-fd stop
не может остановить демон- как следствие
/etc/init.d/bacula-fd restart
также происходит сбой (PID не изменяется), поэтому новая конфигурация не применяется /etc/init.d/bacula-fd status
возвращаетсяbacula-fd is not running ... failed!
даже еслиps aux | grep bacula-fd
показывает, что демон на самом деле работает
Файл PID присутствует там, где он сконфигурирован, и его содержимое корректно.
Система Debian Wheezy, версия Bacula - 5.2.6 (последняя версия доступна в репозитории Wheezy).
Проблема существует только на некоторых машинах, на которых установлена Bacula, на некоторых других она работает просто отлично.
Раздел FileDaemon от /etc/bacula/bacula-fd.conf
на зараженной машине:
FileDaemon { Имя = (имя здесь) FDAddress = (публичный IP здесь) FDport = 13802 WorkingDirectory = /var/lib/bacula Pid Directory = /var/run/bacula Максимальное количество одновременных заданий = 20 }
И один из незатронутой машины:
FileDaemon { Имя = (имя здесь) FDport = 9102 WorkingDirectory = /var/lib/bacula Pid Directory = /var/run/bacula Максимальное количество одновременных заданий = 20 FDAddress = 192.168.1.10
Если я не решу эту проблему, я не смогу использовать сценарии для автоматического применения изменений конфигурации на всех моих машинах Bacula. Что может быть причиной такого поведения и как мне решить эту проблему?
1 ответ
Проблема частично в файлах конфигурации и частично в другом месте. На некоторых из 20 машин, на которых был установлен Bacula, я изменил порт по умолчанию, на котором слушает bacula-fd (имел причины для этого), и это оказалось причиной проблемы. Для /etc/bacula/bacula-fd.conf
соответствующая строка это: FDport = 13802
,
Дело в том /etc/init.d/bacula-fd
имеет порт в жестком коде (и дополнительно перезаписан значением, возвращаемым getent services bacula-fd
вызов) и не извлекает его из файла конфигурации bacula-fd. Это не мешает сценарию init.d запустить демон, но вызывает проблемы с проверкой его состояния, остановкой и, следовательно, перезапуском.
Чтобы решить эту проблему, я изменил /etc/init.d/bacula-fd
изменения PORT=9102
на правильный номер порта: PORT=13802
, Дополнительно я отредактировал /etc/services
файл, нашел соответствующие строки и изменил их следующим образом:
bacula-fd 13802 / tcp # Bacula File Daemon bacula-fd 13802 / удп
Теперь /etc/init.d/bacula-fd
Сценарий работает как шарм.