Назад | Перейти на главную страницу

Демону Bacula не удается остановить или перезапустить

Предисловие: Я уже решил эту проблему и задаю этот вопрос, чтобы поделиться найденным мной решением. Помните, что описанная здесь проблема может быть (а может и не быть) более общей и относиться не только к Bacula, но и к другим службам. Он также может быть специфичным для Debian, поскольку это, похоже, вопрос упаковки, но в настоящее время я не могу протестировать его ни в каком другом дистрибутиве.

Вопрос:

Настройка установки Bacula Я столкнулся со странным поведением файлового демона:

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 сценарий работает как шарм.