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.