Pesquisa de site

Configure a replicação OpenLDAP Multi-Master no CentOS 8


Nos artigos anteriores, abordamos como instalar o OpenLDAP no CentOS 8 e como configurar a replicação OpenLDAP Provider-Consumer. Neste guia, abordaremos como configurar a replicação mestre-mestre ou o tipo de configuração consumidor-consumidor.

O OpenLDAP vem com um módulo chamado LDAP SYNC Replication Engine (syncrepl) que é responsável pela replicação multimestre.

Configurar a replicação mestre-mestre OpenLDAP no CentOS 8

Antes de prosseguirmos, precisamos preparar nossos anfitriões. Em nossa configuração, temos os seguintes hosts:

  1. ldapmaster.computingforgeeks.com – nó OpenLDAP existente
  2. ldapmaster02.computingforgeeks.com – Novo host que será usado como segundo provedor.

A replicação no OpenLDAP envolve a sincronização do banco de dados LDAP e dos dados.

Configurar a sincronização NTP

Precisamos ter o horário dos servidores sincronizado. Usamos NTP para sincronização de horário. O artigo abaixo aborda como configurar a sincronização NTP no CentOS 8.

Como configurar o servidor NTP usando Chrony no RHEL 8/CentOS 8

Instale e configure OpenLDAP no CentOS 8

Siga as etapas destacadas no guia abaixo para instalar e configurar diretórios OpenLDAP no CentOS 8 para ambos os servidores.

Instale e configure o servidor OpenLDAP no CentOS 8

Se você tiver uma instância OpenLDAP existente e quiser configurar um provedor paralelo, terá que criar um backup dos dados e do banco de dados OpenLDAP existentes e restaurá-lo no novo nó que está preparando.

Siga as etapas abaixo para criar e restaurar um backup das configurações do OpenLDAP:

Copie dados e arquivos de configuração do servidor existente para o novo servidor.

Execute o seguinte no servidor existente para criar uma cópia do banco de dados OpenLDAP:

slapcat -b cn=config -l openldap-config.ldif

ou

slapcat -n 0 -l openldap-config.ldif

Crie um backup dos dados OpenLDAP:

slapcat -n 1 -l openldap-data.ldif

ou

slapcat -l openldap-data.ldif

Copie os arquivos de configuração para o novo servidor

scp {openldap-data.ldif, openldap-config.ldif} [email :/opt

Copie certificados SSL do servidor existente.

scp /etc/pki/tls/ldapserver.{crt,key} [email :/etc/pki/tls

Restaurar arquivos de configuração no novo servidor mestre

Execute os comandos abaixo no novo master para restaurar a configuração que acabamos de copiar nas etapas acima.

sudo rm -rf /etc/openldap/slapd.d/*
sudo rm -rf /var/lib/openldap/*

Restaure o banco de dados LDAP:

cd /opt
sudo slapadd -b cn=config -l openldap-config.ldif -F /etc/openldap/slapd.d/
#or 
cd /opt && sudo slapadd -n 0 -l openldap-config.ldif -F /etc/openldap/slapd.d/

Restaurar dados OpenLDAP:

cd /opt && sudo slapadd -n 1 -l openldap-data.ldif -F /etc/openldap/slapd.d/

Configure a propriedade correta do arquivo para os arquivos de configuração:

sudo chown -R ldap:ldap /etc/openldap/slapd.d/ /var/lib/openldap/
sudo chown ldap:ldap /etc/pki/tls/ldapserver.{crt,key}

Replicação OpenLDAP no CentOS 8

Após uma instalação e restauração bem-sucedidas dos arquivos de configuração nos dois servidores, podemos agora prosseguir com a configuração da replicação.

Habilitar sincronização de conteúdo OpenLDAP

Precisamos habilitar a sincronização de conteúdo entre os dois nós (replicação syncrepl) habilitando o módulo de sobreposiçãosyncprov em ambos os servidores.

Para fazer isso, crie um arquivo LDIF com o conteúdo abaixo em ambos os nós e atualize o banco de dados ldap.

# vim syncprov.ldif
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncprov.la

Atualize o banco de dados:

ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif

Definir IDs de servidor

É importante ter IDs de servidor para fins de identificação dos servidores. Crie um arquivo de configuração com os nós e atualize o banco de dados conforme abaixo:

# vim server-id.ldif
dn: cn=config
changetype: modify
add: olcServerID
olcServerID: 0 ldap://ldapmaster.computingforgeeks.com
olcServerID: 1 ldap://ldapmaster02.computingforgeeks.com

Atualizar o banco de dados:

ldapadd -Y EXTERNAL -H ldapi:/// -f server-id.ldif

Lembre-se de usar seus nomes de host para os IDs de servidor acima.

Habilitar replicação de configuração OpenLDAP

A próxima etapa é habilitar a replicação da configuração em ambos os nós. Para fazer isso, crie um arquivo em cada um dos servidores e adicione o conteúdo abaixo e atualize seus bancos de dados.

# vim syncprov-conf.ldif
dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

Atualize o banco de dados:

ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov-conf.ldif

Crie uma senha rootDN

Crie uma senha rootDN em cada nó. Crie um hash de senha conforme abaixo:

# slappasswd
New password: StR0ngP@ssWord
Re-enter new password: StR0ngP@ssWord
{SSHA}h3B6R1AyyeiAVuB2JZGfNaQ2RYysN

Você deve usar uma senha forte de sua escolha para gerar o hash.

Defina a senha usando o arquivo ldif:

# vim rootdn.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}h3B6R1AyyeiAVuB2JZGfNaQ2RYysN

Atualize o banco de dados em cada nó:

ldapmodify -Y EXTERNAL -H ldapi:/// -f rootdn.ldif

Adicione o arquivo de configuração abaixo em cada nó para permitir a replicação da configuração entre os nós. Lembre-se de atualizar os nomes de host e as credenciais para corresponder ao seu ambiente.

# vim replication.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: 
  rid=001
  provider=ldaps://ldapmaster.computingforgeeks.com
  binddn="cn=config"
  bindmethod=simple
  credentials="StR0ngP@ssWord" 
  searchbase="cn=config"
  type=refreshAndPersist 
  timeout=0 
  network-timeout=0 
  retry="30 5 300 +"
olcSyncRepl: 
  rid=002
  provider=ldaps://ldapmaster02.computingforgeeks.com
  binddn="cn=config"
  bindmethod=simple
  credentials="StR0ngP@ssWord" 
  searchbase="cn=config"
  type=refreshAndPersist 
  timeout=0 
  network-timeout=0 
  retry="30 5 300 +"
-
add: olcMirrorMode
olcMirrorMode: TRUE

Atualize o banco de dados ldap em cada nó:

ldapadd -Y EXTERNAL -H ldapi:/// -f replication.ldif

Habilitar replicação de banco de dados para OpenLDAP

Habilite a replicação do banco de dados nos dois nós adicionando a seguinte configuração ao banco de dados em ambos os nós

# vim db-sync.ldif
dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionlog: 100

Atualize o banco de dados:

ldapadd -Y EXTERNAL -H ldapi:/// -f db-sync.ldif

Ative os índices entryCSN e entryUID para melhorar o desempenho do banco de dados:

# vim indexes.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryCSN eq
-
add: olcDbIndex
olcDbIndex: entryUUID eq

Atualizar bancos de dados:

ldapadd -Y EXTERNAL -H ldapi:/// -f indexes.ldif

Defina opções de replicação de banco de dados em todos os nós:

# vim db_options.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcSyncrepl
olcSyncrepl: 
  rid=003 
  provider=ldaps://ldapmaster.computingforgeeks.com
  binddn="cn=admin,dc=ldapmaster,dc=computingforgeeks,dc=com" 
  bindmethod=simple
  credentials="StR0ngP@ssW0rd" 
  searchbase="dc=ldapmaster,dc=computingforgeeks,dc=com" 
  type=refreshAndPersist 
  timeout=0 
  network-timeout=0 
  retry="30 5 300 +"
olcSyncrepl: 
  rid=004 
  provider=ldaps://ldapmaster02.computingforgeeks.com
  binddn="cn=admin,dc=ldapmaster,dc=computingforgeeks,dc=com" 
  bindmethod=simple
  credentials="StR0ngP@ssW0rd" 
  searchbase="dc=ldapmaster,dc=computingforgeeks,dc=com" 
  type=refreshAndPersist 
  timeout=0 
  network-timeout=0 
  retry="30 5 300 +"
-
add: olcMirrorMode
olcMirrorMode: TRUE

Atualizar o banco de dados:

ldapadd -Y EXTERNAL -H ldapi:/// -f db_options.ldif

Neste ponto, configuramos com êxito a replicação nos dois nós e ambos podem ser usados como mestres. Nesse caso, as atualizações do banco de dados poderão ser feitas em qualquer nó e a replicação ocorrerá para o outro servidor.

Testando replicação multimestre OpenLDAP

A última etapa é verificar se nossa configuração está funcionando corretamente. Para fazer isso, modificaremos uma senha de usuário de um nó e veremos se podemos autenticar com a nova senha no outro nó. Também tentaremos o inverso e veremos se também funciona.

temos o seguinte usuário:

uid=vshamallah,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com

Podemos modificar a senha em ldapmaster.computingforgeeks.com

[root@ldapmaster ~]# ldappasswd -H ldapi:/// -Y EXTERNAL -S "uid=vshamallah,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com"

Digite a nova senha no prompt.

New password: N3wP@ssw0rd
Re-enter new password: N3wP@ssw0rd
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0

Verifique a senha em ldapmaster02.computingforgeeks.com:

[root@ldapmaster02 ~]# ldapwhoami -x -h ldapmaster.computingforgeeks.com -D "uid=vshamallah,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com" -W

Você será solicitado a inserir a senha. Se as alterações foram efetuadas, a saída fornecerá os detalhes do usuário.

Enter LDAP Password: N3wP@ssw0rd
dn:uid=vshamallah,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com

Da mesma forma, se você fizer a mesma coisa ao contrário de redefinir a senha em ldapmaster02.computingforgeeks.com e verificar em ldapmaster.computingforgeeks.com, você deverá obter o mesmo saída.

Isso marca o fim do nosso guia. Obrigado por acompanhar e confira os outros guias relacionados abaixo:

Instale e configure o servidor OpenLDAP no CentOS 8

Como configurar a replicação do servidor OpenLDAP no CentOS 8

Artigos relacionados: