Replicação é
um método muito utilizado quando trabalhamos em um ambiente
corporativo, onde
temos a necessidade de alta disponibilidade nos serviços. Na verdade
replicação
é a manutenção de uma cópia, seja parcial ou total, dos dados em outros
servidores.
No OpenLDAP
existem duas técnicas distintas de replicação, slurpd e syncrepl, sendo que a slurpd é uma técnica mais antiga e que foi
descontinuada na versão 2.4 do OpenLDAP por possuir uma série de
limitações
que foram supridas por sua sucessora, a syncrepl. As principais
limitações eram
a replicação parcial de uma base e a utilização de mais de um servidor Master.
Quando
trabalhamos com o syncrepl, o servidor LDAP pode assumir duas posturas
quanto à
replicação, Master ou Slave. Quando Master, o
servidor
assume todas as funções de um servidor OpenLDAP , desde a inserção,
atualização
e consulta dos dados. Porém quando slave, o servidor só
aceitará
execuções de consultas em sua base de dados quando originadas de
máquinas clientes. Assim, para que qualquer informação seja alterada, a solicitação deverá
ser
feita ao servidor Master, que se encarregará de replicar as
alterações para
seus servidores slaves.
Replicação Master x
Slave
Nesse método
de replicação temos um único servidor Master, que tem seu conteúdo
replicado
em todos os seus servidores slaves. Nesses servidores slaves não ocorre
entrada
de dados, apenas replicam passivamente os dados de um servidor
principal. Esse
método de replicação é o mais comum e atende a grande parte das
demandas de
servidores LDAP.
Replicação Master x
Master
(multimaster)
Replicação
multimaster é um método de replicação mais recente no OpenLDAP, porém
já
implementado no Active Directory desde suas primeiras versões. Esta é
uma
replicação que atende a demandas muito singulares e apesar de funcionar
muito
bem ainda é pouco difundida e aplicada.
Esta
replicação consiste na utilização de dois ou mais servidores Masters,
independentes, os quais possuem todas as suas funcionalidades ativadas,
porém é
criado por parte dos servidores um controle interno para que seja
possível
manter a integridade dos dados, algo que era muito mais simples de
controlar
quando existia uma única entrada de dados.
Diretórios
Distribuídos
Utilizando o
OpenLpad com o método de replicação syncrepl podemos não somente criar
uma
cópia da árvore de diretórios em outros servidores, mas também criar
políticas
de replicação e replicar a cada servidor somente aquilo que se pretende
que o
mesmo tenha acesso, assim, por exemplo, quando temos uma empresa com
sede em
Minas Gerais e filial em São Paulo, a mesma não precisa replicar toda
sua base
para a filial, apenas aqueles usuários que a pertençam, evitando assim
um
tráfego desnecessário na rede além de aumentar a segurança.
Exemplo de configuração
Bom, abaixo
iremos apresentar um exemplo de configuração de replicação para o
OpenLDAP, fazendo uso da estrutura Master x Slave. Consideraremos que já possui
dois
servidores configurados com o servidor OpenLDAP instalado e
funcionando, assim
apenas demonstraremos os parâmetros relacionados à replicação entre os
servidores. A distribuição utilizada foi o debian 5 e o servidor
OpenLDAP na versão 2.4.9.
Configuração Master x
Slave
- Configurando o
servidor
MASTER
Inicialmente,
o arquivo a ser alterado é o arquivo principal de configuração do
OpenLDAP o
/etc/ldap/slapd.conf, alterando o parâmetro modulepath para syncprov e
inserindo as seguintes linhas logo abaixo da opção “índex”:
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
Devemos
Inserir também junto a ACL responsável pelos atributos de senha,
userPassword e
shadowLastChange a seguinte linha:
by dn="cn=replicator,dc=dominio,dc=com,dc=br" read
Assim
inserimos a permissão para o usuário replicador, o qual deve ser
criado
anteriormente, ler os campos de senha dos usuários, pois sem o acesso a
leitura
ele não conseguiria efetuar a replicação completa da base. Neste ponto
foi
reiniciado o servidor com o comando:
/etc/init.d/slapd restart
- Configurando o
servidor SLAVE
Iniciaremos
a configuração do servidor slave editando o arquivo de configuração
/etc/ldap/slapd.conf
e removendo o caracter # antes da linha “rootdn”, e logo após inserimos
as
seguintes linhas abaixo de “index”:
syncrepl rid=1
provider=ldap:// servidor1.dominio.com.br:389
type=refreshAndPersist
retry="5 + 5 +"
interval=00:00:00:10
searchbase="dc=dominio,dc=com,dc=br"
filter="(objectClass=*)"
scope=sub
attrs="*"
schemachecking=on 41
bindmethod=simple
binddn="cn=replicator,dc=dominio,dc=com,dc=br"
credentials=senha_do_usuario_replicator
Após os
procedimentos acima citados, paramos o servidor OpenLDAP , removemos os
diretórios e novamente iniciamos o servidor, para isso utilizamos as
seguintes
linhas de comando:
/etc/init.d/slapd stop
rm /var/lib/ldap/*
/etc/init.d/slapd start
Assim temos
agora os dois servidores configurados, sendo que os dados do
servidor1.dominio.com.br
estão sendo replicados para o servidor2.dominio.com.br, porém o mesmo
não tem
autoridade sobre os dados fazendo com que para alterarmos qualquer
informação
na base, teremos que fazer isso no servidor1.dominio.com.br e essa
atualização
será replicada de imediato para o servidor slave.