Howto replicacion LDAP

De Tutoriales de Informática
Saltar a: navegación, buscar

LDAP Maestro-Esclavo[editar]

LDAP Maestro[editar]

Creo una Cuenta de Replicación de solo lectura[editar]

Crear un usuario para la autenticación del esclavo Ej.: cn=replicador,dc=ejemplo,dc=com,dc=ar. Luego edito el archivo /etc/ldap/slapd.d/cn=config/olcDatabase\=\{1\}hdb.ldif y le doy permisos de lectura.

olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=ejemplo,dc=com,dc=ar" write by dn="cn=Replicador,dc=ejemplo,dc=com,dc=ar" read by * none
olcAccess: {1}to dn.base="" by dn="cn=Replicador,dc=ejemplo,dc=com,dc=ar" read by * read

Habilito el modulo syncprov[editar]

Edito el archivo /etc/ldap/slapd.d/cn=config/cn=module{0}.ldif y agrego la siguiente linea

olcModuleLoad: {1}syncprov

Activo syncprov para cada directorio[editar]

Me muevo al directorio /etc/ldap/slapd.d/cn=config y creo un directorio de identico nombre por cada olcDatabase.

mkdir olcDatabase={0}config
mkdir olcDatabase={1}hdb

Dentro de cada directorio creo una archivo con el siguiente nombre olcOverlay={0}syncprov.ldif y con el contenido a continuación.

dn: olcOverlay={0}syncprov
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
#
# Sync Setup for the main LDAP Database
#
olcOverlay: {0}syncprov
# Sync Checkpoints every 20 changes or 1 hour
olcSpCheckpoint: 20 60
# Keep a fair number of operations in the log
olcSpSessionlog: 1000

LDAP Esclavo[editar]

Habilito el modulo syncprov[editar]

Edito el archivo /etc/ldap/slapd.d/cn=config/cn=module{0}.ldif y agrego la siguiente linea

olcModuleLoad: {1}syncprov

Configuro el esclavo para replicar al maestro[editar]

Edito el archivo /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif y agrego lo siguiente al final

olcSyncrepl: rid=135
  provider="ldap://10.20.0.128:389/"
  type=refreshAndPersist
  retry="60 30 300 +"
  searchbase="dc=ejemplo,dc=com,dc=ar"
  bindmethod=simple
  binddn="cn=Replicador,dc=ejemplo,dc=com,dc=ar"
  credentials=contraseña

Para Finalizar reinicio el servicio ldap en cada servidor y ya esta!!!

LDAP Maestro-Maestro[editar]

Base HDB[editar]

LDAP Maestro-1[editar]

Archivo slapd[editar]

Edito el archivo /etc/default/slapd y modifico el parametro SLAPD_SERVICES

SLAPD_SERVICES="ldapi:/// ldap://ldap1.ejemplo.com.ar ldaps:///" //Para que funcione el modo mirror hay que agregar la URL a utilizar

Agrego el parametro olcServerID[editar]

Edito el archivo /etc/ldap/slapd.d/cn=config.ldif y agrego lo siguiente:

olcServerID: 101 //Este valor puede ser cualquiera

Creo una Cuenta de Replicación de solo lectura[editar]

Crear un usuario para la autenticación del esclavo Ej.: cn=replicador,dc=ejemplo,dc=com,dc=ar. Luego edito el archivo /etc/ldap/slapd.d/cn=config/olcDatabase\=\{1\}hdb.ldif y le doy permisos de lectura.

olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=ejemplo,dc=com,dc=ar" write by dn="cn=Replicador,dc=ejemplo,dc=com,dc=ar" read by * none
olcAccess: {1}to dn.base="" by dn="cn=Replicador,dc=ejemplo,dc=com,dc=ar" read by * read

Luego al final del archivo agrego lo siguiente:

olcMirrorMode: TRUE
olcSyncrepl: rid=001
  provider="ldap://ldap2.ejemplo.com.ar:389/"
  type=refreshAndPersist
  retry="60 30 300 +"
  starttls=no
  searchbase="dc=ejemplo,dc=com,dc=ar"
  bindmethod=simple
  binddn="cn=Replicador,dc=ejemplo,dc=com,dc=ar"
  credentials=123456

Habilito el modulo syncprov[editar]

Edito el archivo /etc/ldap/slapd.d/cn=config/cn=module{0}.ldif y agrego la siguiente linea

olcModuleLoad: {1}syncprov

Activo syncprov para cada directorio[editar]

Me muevo al directorio /etc/ldap/slapd.d/cn=config y creo un directorio de identico nombre por cada olcDatabase.

mkdir olcDatabase={0}config
mkdir olcDatabase={1}hdb

Dentro de cada directorio creo una archivo con el siguiente nombre olcOverlay={0}syncprov.ldif y con el contenido a continuación.

dn: olcOverlay={0}syncprov
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
#
# Sync Setup for the main LDAP Database
#
olcOverlay: {0}syncprov
# Sync Checkpoints every 20 changes or 1 hour
olcSpCheckpoint: 20 60
# Keep a fair number of operations in the log
olcSpSessionlog: 1000

LDAP Maestro-2[editar]

Archivo slapd[editar]

Edito el archivo /etc/default/slapd y modifico el parametro SLAPD_SERVICES

SLAPD_SERVICES="ldapi:/// ldap://ldap2.ejemplo.com.ar ldaps:///" //Para que funcione el modo mirror hay que agregar la URL a utilizar

Agrego el parametro olcServerID[editar]

Edito el archivo /etc/ldap/slapd.d/cn=config.ldif y agrego lo siguiente:

olcServerID: 201 //Este valor puede ser cualquiera

Creo una Cuenta de Replicación de solo lectura[editar]

Crear un usuario para la autenticación del esclavo Ej.: cn=replicador,dc=ejemplo,dc=com,dc=ar. Luego edito el archivo /etc/ldap/slapd.d/cn=config/olcDatabase\=\{1\}hdb.ldif y le doy permisos de lectura.

olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=ejemplo,dc=com,dc=ar" write by dn="cn=Replicador,dc=ejemplo,dc=com,dc=ar" read by * none
olcAccess: {1}to dn.base="" by dn="cn=Replicador,dc=ejemplo,dc=com,dc=ar" read by * read

Luego al final del archivo agrego lo siguiente:

olcMirrorMode: TRUE
olcSyncrepl: rid=002
  provider="ldap://ldap1.ejemplo.com.ar:389/"
  type=refreshAndPersist
  retry="60 30 300 +"
  starttls=no
  searchbase="dc=ejemplo,dc=com,dc=ar"
  bindmethod=simple
  binddn="cn=Replicador,dc=ejemplo,dc=com,dc=ar"
  credentials=123456

Habilito el modulo syncprov[editar]

Edito el archivo /etc/ldap/slapd.d/cn=config/cn=module{0}.ldif y agrego la siguiente linea

olcModuleLoad: {1}syncprov

Activo syncprov para cada directorio[editar]

Me muevo al directorio /etc/ldap/slapd.d/cn=config y creo un directorio de identico nombre por cada olcDatabase.

mkdir olcDatabase={0}config
mkdir olcDatabase={1}hdb

Dentro de cada directorio creo una archivo con el siguiente nombre olcOverlay={0}syncprov.ldif y con el contenido a continuación.

dn: olcOverlay={0}syncprov
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
#
# Sync Setup for the main LDAP Database
#
olcOverlay: {0}syncprov
# Sync Checkpoints every 20 changes or 1 hour
olcSpCheckpoint: 20 60
# Keep a fair number of operations in the log
olcSpSessionlog: 1000

PHPLDAPADMIN[editar]

Para que el phpldapadmin funcione, hay que modificar el siguiente archivo /etc/phpldapadmin/config.php:

$servers->setValue('server','host','ldap2.ejemplo.com.ar');

Base BDB[editar]

Realizar en ambos nodos[editar]

Crear usuario para replicación: cn=replicador,dc=ejemplo,dc=com,dc=ar
Hacerlo primero en uno de los nodos, usando phpldapadmin, exportando un usuario tipo hordebind a formato ldif, luego adaptar el texto de acuerdo al nombre replicador e importarlo.

Por ejemplo:
version: 1

# Entry 1: cn=replicador,dc=ejemplo,dc=com,dc=ar
dn: cn=replicador,dc=ejemplo,dc=com,dc=ar
cn: replicador
objectclass: person
objectclass: shadowAccount
objectclass: top
sn: replicador
uid: replicador
userpassword: {SSHA}5KUVVuNKiLm21lFeip6d9mci32uc9P3k

Una vez importado, cambiarle la contraseña usando phpldapadmin, y exportarlo a un texto ldif. Usando dicho texto importarlo en el otro nodo
Editar el archivo /etc/ldap/slapd.d/cn=config/olcDatabase\=\{1\}hdb.ldif para darle permisos completos al usuario:
olcAccess: {3}to * by dn="cn=admin,dc=ejemplo,dc=com,dc=ar" ............. by dn="cn=replicador,dc=ejemplo,dc=com,dc=ar" write
Crear cuatro archivos ldif temporales necesarios.
1- El ldif para agregar el modulo necesario la para la sincronizacion

module.ldif

dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncprov
2- El ldif para agregar la objectclass que utiliza el modulo.

olcConfig.ldif

dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
3- El ldif que agrega el id del servidor.(Hay que modificar el olcServerID, no tiene que ser el mismo)

olcServerID.ldif

dn: cn=config
changetype: modify
add: olcServerID
olcServerID: 2  <-----este valor debe ser distinto en ambos equipos


4- El ldif para agregar la objectclass que utiliza la base.

olcDatabase.ldif

dn: olcOverlay=syncprov,olcDatabase={1}bdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpCheckpoint: 100 10
olcSpSessionlog: 100

Importo los datos, al ldap:

ldapmodify -v -Y EXTERNAL -H ldapi:/// -f module.ldif
ldapmodify -v -Y EXTERNAL -H ldapi:/// -f olcConfig.ldif
ldapmodify -v -Y EXTERNAL -H ldapi:/// -f olcServerID.ldif
ldapmodify -v -Y EXTERNAL -H ldapi:/// -f olcDatabase.ldif

Realizar en ldap1[editar]

Edito el archivo /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{1\}bdb.ldif

PEGAR TEXTO AL FINAL SIN DEJAR ESPACIOS entremedio
olcMirrorMode: TRUE
olcSyncrepl: rid=001
  provider="ldap://ldap2:389/"    <---- Opcional ldaps://ldap2:636/
  type=refreshAndPersist
  retry="60 30 300 +"
  attrs="*,+"    <----Necesario para asegurar que se repliquen todos los atributos (*) de usuario, (+) operativos del ldap 
  starttls=no
  tls_reqcert=never    <----Necesario si usamos ldaps
  searchbase="dc=ejemplo,dc=com,dc=ar"
  bindmethod=simple
  binddn="cn=replicador,dc=ejemplo,dc=com,dc=ar"
  credentials=***************

Realizar en ldap2[editar]

Edito el archivo /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{1\}bdb.ldif

PEGAR TEXTO AL FINAL SIN DEJAR ESPACIOS
olcMirrorMode: TRUE
olcSyncrepl: rid=001
  provider="ldap://ldap1:389/"  <---- Opcional ldaps://ldap2:636/
  type=refreshAndPersist
  retry="60 30 300 +"
  attrs="*,+"    <----Necesario para asegurar que se repliquen todos los atributos (*) de usuario, (+) operativos del ldap
  starttls=no
  tls_reqcert=never     <---- Necesario si usamos ldaps
  searchbase="dc=ejemplo,dc=com,dc=ar"
  bindmethod=simple
  binddn="cn=replicador,dc=ejemplo,dc=com,dc=ar"
  credentials=***************


Reiniciamos el ldap y queda funcionando.

Extras[editar]

Monitoreo del sincronismo (plugin para Nagios)[editar]

Instalación de módulos Perl necesarios
# apt-get install libmoosex-getopt-perl libnet-ldap-perl libdate-manip-perl
Descarga del plugin
$ cd
$ mkdir nagios_plugins
$ cd nagios_plugins
$ wget http://tools.ltb-project.org/attachments/download/488/ltb-project-nagios-plugins-0.4.tar.gz
$ tar zxf ltb-project-nagios-plugins-0.4.tar.gz
$ sudo cp ltb-project-nagios-plugins-0.4.tar.gz/check_ldap_syncrepl_status.pl /usr/lib/nagios/plugins
$ chmod +x /usr/lib/nagios/plugins/check_ldap_syncrepl_status.pl
Un ajuste necesario:
Para que el plugin funcione correctamente con nagios-nrpe-server fue necesario corregir una linea en el script check_ldap_syncrepl_status.pl

#==========================================================================
# Modules
#==========================================================================
use strict;
#use lib '/usr/local/nagios/libexec';     <--- código original
use lib '/usr/lib/nagios/plugins';    <--- código modificado


Utilización del plugin (ejemplo)
ldap2-demo:/usr/lib/nagios/plugins# ./check_ldap_syncrepl_status.pl -D cn=usuario_bind,dc=ejemplo,dc=com,dc=ar -P password_usuario_bind -H ldap://ldap1-demo -U ldap://127.0.0.1 -w 0 -c 1
Fuente: http://acacha.org/mediawiki/index.php/Ldap