Buenas.
Configurações para replicar bases ldap usando o método syncrpl.
No Servidor ldap Master adicione as seguintes linhas no slapd.conf, nas respectivas sessões:
moduleload syncprov
index entryCSN eq
index entryUUID eq
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
As 3 últimas linhas devem ir no final no arquivo abaixo das especificações dos bancos.
As linha ‘syncprov-checkpoint 100 10′ diz que é para forçar sincronização a cada 100 gravações, ou a cada 10 minutos. E a linha ‘syncprov-sessionlog 100′ mantem um registro das ultimas 100 entradas sincronizadas.
Note que adicionamos duas entradas ‘index’, então devemos parar o slapd, e reindexar a base com um ‘slapindex -vv’. Após um chown -R ldap:ldap /var/db/ldap/*, e subimos o serviço novamente.
Do lado dos ‘slaves’, você deve adicionar o seguinte:
index entryCSN eq
index entryUUID eq
syncrepl rid=001
searchbase="dc=dominio,dc=com"
provider="ldaps://endereco.do.servidor.master"
binddn="cn=Manager,dc=dominio,dc=com"
bindmethod=simple
credentials="minhasenha"
filter="(objectClass=*)"
attrs="*,+"
#type="refreshOnly"
type="refreshAndPersist"
interval=00:00:05:00
retry="60 10 300 3"
scope=sub
updateref "ldaps://endereco.do.servidor.master"
Explicando as linhas:
rid 001: é o identificador interno, você pode ter várias sessões para sincronizar, esse número deve ser único para cada entrada, e não deve ter mais que 3 números;
searchbase: apartir de qual nó, do serivdor ‘master’ deve-se iniciar o sincronismo;
provider: é o endereço do servidor master;
binddn: bindmethod e credentials são os dados referentes a autenticação;
filter, são quais objetos que desejamos sincronizar, objectClass=*, vai sincronizar todos os objetos;
attrs: especifica quais os atributos a serem sincronizados, ‘*,+’ irá sincronizar todos os atributos;
type, pode vir a ser refreshOnly ou refreshAndPersist, no modo refreshAndPersist, é iniciado umaconexão ao servidor master, e a cada nova alteração no ‘master’ a mesma já e atualizada no ‘slave’, no modo refreshOnly, o sincronimo ocorrerá apenas no interfao especificado pela variavel ‘interval;
interval: O tempo em que se deve conectar no master para sincronizar os dados, seu formato é ‘dd:hh:mm:ss’ onde ‘dd’ => dia, ‘hh’ => hora, ‘mm’ => minutos, ‘ss’ => segundos. Um valor como ’00:00:05:00′, representa uma atualização a cada 5 minutos
retry: especifica o tempo entre tentativas caso ocorra uma falha de conexão para a sincronização. O valor ’60 10 300 3′, diz que é para executar 10 tentativas a cada 60 segundos, e caso estas falhem, é para executar mais 3 tentativas a cada 300 segundos.
scope=sub: especifica o nivel de sincronização, pode ser ‘sub,child, one ou base’
Após tudo configurado basta reiniciar o slave, e partir pro abraço.
Não esqueça de copiar a base atual do master, via ‘slapcat’ para o slave, inportando com um ‘slapadd’.
A base no slave deve estar vazia antes da importação, e após importar, atribua o usuário ldap aos arquivos gerados no diretório onde está o banco.
Abraços