Configurando un LDAP secundario – Modo Espejo

En la entrada anterior a esta, hicimos la instalación de openldap, lo poblamos y configuramos un cliente para que accediera a él. Consiguiendo así la información de los usuarios y pudiendo loguear en el sistema con un usuario almacenado en el directorio de ldap gracias al paquete libpam-ldapd, e incluso montábamos automáticamente su directorio home al iniciar sesión por primera vez, gracias al módulo de pam y al servidor nfs3 que compartía el recurso por red.

Ahora en esta entrada queremos tener una replica del servidor primario, en la otra máquina, sincronizando así cualquier cambio que se produzca en una de ellas a la otra.

En términos de ldap, no se denominan servidor primaria o secundario, si no más bien, como provider consumer. Dicho esto, os mostramos la estructura que vamos a instalar y configurar, aparte de las observaciones que conlleva este modo de replicación:

 

  • Cada Master esta configurado como “provider” usando (syncprov overlay) y como “consumer” de la otra máquina usando (olcSyncrepl/syncrepl).
  • Cada provider debe usar un olcServerID único.
  • Ambas máquinas deben tener sincronizadas la misma hora (NTP)
  • Cada provider debe tener un refreshAndPersist  a la otra.
  • El atributo olcServerId siempre se define en la entrada “cn=config”
  • Si todos las máquinas van a replicar el mismo DIT (como es este caso), una buena práctica es usar el mismo binddn en cada una de ellas.
  • El parámetro “rid” de la directiva olcSyncrepl debe ser único dentro de cn=config de ese servidor.
  • El atributo olcMirrormode: true es requerido para la configuración del multi-master, en cada servidor, Si se omite en algún provider, fallarían algunas actualizaciones.
  • No importa si el estado en que se encuentra cada DIT es diferente uno del otro, en la primera conexión se sincronizarán automáticamente.
  • Finalmente cualquier modificación en cualquiera de los masters, automáticamente se propagará al otro.

0. Requisito previo

Para el correcto funcionamiento de la replicación, las máquinas deben ser capaces de resolver el nombre completo de la otra máquina, lo más correcto sería usar un servidor DNS, para este escenario se ha hecho uso de la resolución estática configurando los ficheros /etc/hosts de las máquinas, indicándolo de la siguiente forma:

El fichero /etc/hosts de Mickey:

El fichero /etc/hosts de Minnie:

Finalmente comprobar que esta bien configurado el fqdn de ambas máquinas, con:

La salida deberá ser algo similar a esto:

nombredelamaquina.charlie.gonzalonazareno.org

1. Instalar ldap en la máquina Minnie:

El sistema operativo que corre sobre la máquina es una Ubuntu Xenial.

Instalamos los paquetes necesarios:

Una vez finalice la instalación, ejecutamos la siguiente instrucción para agregar información que no se nos ha solicitado en un primer momento.

  • No omit
  • Nombre del dominio: charlie.gonzalonazareno.org
  • Nombre: IES Charlie Sanchez
  • Contraseña del administrador: ******
  • Motor: MDB
  • No queremos que se borre
  • Si queremos mover la base de datos antigua
  • Y no utilizamos el protocolo LDAPv2

Ahora creamos un fichero .ldif para agregar al menos, las unidades organizativas dentro del directorio:

Y añadir:

Ejecutamos la herramienta de ldap-utils, para agregar la información anterior a nuestro directorio de Minnie.

2. Configurar Mickey mediante cn=config:

Opcional: en mi caso voy a cambiar la contraseña del administrador, ya que después al no utilizar ningún mecanismo de cifrado, la contraseña deberá colocarse en texto claro ya que el parámetro que hará uso de ella no acepta otra cosa (se verá mas abajo).

La contraseña anterior la conseguimos gracias a slappasswd.

Cargamos el modulo syncrepl

Configuramos el provider

Establecemos el indice “eq” para beneficiar el rendimiento de session log

Indicamos el servidor ID

Definimos la otra máquina a replicar

Habilitar log a nivel de comprobación de la replicación

Todos estos códigos se almacenan en ficheros con formato .ldif y se cargan gracias a la siguiente instrucción en el directorio:

3. Configurar Minnie mediante cn=config:

Los pasos serán muy parecidos, solo debemso cambiar el serverID y el rid.

Cargamos el modulo syncrepl

Configuramos el provider

Establecemos el indice “eq” para beneficiar el rendimiento de session log

Indicamos el servidor ID

 Definimos la otra máquina a replicar

Habilitar log a nivel de comprobación de la replicación

Añadir los ldifs:

4. Prueba de replicación

Añadimos un nuevo usuario por ejemplo en la máquina Minnie:

Añadir:

Ahora si nos vamos a Mickey y ejecutamos el log, se deberá ver el procedimiento que se ha llevado a cabo entre ambos servidores:

Salida:

Automáticamente se sincronizan todos los registros que no existieran en Minnie y si existian en Mickey.

Y si ejecutamos también un slapcat desde Mickey, deberá visualizarse el nuevo usuario:

Fuente de los iconos:

Alguna duda o feedback será bienvenido 😉

Autor entrada: CharlieJ

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *