Posts Tagged LDAP OpenLDAP replicação N-Way Multimaster
Replicação Multi-Master no OpenLDAP 2.4
Posted by admin in Software Livre on November 15th, 2009
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.ldifIsto 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.ldifPronto! Está funcionando!