No presente artigo irei explicar como fazer uma replicação da Base do
OpenLDAP, bem como deixar um servidor como slave, para qualquer evento em que o servidor master ficar indisponível o servidor slave assuma a posição de master. :)
Primeiramente deve-se instalar o openldap tanto no servidor master, quanto no servidor slave (o arquivo de configuração
slapd.conf deve ser o mesmo para os dois), exceto por algumas diretivas (veja passo 2).
Configurações:
1. Servidor master: após a criação da entrada admin na base, deve-se adicionar as seguintes diretivas no arquivo de configuração /etc/ldap/slapd.conf (atenção à indentação! Se estiver errada, a diretiva falhará):
replica uri=ldap://192.168.1.2:389
binddn="cn=admin,dc=facina,dc=com,dc=br"
bindmethod=simple
credentials=senha_da_conta_admin
replogfile /var/lib/ldap/replog.ldif
A primeira linha especifica o servidor slave, com a porta padrão utilizada pelo LDAP. A segunda linha define a conta administrativa do LDAP, nesse caso a conta administrativa é admin, do domínio facina.com.br.
O método "bindmethod=" quando especificada como "simple" orienta o slurp para autenticar com a senha definida em "credentials". A última linha define o arquivo de log. :)
2. Servidor slave: adicionar as seguintes diretivas no arquivo de configuração /etc/ldap/slapd.conf (a diretiva updatedn deve coincidir com a utilizada na configuração do master)
access to *
by dn="cn=admin,dc=facina,dc=com,dc=br" write
updatedn "cn=admin,dc=facina,dc=com,dc=br"
updateref ldap://192.168.1.1
3. Agora deve-se fazer um backup ou tirar um snapshot da base master:
# slapcat > base.ldif
4. No servidor slave, basta fazer a cópia da base:
# ldapadd -x -D "cn=admin,dc=facina,dc=com,dc=br" -f base.ldif
ou
# slapadd -l base.ldif
(Antes, pare o serviço do ldap:
/etc/init.d/slapd stop)
5. Iniciar os serviços slapd e slurpd no servidor master e slapd no servidor slave, para Debian (veja /etc/default/slapd):
# /etc/init.d/slapd start
6. Pronto! Agora é só fazer os testes e verificar se a réplica está funcionando. Muitos serviços como o SAMBA e autenticação PAM, permitem a utilização de 2 ou mais servidores LDAP.
O samba permite a utilização de múltiplos servidores LDAP, basta adicionar uma diretiva como essa:
passdb backend = ldapsam:"ldap://192.168.1.1/ ldap://192.168.1.2/"
Assim se o servidor LDAP master cair o samba irá buscar as informações no servidor slave, sendo um processo totalmente transparente para o usuário.
Pronto, :)
André Luiz Facina