LDAP allows you to have a master+slave server setup, with automatic failover in case of problems or just to spread
the load. This has obvious advantages, but it can hide problems with the
If your master server is down but the slaves are OK, ldapsearch
and other lookups will work fine. But if you try to modify the database (e.g.,
with ldapadd), you’ll get this kind of error message:
ldap_add: Referral (10) referrals: ldaps://masterldap.example.com/uid=test,ou=People, dc=example,dc=com
Slave servers can’t modify the database, so it tries to redirect to the
master, and fails. If you now use ldapsearch to look for your new
entry, you will not find it.
You can confirm the diagnosis by trying:
ldapsearch -H ldaps://masterldap.example.com to force a bind to
the master server.
The next stage is to find out what’s causing the problem. Set the loglevel
in /etc/ldap/slapd.conf to 1, then restart slapd and check
Two common problems:
- An old slapd process that hasn’t been killed off
properly. Check with ps and kill it if
- An alock problem, which looks like this in the log:
slapd: bdb_db_open: alock package is unstable slapd: backend_startup_one: bi_db_open failed! (-1)
To resolve, remove the /var/lib/ldap/alock file (or check your
slapd.conf for your local data directory). Run
db_recover to fix the database, or just restart
slapd and it should recover itself. You
may need to give it a little time or restart it again.
Remember to return the loglevel to normal afterward, or the server will be
very slow. Also, consider using monitoring software to catch these silent
This article was first published on ServerWatch.com.