Replicacao no ldap

Iniciado por carlosaf, 15 de Julho de 2008, 17:36

tópico anterior - próximo tópico

carlosaf

Replicação de servidores ldap

1. Introdução


Com a crescente de disponibilização de sistemas aplicativos através da Internet, a segurança e padronização de acessos por parte dos usuários de determinada instituição vêm acumulando uma importância cada vez maior. Arquiteturas do tipo "single sign-on", onde o usuário se autentica apenas uma vez e recebe autorização para executar determinados aplicativos, têm sido implementadas através da disponibilização de uma base de dados geralmente rodando através de um, ou mais, servidores LDAP.

Este tutorial busca apresentar dois tipos de configuração para a replicação de um servidor ldap. A primeira delas, chamada de master-slave, permite a atualização da base de dados em apenas um dos nós (o chamado master) e sua replicação automática para o escravo (slave). Já a segunda proposta (mirror mode) possibilita a alteração em qualquer um dos nós e subseqüente atualização para os demais.

2. Replicação "master-slave"

Para esta configuração, a atualização do banco de dados é realizada através do servidor principal (master) e é replicada ao escravo (slave), não sendo possível alteração a partir do último.

Para sua implementação, alterar a configuração do arquivo /etc/ldap/slapd.conf em ambos os servidores (master e slave), conforme descrito a seguir.

a) configuração do servidor  "master"


# PARA A REPLICACAO VIA SYNCREPL FUNCIONAR E NECESSARIO CARREGAR O MODULO ABAIXO
modulepath /usr/lib/ldap

moduleload back_hdb

moduleload      syncprov.la


## Estruturas de Indices – acrescentar...
index   uniqueMember,entryCSN,entryUUID                 eq

# PARA A REPLICACAO VIA SYNCREPL
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100

# Save the time that the entry gets modified, for database #1
lastmod         on


b) configuração do servidor  "slave"

Acrescentar as seguintes linhas no arquivo de configuração

syncrepl   rid=001
           provider=ldap://10.1.22.30
           type=refreshOnly
           interval=00:00:00:10
           searchbase="dc=seudominio,dc=com,dc=br"
           scope=sub
           schemachecking=off
           bindmethod=simple
           binddn="cn=admin,dc=seudominio,dc=com,dc=br"
           credentials="senha do admin no master"
updateref  ldap://10.1.22.30



A seguir, reiniciar o slapd em ambos os servidores.


3. Replicação "mirror mode"

Este tipo de arquitetura permite que a atualização seja realizada a partir de qualquer um dos nós e replicada para os demais.

Para sua implementação, alterar a configuração do arquivo /etc/ldap/slapd.conf em todos os servidores, conforme descrito a seguir:

# Global Directives:

# Features to permit
# compatibilidade com a versão 2 do LDAP, requerida pelo Samba para suas consulta
allow bind_v2

# Schema and objectClass definitions
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/samba.schema

pidfile         /var/run/slapd/slapd.pid
argsfile        /var/run/slapd/slapd.args

# Where the dynamically loaded modules are stored
modulepath /usr/lib/ldap
moduleload back_hdb
moduleload      syncprov.la

# The maximum number of entries that is returned for a search operation
sizelimit 500

# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1

# cada um dos servidores do esquema mirrormode necessita de uma identificacao
# deve ser igual ao atributo "rid" abaixo
serverID 001

backend hdb
database        hdb

# The base of your directory in database #1
suffix          "dc=seudominio,dc=com,dc=br"

# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
rootdn          "cn=admin,dc=seudominio,dc=com,dc=br"
rootpw          {SSHA}7/ZHk3KgjdDNsW3AG7ejUrlg16oPtR81

# Where the database file are physically stored for database #1
directory       "/var/lib/ldap"

dbconfig set_cachesize 0 2097152 0

# Number of objects that can be locked at the same time.
dbconfig set_lk_max_objects 1500

# Number of locks (both requested and granted)
dbconfig set_lk_max_locks 1500

# Number of lockers
dbconfig set_lk_max_lockers 1500

## Estruturas de Indices
index   cn,sn,uid,displayName                           pres,sub,eq
index   memberUID,mail,givenname                        eq,subinitial
index   objectClass,uidNumber,gidNumber                 eq
index   sambaSID,sambaPrimaryGroupSID,sambaDomainName   eq
index   uniqueMember,entryCSN,entryUUID                 eq


# PARA A REPLICACAO VIA SYNCREPL
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100

# Save the time that the entry gets modified, for database #1
lastmod         on

# Checkpoint the BerkeleyDB database periodically in case of system
# failure and to speed slapd shutdown.
checkpoint      512 30

syncrepl   rid=001
           provider=ldap://10.1.22.30
           type=refreshAndPersist
           interval=00:00:00:10
           searchbase="dc=seudominio,dc=com,dc=br"
           scope=sub
           schemachecking=off
           bindmethod=simple
           binddn="cn=admin,dc=seudominio,dc=com,dc=br"
           credentials="senha do usuario admin"
retry="60 +"

syncrepl   rid=002
           provider=ldap://172.16.236.128
           type=refreshAndPersist
           interval=00:00:00:10
           searchbase="dc=seudominio,dc=com,dc=br"
           scope=sub
           schemachecking=off
           bindmethod=simple
           binddn="cn=admin,dc=seudominio,dc=com,dc=br"
           credentials="senha do usuario admin"
retry="60 +"

mirrormode on

access to attrs=sambaLMPassword,sambaNTPassword,userPassword,sambaPasswordHistory,sambaPwdLastSet
        by dn="cn=admin,dc=seudominio,dc=com,dc=br" write
        by anonymous auth
        by self write
        by * none

access to dn.base="" by * read

# The admin dn has full write access, everyone else
# can read everything.
access to *
        by dn="cn=admin,dc=seudominio,dc=com,dc=br" write
        by * read



Para a configuração do arquivo slapd.conf do segundo servidor, basta alterar o atributo serverID (no arquivo de configuração acima) para 002.