Problemas de inicialização do Openldap após a atualização

1

Estou tentando sincronizar um escravo ldap e um servidor mestre. O servidor master está usando o openldap 2.3.43-12 e o servidor slave está usando o openldap 2.4.23. Eu copiei os arquivos em / var / lib / ldap, iniciei o servidor e recebi este erro:

Oct 22 16:16:41 xe-ldap-slave1 slapd[12111]: bdb(dc=mydomaine,dc=fr): Program version 4.7 doesn't match environment version 4.4
Oct 22 16:16:41 xe-ldap-slave1 slapd[12111]: bdb_db_open: database "dc=mydomaine,dc=fr" cannot be opened, err -30971. Restore from backup!
Oct 22 16:16:41 xe-ldap-slave1 slapd[12111]: bdb(dc=mydomaine,dc=fr): txn_checkpoint interface requires an environment configured for the transaction subsystem
Oct 22 16:16:41 xe-ldap-slave1 slapd[12111]: bdb_db_close: database "dc=mydomaine,dc=fr": txn_checkpoint failed: Invalid argument (22).
Oct 22 16:16:41 xe-ldap-slave1 slapd[12111]: backend_startup_one (type=bdb, suffix="dc=mydomaine,dc=fr"): bi_db_open failed! (-30971)
Oct 22 16:16:41 xe-ldap-slave1 slapd[12111]: bdb_db_close: database "dc=mydomaine,dc=fr": alock_close failed

Eu usei o comando db_upgrade para atualizar os arquivos do banco de dados no novo servidor slave, mas ainda recebo o mesmo erro ao iniciar o slapd.

O servidor master é o Centos 5.5 32bit & openldap 2.3.43-12 O servidor escravo é o Centos 6.3 64 bit & openldap 2.4.23 Tudo foi instalado usando o yum.

Qual é o método adequado para sincronizar arquivos de banco de dados de um servidor mestre LDAP e servidor escravo quando o servidor escravo é mais recente que o mestre?

Eu segui a sugestão de 84104, mas estou recebendo um erro no escravo

configuração syncrepl

syncrepl  rid=003
        provider=ldaps://ldap0.lan.myserver.net:636
        bindmethod=simple
        binddn="cn=syncuser,dc=mydomaine,dc=fr"
        scope=sub
        attrs="*"
        credentials=some_password
        searchbase="dc=mydomaine,dc=fr"
        logbase="cn=accesslog"
        logfilter="(&(objectClass=auditWriteObject)(reqResult=0))"
        schemachecking=on
        type=refreshAndPersist
        retry="60 +"
        syncdata=accesslog

Esta configuração syncrepl está funcionando bem nos outros servidores escravos.

Aqui está o erro no escravo:

Oct 23 18:28:30 xe-ldap-slave1 slapd[1415]: slap_client_connect: URI=ldaps://ldap0.lan.myserver.com:636 DN="cn=syncuser,dc=mydomaine,dc=fr" ldap_sasl_bind_s failed (-1)
Oct 23 18:28:30 xe-ldap-slave1 slapd[1415]: do_syncrepl: rid=003 rc -1 retrying 

Aqui está o erro no mestre:

Oct 23 18:29:30 ldap0 slapd[15265]: conn=201 fd=35 ACCEPT from IP=192.168.150.100:47690 (IP=0.0.0.0:636) 
Oct 23 18:29:30 ldap0 slapd[15265]: conn=201 fd=35 closed (TLS negotiation failure) 

Eu posso fazer uma pesquisa do ldap no master bem com o usuário configurado para sincronização do novo servidor slave.

ldapsearch -LLL -x -H ldaps://192.168.150.99:636 -x -W -b dc=mydomaine,dc=fr-D"cn=syncuser,dc=mydomaine,dc=fr"
    
por Craig Efrein 22.10.2012 / 16:32

2 respostas

1

A replicação LDAP em syncrepl é bastante robusta. Os servidores não precisam ter a mesma versão, eles só precisam entender um ao outro. (Multi-mestre adequado requer 2.4.X, mas não é isso que você está perguntando, até onde eu sei).

"The consumer replica can be constructed from a consumer-side or a provider-side backup at any synchronization status." Mais notavelmente nesse caso, é que syncrepl pode criar uma réplica adequada em um servidor que nunca foi sincronizado antes por nenhum método.

O que fazer:

  1. pare a slapd da réplica
  2. remova o conteúdo de /var/lib/ldap (exceto DB_CONFIG )
  3. verifique se a diretiva syncrepl ou olcsyncrepl está correta
  4. inicie slapd da réplica
  5. aguarde a réplica sincronizar

Observação: o uso de determinadas sobreposições (por exemplo, memberof) fará com que você perca (substitua) a operational attributes creatorsName e createTimestamp na réplica, mas, do contrário, tudo será o mesmo.

    
por 23.10.2012 / 17:49
0

IMHO você deve executar a mesma versão no mestre e nos escravos.

Se você realmente quiser, transfira os dados no formato LDIF: slapcat e slapadd podem ser usados para despejar e restaurar o banco de dados. Estes são utilitários offline, então pare os servidores ldap antes de usar.

EDIT: Tanto quanto me lembro replicação é frágil, eu não digo usando a mesma versão é obrigatória apenas recomendado.

db_upgrade modifica diretamente os arquivos slapd criados anteriormente. Pode acontecer que o resultado final esteja ok.

    
por 22.10.2012 / 16:45

Tags