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:
- ldapmaster.computingforgeeks.com – nó OpenLDAP existente
- 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