Предисловие: Я уже решил эту проблему и задаю этот вопрос, чтобы поделиться найденным мной решением. Помните, что описанная здесь проблема может быть (а может и не быть) более общей и относиться не только к 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 { Name = (name here) FDAddress = (public IP here) FDport = 13802 WorkingDirectory = /var/lib/bacula Pid Directory = /var/run/bacula Maximum Concurrent Jobs = 20 }
И один из здоровой машины:
FileDaemon { Name = (name here) FDport = 9102 WorkingDirectory = /var/lib/bacula Pid Directory = /var/run/bacula Maximum Concurrent Jobs = 20 FDAddress = 192.168.1.10
Если я не смогу решить эту проблему, я не смогу использовать сценарии для автоматического применения изменений конфигурации на всех моих машинах с Bacula. Что могло быть причиной такого поведения и как мне это решить?
Проблема частично в файлах конфигурации, а частично в другом месте. На некоторых из 20 машин, на которых была установлена Bacula, я изменил порт по умолчанию, который прослушивает bacula-fd (на это были причины), и это оказалось корнем проблемы. Для /etc/bacula/bacula-fd.conf
соответствующая строка такая: FDport = 13802
.
Дело в том /etc/init.d/bacula-fd
имеет порт жестко запрограммирован (и дополнительно перезаписан значением, возвращаемым getent services bacula-fd
call) и не извлекает его из файла конфигурации 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/udp
Сейчас /etc/init.d/bacula-fd
сценарий работает как шарм.