轻量级目录访问协议(LDAP) 允许你拥有一个主服务器+从服务器设置,拥有一旦发生故障时的容错功能或者分散工作量的功能。这拥有明显的优势。但是,它也隐藏了主服务器的一些问题。
如果你的主服务器关机,从服务器工作正常,进行ldapsearch搜索和其它查询是很好的。但是,如果你设法修改这个数据库(利用使用ldapadd命令),你将得到这样的错误的信息:ldap_add: Referral (10)
referrals:
ldaps://masterldap.example.com/uid=test,ou=People,
dc=example,dc=com
从服务器不能修改这个数据库。因此,它设法重新指向这个主服务器,并且得到失败的结果。如果你现在使用ldapsearch搜索命令查询你新输入的内容,你会找不到那个内容。
你可以通过如下方法证实这个诊断:使用ldapsearch -H ldaps://masterldap.example.com强制绑定这个主服务器。
下一步是找到引起故障的原因。把/etc/ldap/slapd.conf配置文件中的记录水平设置为1,然后重新启动slapd并且查看记录。
两个常见的问题是:
一个老的slapd线程没有恰当地关闭。用ps进行检查并且如果有必要的话关闭这个线程。
一个alock问题。这个问题在记录中看起来是这样的:
slapd[27069]: bdb_db_open: alock package is unstable
slapd[27069]: backend_startup_one: bi_db_open failed! (-1)
要解决这个问题,你可以删除/var/lib/ldap/alock文件(或者检查在你的本地数据目录中的slapd.conf配置文件)。运行db_recover命令修复这个数据库,或者重新启动slapd,它应该能够自己恢复。你需要给它一点时间或者重新启动它。
要记住在完成上述操作之后把记录水平恢复到正常状态,否则,服务器的运行速度会很慢。此外,考虑使用监视软件捕捉这些隐藏的问题。