我的 director 守护进程托管在一台 ubuntu 机器上,而客户端是一台 windows 7 机器。两台机器都在同一个子网上。我在服务器和客户端之间进行身份验证时遇到了问题。我在服务器端收到的错误如下:
10-May 12:00 mydir-dir JobId 6395: Start Backup JobId 6395, Job=server-bkp.2013-05-10_12.00.00_13
10-May 12:00 mydir-dir JobId 6395: Using Device "RAID_Device"
10-May 12:00 mydir-dir JobId 0: Fatal error: Unable to authenticate with File daemon at "myserver.ip.address:9102". Possible causes:
Passwords or names not the same or
Maximum Concurrent Jobs exceeded on the FD or
FD networking messed up (restart daemon).
Please see http://www.bacula.org/en/rel-manual/Bacula_Freque_Asked_Questi.html#SECTION003760000000000000000 for help.
*q
root@cosmo:~# telnet my-client-hostname.domain 9102
Trying myclient.ip.address...
Connected to my-client-hostname.domain.
Escape character is '^]'.
^[^[
Connection closed by foreign host.
Windows 7 客户端计算机上的我的 bconsole.conf 文件:
Director {
Name = mydir-dir
DIRport = 9101
address = mydir.domain
Password = "my_secret_password"
}
我在客户端上的bacula-fd.conf文件如下:
# Main Director
Director {
Name = mydir-dir
Password = "my_secret_password"
}
# File Daemon
FileDaemon {
Name = my-client-hostname-fd
FDport = 9102
WorkingDirectory = "C:\\Program Files\\Bacula\\working"
Pid Directory = "C:\\Program Files\\Bacula\\working"
Maximum Concurrent Jobs = 10
}
# Where to send messages.
Messages {
Name = Standard
director = mydir-dir = all, !skipped, !restored
}
下面是我服务器上的 /etc/bacula/bacula-dir.conf。请注意,删除了一些不必要的信息。
# Main Director for backup control.
Director {
Name = mydir-dir
DIRport = 9101
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/home/bacula/bacula/working"
PidDirectory = "/var/run/bacula"
Password = "my_secret_password"
Messages = Standard
}
# Restricted Director for monitoring.
Console {
Name = mydir-mon
Password = "my_other_password"
CommandACL = status, .status
}
# Catalog within the MySQL database
Catalog {
Name = MYDIR_Catalog
DB Name = bacula
DB Address = localhost
user = "MY_USER_NAME"
password = "MY_DB_PASSWORD"
}
# Storage to use for backup
Storage {
Name = RAID_Storage
Password = "MY_SD_PASSWORD"
Address = mydirhost.domain
SDPort = 9103
Device = RAID_Device
Media Type = File
}
# Include client, job, schedule and fileset information
@/etc/bacula/clients/MY-CLIENT-HOSTNAME.conf
最后,我的 /etc/bacula/clients/MY-CLIENT-HOSTNAME.CONF 如下所示。同样,省略了一些不必要的信息。
# Client information for my-client-hostname
Client {
Name = my-client-hostname
Password = "my_secret_password"
Address = my-client-hostname.domain
FDPort = 9102
Catalog = MYDIR_Catalog
}
*请注意,我在所有文件中都使用了相同的“my_secret_password”。
我已经检查了防火墙和通过 telnet 进行的身份验证,似乎运行正常。如果有人能告诉我我做错了什么,我会非常高兴的!!!
答案1
错误信息显示:
可能的原因:
密码或名称不一样或
FD 上的最大并发作业数超出或
FD 网络混乱(重新启动守护进程)。
导演上的配置:
# Client information for my-client-hostname
Client {
Name = my-client-hostname
Password = "my_secret_password"
Address = my-client-hostname.domain
FDPort = 9102
Catalog = MYDIR_Catalog
}
文件守护进程上的配置:
....other stuff.....
# File Daemon
FileDaemon {
Name = my-client-hostname-fd
FDport = 9102
WorkingDirectory = "C:\\Program Files\\Bacula\\working"
Pid Directory = "C:\\Program Files\\Bacula\\working"
Maximum Concurrent Jobs = 10
}
....more stuff.....
因此,除非您错误地删除了某些内容,否则您的名字似乎不匹配。
(不要难过,我第一次浏览您的问题时也没有发现这一点,而且我自己也曾在类似的事情上浪费了几个小时!)
答案2
这个问题有点老了,但可能有人还在寻找答案。可能是 Windows 防火墙的问题……我知道您已经说过您检查了防火墙。我尝试在我的 ubuntu 上使用 telnet 端口,它似乎是打开的,但没有用。在添加允许连接到 %ProgramFiles%\Bacula\bacula-fd.exe 的 Windows FW 规则后,Director 开始进行身份验证。所以我会试一试 :)
答案3
我很确定我见过类似的东西。如果您将命令作为在该主机上运行的作业的一部分运行(例如“客户端在作业之前运行”语句),如果该命令已暂停或以某种方式停滞,即使您重新启动代理,它也会破坏 bacula。
如果最终发生这种情况,则“before job”命令将继承代理运行的监听文件描述符并使其保持打开状态。如果您重新启动 bacula,Windows 似乎根本不关心是否已经有一个进程绑定到 bacula 应该监听的监听地址,并让 bacula 启动。
然而,您发送到 bacula 的所有流量实际上都是由来自 bacula 旧实例的杂散命令接收的,而不是 bacula 本身。
为了修复这个问题。
- 停止 Windows 机器上的 bacula 代理。
- 在 Windows 主机上运行
netstat
并查找监听端口 9102 的任何进程。 - 终止这些进程。
- 启动bacula。
另一个问题可能是 bacula 已经用完了最大连接数,但在这种情况下您只需重新启动代理即可解决该问题。
答案4
我也在研究 bacula 服务器客户端备份工具。我确实意识到,如果您的文件守护进程比控制器和存储守护进程更新,则会抛出该错误。尝试获取 bacula-fd 5.2 版本,使其与 sd 和控制器兼容!希望它有所帮助!