sábado, 22 de enero de 2011

Centos 5.x: OpenLDAP 2.3.x Replica

Buenos dias.

Esta vez vamos a ver como hacer un servidor de respaldo para LDAP, por lo general es conveniente cuando ya tenemos un dominio con mas de 50 usuarios.

Cuand hablo de dominio me estoy refiriendo a Samba+LDAP, yo deseo que si mi servidor PDC cae por alguna razon, mis usuarios no se vean afectados, otra es que solo deseo tener un solo dominio para mi empresa, poder tener el PDC en Tijuana y el BDC en San Diego, atravez de un enlace privado o P2P o VPN.

En este ejemplo, los usuarios de Tijuana haran uso del PDC maestro y los de San Diego haran uso del BDC que esta en San Diego, no tendrian ellos que comunicarse para Tijuana a buscar info del dominio. La unica situacion sera cuando ldap de Tijuana requiera actualizar informacion en su servidor ldap de respaldo de San Diego.

Bien, ya no voy a tocar el tema de como configurar un dominio con Samba+LDAP ya que en mi blog viene como, nomas ahi que buscarle.

Lo que voy hacer es lo siguiente:

1; Debemos sacar una copia del ldap maestro y pasarsela a el esclavo, todo esto se tiene que hacer con el maestro apagado y el esclavo apagado, y cuando hagan la copia no hagan ya ningun movimiento con el maestro, de lo contrario la copia no sera exacta, por ello yo lo apago.

2; Habilitar en el ldap maestro las opciones para hacer operar la replica, que es llevada a cabo por un servicio llamado slurp, cuando arranquen el ldap maestro veran que aparece un servicio con ese nombre.

3; Enviar la copia a el esclavo.

4; Configurar el esclavo tal cual esta el maestro, y agregar las opciones de esclavo.

5; cargar la BD del maestro a el esclavo.

6; Arrancar el esclavo, enseguida el maestro.

7; Probar.

Paso 1.

slapadd -l klb.ldif
Paso 2.

Abrimos el archivo de configuracion slapd.conf del maestro y agregamos esto a el final:

replogfile /var/lib/ldap/replog
replica host=slave1.klabacita.local:389
binddn="cn=Manager,dc=klabacita,dc=local"
credentials=Manager-password
bindmethod=simple

NOTA: Cuando den de alta estos parametros, recordar que despues de "replica host" los siguientes deben de tener un tab de separacion, de lo contrario ldap marcara errores cuando lo ejecuten.

Aqui mi dominio se llama KLABACITA.LOCAL.
replica host=servidor esclavo que recibe los updates.
server-name
= pueden poner el IP del servidor, si trabajan con DNS o hosts poner el nombre del servidor, si usan nombre recuerden siempre probar la resolucion de nombre a IP.
credentials= password del root user del ldap.

El archivo de nombre: replog no va a existir, deben crearlo en la ruta elegida y debe tener como usuario y grupo a ldap.

Si desean tener multiples esclavos deben agregar los mismo parametros pero apuntando a cada uno de sus esclavos.

Paso 3.

Para poder enviar la copia, hago uso de scp:

scp klb.ldif root@ip-del-esclavo:/opt/

Ya deben saber como usar scp, correcto!!!

Paso 4.

Aparte de tener el slapd.conf del esclavo igual que el maestro, hablando tambien de la misma version de samba y los schemas tambien deben existir en el esclavo, agregamos las siguientes opciones a el esclavo a el final del archivo:

updatedn "cn=Manager,dc=klabacita,dc=local"
updateref ldap://master-ldap-server:389/

master-ldap-server= IP/Nombre del servidor maestro de LDAP.

Paso 5.

El ldap esclavo debe estar apagado y ejecutar:

slapadd -l /opt/klb.ldif

Paso 6.

En el esclavo:
service ldap start

service ldap start
Checking configuration files for slapd: config file testing succeeded
[ OK ]
Starting slapd: [ OK ]

En el maestro:
service ldap start

service ldap start
Checking configuration files for slapd: config file testing succeeded
[ OK ]
Starting slapd: [ OK ]
Starting slurpd: [ OK ]

Ya aparecio el slurp.

Paso 7.

Para probar debemos configurar a centos para que use a LDAP como su provedor de usuarios y grupos. Para ello debemos agregar a ambos sistemas ambos servidores por si uno cae tenga otro de donde sacar la info.

Configurar el /etc/ldap.conf y agregar el que falta, empezando por el maestro:

host 127.0.0.1 pdc-srv

Ahora el esclavo:

host 127.0.0.1 pdc-dos

pdc-srv = nombre de mi servidor esclavo.
pdc-dos = nombre de mi servidor maestro.

Ahora sigue /etc/openldap/ldap.conf

Maestro:

URI ldap://127.0.0.1 ldap://pdc-srv
HOST 127.0.0.1 pdc-srv

Esclavo:

URI ldap://127.0.0.1 ldap://pdc-dos
HOST 127.0.0.1 pdc-dos

Ejecutamos el servicio authconfig-tui y volvemos a configurar a ldap, cuando pasen a la pantalla siguiente en ambos sistemas deberan ver como se agrego el segundo servidor.

Listo, lo que sigue es probar esto, apaguen el maestro, supongamos que tenemos un usuario de nombre: test.

Con el servidor maestro apagado, ejecutamos el comando:

id test en ambos sistemas y nos debe dar la misma informacion:

Maestro:
id test
uid=1003(test) gid=513(Domain Users) groups=513(Domain Users)

Esclavo:

id test
uid=1003(test) gid=513(Domain Users) groups=513(Domain Users)

Arranquen el maestro y apaguen el esclavo, debe ocurrir lo mismo.

Agreguen un usuario, hagan lo mismo y deben recibir respuesta aunque cualquiera de ambos este apagado, monitorien el archivo de las replica en el maestro.

Si quieren aun mas ver si se estan llevando las replicas, en el esclavo ejecutamos el tcpdump para el puerto 389 y deben ver la comunicacion cuando el maestro manda los cambios.

Esclavo:

tcpdump -i eth0 port 389

Maestro:

agreguen un usuario, como estamos hablando de samba+ldap, entonces vamos hacer uso de smbldap-tools comando smbldap-useradd.

smbldap-useradd -a -m test2

Tan pronto ejecuten esto, en la pantalla del esclavo van a ver comunicacion, y prueban de nuevo con el comando id, debe su esclavo ya tener info del usuario:

id test2

Es todo, saludos!!!