Si las necesidades de nuestra red y/o de nuestro directorio hacen aconsejable mantener más de un servidor LDAP (por ejemplo, para poder equilibrar la carga de las consultas, y por aspectos de tolerancia a fallos) podemos configurar varios servidores LDAP que mantengan imágenes sincronizadas de la información del directorio.
Para mantener el directorio replicado en diferentes servidores,
OpenLDAP propone un esquema de maestro único y múltiples
esclavos. Este esquema funciona de la siguiente forma: cada vez
que se produce un cambio en el directorio del servidor maestro, el
servicio slapd escribe dicho cambio, en formato
LDIF, en un fichero local de registro (es decir,
log file o cuaderno de
bitácora). El servidor maestro inicia otro servicio denominado
slurpd que, cada cierto tiempo se activa, lee
dichos cambios e invoca las operaciones de modificación
correspondientes en todos los esclavos. En cambio, si un esclavo
recibe una operación de modificación directa por parte de un
cliente, ésta debe redirigirse automáticamente al servidor
maestro.
Evidentemente, este esquema sólo funciona si todos los servidores
(maestro y esclavos) parten de un estado del directorio común. Por
ese motivo, es necesario copiar manualmente la base de datos del
directorio (es decir, el contenido del directorio
/var/lib/openldap del servidor maestro) a
cada esclavo, estando los servicios slapd
parados en todos ellos, por supuesto.
La configuración del servidor maestro y de cada esclavo sería la siguiente:
Servidor maestro. En el
archivo de configuración
/etc/openldap/slapd.conf hay que añadir las
siguientes líneas por cada servidor esclavo:
replica host=esclavo.admon.com:389
binddn="cn=Replicator,dc=admon,dc=com"
bindmethod=simple
credentials=CONTRASEÑA_PLANA
Y además hay que decirle a slapd en qué
fichero de registro tiene que escribir los cambios:
replogfile /var/lib/openldap/master-slapd.replog
Servidor esclavo. Por una
parte, en el servidor esclavo hay que configurar el archivo
/etc/openldap/slapd.conf de la misma forma
que en el maestro (ver “Segundo paso:
configuración del servidor”), exceptuando las
líneas expuestas en el apartado anterior, que sólo corresponden
al maestro.
Por otra parte, hay que incluir en dicho fichero las siguientes opciones:
rootdn "cn=Replicator,dc=admon,dc=com" updatedn "cn=Replicator,dc=admon,dc=com" updateref ldap://maestro.admon.com
La opción updatedn indica la cuenta con la
que el servicio slurpd del servidor maestro
va a realizar las modificaciones en la réplica del esclavo. Como
puede comprobarse, hemos establecido que esta cuenta sea también
el "rootdn" del servidor esclavo. Esa es la forma más sencilla
de asegurar que este usuario tendrá permisos para modificar el
directorio en este servidor (si no fuera así, deberíamos
asegurarnos que esta cuenta tuviera concedido permiso de
escritura en el directorio del servidor esclavo, en directiva
"access" correspondiente). Por su parte,
updateref indica al servidor esclavo que
cualquier petición directa de modificación que venga de un
cliente debe ser redireccionada al servidor maestro del
directorio.