OpenLDAP como Multi-Master MirrorMode

O que é OpenLDAP?

LDAP é uma sigla para Lightweight Directory Access Protocol. Este serviço é usado essencialmente para armazenar informações de usuários, grupos, sistemas etc.

O que não é OpenLDAP?

O OpenLDAP não é um serviço de autenticação. Este serviço é usado apenas para consultar as informações de usuário, como nome, senha etc. O mecanismo de autenticação de sistemas operacionais ou de sistemas, consultam essas informações para validar o acesso do usuário. Em outras palavras, o OpenLDAP apenas armazena estas informações e disponibiliza para os sistemas que vão decidir se liberam o acesso ou não.

Proposta de laboratório

Neste artigo criaremos um ambiente com 2 servidores OpenLDAP.  Ambos os servidores têm as mesmas funções, que é receber tanto requisições de escrita e leitura. Sendo eles:

– Servidor Master Primário que aceita Leitura e Escrita e;

– Servidor Master Secundário, que ficará em standby caso o primário fique indisponível.

Pré-Requisitos

Para execução do laboratório proposto, é necessário:

  • 2 Máquinas virtuais com Debian 10
  • Acesso à internet a partir das VMs
  • Os servidores devem ser acessíveis através da rede pela porta 389
  • Para a resolução dos nomes dos servidores, adicionamos os IPs manualmente em /etc/hosts.

Instalação:

Para instalação do OpenLDAP é necessário executar os comandos abaixo. Os passos baixos serão executados no servidor lab01.4linux e depois em lab02.4linux.

# apt update

# apt install -y slapd ldap-utils

– slapd – é o daemon do serviço OpenLDAP

– ldap-utils – é um pacote de utilitários para administração do serviço.

Na instalação será solicitada a senha de administração do Ldap. No nosso caso usamos 4linux 

 

Ao término da instalação, a saída no terminal será semelhante à tela abaixo:

instalacao_openldap

Após a instalação, automaticamente é criada uma base com o FQDN da máquina, que no nosso caso é lab01.4linux (dc=4linux) e um usuário de administração (cn=admin,dc=4linux).

Com as configurações realizadas até este ponto, já temos o OpenLDAP funcional.

Para realizar a configuração de replicação entre os servidores serão necessários os seguintes passos:

1 – Habilitar o módulo de replicação

Crie um arquivo chamado syncmod.ldif com o seguinte conteúdo:

dn: cn=module{0},cn=config

changeType: modify

add: olcModuleLoad

olcModuleLoad: syncprov.la

O conteúdo acima irá adicionar na árvore de configuração do LDAP o módulo syncprov.la.

Salve o arquivo e execute o comando abaixo para importar o módulo

# ldapmodify -Y EXTERNAL -H ldapi:/// -f syncmod.ldif

A saída será parecida com abaixo:

2 – Vamos informar ao LDAP qual tipo de sincronização vamos utilizar, no nosso caso syncprov.

Crie o arquivo sync.ldif com o conteúdo:

dn: olcOverLay=syncprov,olcDatabase={1}mdb,cn=config

changetype: add

objectClass: olcOverlayConfig

objectClass: olcSyncProvConfig

olcOverlay: syncprov

Execute o comando:

# ldapmodify -Y EXTERNAL -H ldapi:/// -f sync.ldif

3 – Configurar a indexação da base LDAP.

Crie o arquivo index.ldif com o conteúdo:

dn: olcDatabase={1}mdb,cn=config

changeType: modify

add: olcDbIndex

olcDbIndex: entryUUID,entryCSN eq

Execute:

# ldapmodify -Y EXTERNAL -H ldapi:/// -f index.ldif

Até o momento, estas configurações são idênticas para ambos os servidores. A partir da próxima etapa será necessário realizar alguns ajustes específicos para cada servidor.

4 – Configurando o syncrepl para replicação entre os hosts.

E por fim adicionamos no arquivo syncrepl.ldif o conteúdo abaixo. Este arquivo está separado em 3 blocos: No primeiro bloco é configurado o ID do servidor, no segundo  informamos ao ldap onde este deve espelhar os dados e por fim,  no terceiro bloco ativamos a propriedade de espelhamento (MirrorMode).

obs: Algumas entradas deste arquivo requer alteração para cada servidor específico. Leia os comentários e altere conforme necessidade

#Bloco 1: Configura o ID do servidor.

dn: cn=config

changetype: modify

add: olcServerID

olcServerID: 1 # Cada servidor deve ter um ID diferente. Lab01 adicionamos ID=1 e lab02 ID=2

dn: olcDatabase={1}mdb,cn=config

 

 

# Bloco 2: Configura o apontamento para o Master Securandário

changetype: modify

add: olcSyncrepl

olcSyncrepl: rid=001   # ID da replicação. Este número será o mesmo para todos os servidores.

provider=ldap://lab02.4linux   # Como um servidor será espelho do outro, aqui o lab02 será o provider do servidor lab01 e vise e versa.

bindmethod=simple

binddn=”cn=admin,dc=4linux”   # usuário de administração

credentials=4linux   # senha usuário de administração

searchbase=”dc=4linux”   # Base onde será feita as consultas para replicação

schemachecking=on

type=refreshAndPersist

retry=”60 +”

 

#Bloco 3: atribui ao LDAP a propriedade de espelhamento.

dn: olcDatabase={1}mdb,cn=config

changetype: modify

add: olcMirrorMode

olcMirrorMode: TRUE

Salve o arquivo syncrepl.ldif  contendo os 3 blocos acima e execute o comando abaixo:

# ldapmodify -Y EXTERNAL -H ldapi:/// -f syncrepl.ldif

Se as configurações expostas até aqui foram executadas com sucesso, o resultado será a replicação dos dados entre os servidores, portanto, qualquer modificação na base dc=4linux (adição ou remoção) em lab01, esta deve ser replicado instantaneamente para o host lab02.

Para testar a replicação, vamos adicionar uma Unidade Organizacional à base dc=4linux. Crie um arquivo chamado user.ldif com o conteúdo abaixo:

dn: ou=usuarios,dc=4linux
changeType: add
objectClass: OrganizationalUnit
ou: usuarios

Para adicionar a OrganizationalUnit à base execute:

ldapmodify -x -H ldap://lab01 -D ‘cn=admin,dc=4linux’ -f user.ldif -w 4linux

 

Após inserção na base do lab01, com o comando slapcat vamos ao servidor lab02 verificar se a replicação de fato ocorreu:

Obs: A inserção de dados pode ser realizada em qualquer um dos masters que a replicação deve ocorrer.

Conclusão

Neste laboratório configuramos o LDAP para espelhar os dados de ambos os servidores. Esse tipo de configuração é muito útil para aumentar a disponibilidade e resiliência do ambiente.

Com essa configuração, pode-se adicionar inclusive mais servidores, configurá-los em datacenters diferentes etc. Um item interessante para LDAP em MirrorMode é a configuração de um balanceador para orquestrar a virada automática em caso de falha em um dos nós.

 

Referências

Guia de Administração OpenLDAP

https://www.openldap.org/doc/admin24/OpenLDAP-Admin-Guide.pdf

 

 

Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:

CURSOSCONSULTORIA

Anterior Vim - Uma ferramenta poderosa de edição de texto e scripts
Próxima Colações não determinísticas no PostgreSQL

About author

Leonardo Torres
Leonardo Torres 1 posts

Profissional de T.I. desde 2010, Leonardo Torres é formado em Redes de Computadores pela UNICEPLAC e é certificado Red Hat. Atua na área de infraestrutura de tecnologia em ambientes críticos.

View all posts by this author →

Você pode gostar também

Infraestrutura

À prova de balas: Redis Sentinel + HAProxy

Aprenda como implantar a solução Redis para otimização de acessos em memória em Alta Disponibilidade e com a criação de um cluster com failover automatizado com Redis Sentinel Redis é

Desenvolvimento

JSON e BSON no MongoDB: para iniciantes

Dando continuidade na série de MongoDB, nesse post farei uma Introdução ao formato “Javascript Object Notation” (JSON), ao BSON e aos primeiros passos com o MongoDB. Compartilhe este post: Twitter

DevOps

Introdução ao Terraform

Terraform é uma ferramenta de código aberto comumente utilizada para construir, alterar e versionar uma infraestrutura de forma segura e eficiente, através de uma linguagem declarativa. A ferramenta é escrita