Nesse artigo iremos demonstrar o funcionamento do sistema de replicação com o OpenLDAP. Replicação é a manutenção de uma cópia, seja parcial ou total, dos dados em outros servidores. Este é um método muito utilizado quando trabalhamos em um ambiente corporativo, onde temos a necessidade de alta disponibilidade nos serviços.
Base Teórica Sobre Replicação no OpenLdap
Replicação é a manutenção de uma cópia, seja parcial ou total, dos dados em outros servidores. Esse é um método muito utilizado quando trabalhamos em um ambiente corporativo, onde temos a necessidade de alta disponibilidade nos serviços.
No OpenLDAP existem duas técnicas distintas de replicação as quais são o slurpd e o syncrepl, sendo que a slurpd é uma técnica mais antiga a qual 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, o qual 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, o qual 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 é o 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 OpenLDAP 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á possuímos dois servidores configurados com o servidor OpenLDAP instalado e funcionando, assim apenas demonstraremos os parâmetros relacionados as replicações entre os servidores. A distribuição Linux utilizada foi Debian 5 e o 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 “index”:
1 | overlay syncprov |
Devemos Inserir também junto a ACL responsável pelos atributos de senha, userPassword e shadowLastChange a seguinte linha:
1 | by dn="cn=replicator,dc=dominio,dc=com,dc=br" read |
Assim inserimos a permissão para o usuário replicador, ao qual deve ser criado anteriormente para 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:
1 | /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 caractere “#” antes da linha “rootdn”, e logo após inserimos as seguintes linhas abaixo de “index”:
1 | syncrepl rid=1 |
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:
1 | /etc/init.d/slapd stop |
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.