Replicação Multi-Master no OpenLDAP 2.4


As versões mais antigas, era possível efetuar a replicação somente via slurpd e na configuração Master para N Slaves. Com o lançamento da versão 2.4, o OpenLDAP passou a proporcionar diversas formas de replicação, como Mirror Mode, N-Way Multimaster e ainda Master-Slave.

Este pequeno tutorial, explica de forma rápida a configuração para Alta-disponibilidade (N-Way Multimaster) para OpenLDAP 2.4, que sempre foi uma das principais solicitações da comunidade.

Configurando do Slapd

Fazer o setup manual do slapd.conf, ex:

# schemas
include "/usr/loca/etc/openldap/schema/core.schema"
include "/usr/loca/etc/openldap/schema/corba.schema"
include "/usr/loca/etc/openldap/schema/cosine.schema"
include "/usr/loca/etc/openldap/schema/inetorgperson.schema"
include "/usr/loca/etc/openldap/schema/misc.schema"
include "/usr/loca/etc/openldap/schema/nis.schema"
include "/usr/loca/etc/openldap/schema/openldap.schema"
 
moduleload back_bdb
 
database bdb
suffix   "ou=Mail, o=Teste"
rootdn   "cn=root, ou=Mail, o=Teste"
rootpw
directory /var/db/openldap-data
 
# Indexes
index objectClass eq
index cn,uid,associatedDomain eq

Feita a configuração básica, é necessário converter o arquivo de configuração para o novo “estilo” de configuração para o OpenLDAP 2.4. Isto pode ser feito com o commando slaptest.

root# mkdir /usr/local/etc/openldap/slapd.d/
root# slaptest -f /usr/local/etc/openldap/slapd.conf -F /usr/local/etc/openldap/slapd.d/

Serão gerados os arquivos de configuração da versão 2.4 do OpenLDAP.

É necessário também alterar os seguintes arquivos adicionando os seguintes atributos (em todos os nós):

Em /usr/local/etc/openldap/slapd.d/cn=config.ldif:

# alterar o número para cada nó
olcServerID: 1

e

Em /usr/local/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif:

olcRootPW: <senha>

A partir daí, o serviço deve ser iniciado.

Configurando a replicação

Com o novo tipo de configuração, tudo deve ser feito via arquivos LDIF e alterados na database cn=config do OpenLDAP, via ldapmodify.

Crie o um arquivo setup.ldif com o seguinte conteúdo:

dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1 ldap://<server1>
olcServerID: 2 ldap://<server2>
dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
 
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://<server1> binddn="cn=config" bindmethod=simple
credentials=secret searchbase="cn=config" type=refreshAndPersist
retry="5 5 300 5" timeout=1
olcSyncRepl: rid=002 provider=ldap://<server2> binddn="cn=config" bindmethod=simple
credentials=secret searchbase="cn=config" type=refreshAndPersist
retry="5 5 300 5" timeout=1
-
add: olcMirrorMode
olcMirrorMode: TRUE

Adicionar ao diretório

root# ldapmodify -x -D"cn=config" -w  -f setup.ldif

Isto fará a replicação da database “cn=config”. Fazer o mesmo processo no LDAP SLAVE.
Replicando a base de dados “ou=Mail,o=Teste”.

A base de dados cn=config, é importante pois desta forma, todos os nós serão configurados automaticamente, quando for feito o setup para a replicação da base “ou=Mail,o=Teste”, que possui os dados importantes.

Criar um arquivos data.ldif:

dn: olcDatabase={1}bdb,cn=config
changetype: modify
add: olcMirrorMode:
olcMirrorMode: TURE
add: olcLimits
olcLimits: dn.exact="cn=root,ou=Mail,o=Teste" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited
#replica 1
add: olcSyncRepl
olcSyncRepl: rid=003 provider=ldap://<server1> binddn="cn=root,ou=Mail,o=Teste"
bindmethod=sinple credentials=secret searchbase="ou=Mail,o=Teste"
type=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1
#replica 2
add: olcSyncRepl
olcSyncRepl: rid=004 provider=ldap://<server2> binddn="cn=root,ou=Mail,o=Teste"
bindmethod=sinple credentials=secret searchbase="ou=Mail,o=Teste"
type=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1
 
# Habilita o syncprov
dn: olcOverlay=syncprov, olcDatabase={1}bdb,cn=config
changetype: add
objectClass: olcOverLayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

Feito isso, adicionar os dados no Diretório:

root# ldapmodify -x -D"cn=config" -w  -f data.ldif

Pronto! Está funcionando!

  1. No comments yet.
(will not be published)
  1. No trackbacks yet.