Bacula 守护进程无法停止或重新启动

Bacula 守护进程无法停止或重新启动

前言:我已经解决了这个问题,并提出这个问题来分享我找到的解决方案。请记住,这里描述的问题可能(或可能不是)更普遍,并且不仅适用于 Bacula,还适用于其他服务。它也可能是 Debian 特有的,因为这似乎是打包的问题,​​但我目前无法在任何其他发行版上测试它。

问题:

设置 Bacula 安装时我遇到了文件守护进程的奇怪行为:

  • /etc/init.d/bacula-fd start启动守护进程 OK
  • /etc/init.d/bacula-fd stop无法停止守护进程
  • 因此/etc/init.d/bacula-fd restart也会失败(PID 不会改变),所以新配置不适用
  • /etc/init.d/bacula-fd statusbacula-fd is not running ... failed!尽管ps aux | grep bacula-fd显示守护进程实际上正在运行,但仍会返回

PID 文件存在于其配置所在的位置并且其内容正确。

系统是 Debian Wheezy,Bacula 版本是 5.2.6(Wheezy 存储库中最新版本)。

该问题仅存在于安装了 Bacula 的部分机器上,在其他几台机器上运行正常。

/etc/bacula/bacula-fd.conf受影响计算机上的FileDaemon 部分:

文件守护进程 {
  姓名 = (此处为姓名)
  FDAddress =(此处为公网 IP)
  FD端口 = 13802
  工作目录 = /var/lib/bacula
  Pid 目录 = /var/run/bacula
  最大并发作业数 = 20
}

另一台未受影响的机器的输出为:

文件守护进程 {
  姓名 = (此处为姓名)
  FD端口 = 9102
  工作目录 = /var/lib/bacula
  Pid 目录 = /var/run/bacula
  最大并发作业数 = 20
  FD地址 = 192.168.1.10

如果我不能解决这个问题,我就无法使用脚本自动将配置更改应用于我的所有 Bacula 机器。这种行为可能是什么原因造成的?我该如何解决这个问题?

答案1

问题部分出在配置文件中,部分出在其他地方。在安装了 Bacula 的 20 台机器中,我修改了 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 文件守护进程
bacula-fd 13802/udp

现在,/etc/init.d/bacula-fd脚本运行起来非常好。

相关内容