open ldap linuxcon_working
TRANSCRIPT
Arquitetura, disponibilidade e Arquitetura, disponibilidade e escalabilidade de serviço de escalabilidade de serviço de
diretóriodiretório
OpenOpenLDAPLDAPhttp://www.openldap.org
X.500 (ISO/IEC 9594)X.500 (ISO/IEC 9594)
É um conjunto de padrões que define um serviço de diretório;
Inclui padrões de modelo de dados e protocolos de acesso;
Entre os padrões espeficiados pelo X.500, estão o X.501(modelo) e o X.509 (certificados);
Inclui os protocolos:
DAP, DSP, DISP, DOP (OSI);
LDAP (TCP/IP);
LDAPLDAP
Lightweight Directory Access Protocol;
Surgiu com o advento da internet, como forma de trafegar informações do diretório via TCP/IP;
É apenas um protocolo na camada de aplicação;
Está na versão número 3;
OpenLDAPOpenLDAP
É uma implementação livre do padrão X.500;
Incluí LDAPv2 (depreciado) e LDAPv3;
Suporta SSL, TLS, SASL, Kerberos...;
Access Control Lists;
Internacionalização;
Diversos backends (back-bdb, back-hdb, back-sql...);
Replicação:
Master/Slave;
Multimaster;
Redundância
O OpenLDAP fornece alguns tipos de replicação, a seguir:
N-Way Multi-Master:Dois ou mais master/escrita simultânea;
Failover automátivo;
Mirror Mode:Dois master/escrita única;
Heartbeat para failover;
Delta syncrepl:Changelog database;
Syncrepl Proxy:Replace do Slurpd.
Como em qualquer arquitetura, o número mínimo de servidores é 2;
Diretórios são melhores para a leitura do que para a escrita;
Se sua necessidade de escrita é muito grande, prefira um RDBMS;
Diretórios razos tendem a gerar problemas de lock;
Sharding é sempre uma boa opção;
Regras básicasRegras básicas
ShardingSharding
O sharding pode ser feito por letras ou números;
Usar Hashes com o MD5 ou SHA1 é uma boa idéia!
O número de galhos ideal para o sharding depende do tamanho do seu ambiente;
A divisão desses galhos ajuda a diminuir problemas de lock;
Mas para ficar melhor ainda, faça tuning no seu DB_CONFIG (lockers e cache);
MasterMaster
o = Company|_ou = Mail |_ou = a | |_dc = aaa.com.br | |_ou = b |_dc = bbb.com.br
Master/SlaveMaster/SlaveReplicação Master-Master ou
Master/Slave;
Sharding por letra;
Cenário para aplicações de pequeno e médio porte;
Aplicações:
Catálogo de endereços;
Agenda;
Autenticação;
Lookup de e-mails;
Mirror Mode ou Delta SyncreplMirror Mode ou Delta Syncrepl
ReferralsReferrals
Utilizar referrals é a melhor forma de escalar diretórios;
Se o diretório já está “shardeado”, mover um galho de lugar torna-se trivial;
Depende do client “traduzir” uma entrada com referência para outro lugar;
O back-meta (slapo-meta) pode te ajudar a resolver isso;
ou=aou=a
ou=aou=aou=bou=b
ou=bou=b
cachecache
ou=aou=a ou=bou=b
clientclient
dn: ou=b, o=Companydn: ou=b, o=CompanyobjectClass: referralobjectClass: referralou: bou: bref: ldap://b.com.br/ou=b,o=Companyref: ldap://b.com.br/ou=b,o=Company
clientclient
Entrada com referral vs back-meta(slapo-meta)Entrada com referral vs back-meta(slapo-meta)
ldap://a.com.brldap://a.com.br ldap://b.com.brldap://b.com.br ldap://a.com.brldap://a.com.br ldap://b.com.brldap://b.com.br
slaposlapometa/pcachemeta/pcache
back-meta(slapo-meta)
É uma melhoria (grande) do back-ldap;
Suporta Rewriting;
POSIX regex extended;
Sintaxe similar ao mod_rewrite;
Para o client todas entradas pertencem à um mesmo DIT (directory information tree);
# slapd.conf (back-meta)# slapd.conf (back-meta)
database meta database meta suffix “ou=Mail,o=Company”suffix “ou=Mail,o=Company”uri “ldap://a.com.br/ou=a,ou=Mail,o=Companyuri “ldap://a.com.br/ou=a,ou=Mail,o=Companyuri “ldap://b.com.br/ou=b,ou=Mail,o=Companyuri “ldap://b.com.br/ou=b,ou=Mail,o=Companyuri “ldap://c.com.br/ou=c,ou=Mail,o=Companyuri “ldap://c.com.br/ou=c,ou=Mail,o=Company
# rewrite # rewrite rewriteRule '.*ou=([a-z]),.*' 'ldap://%{1}.com.br/%{1}.com.br' ':@' rewriteRule '.*ou=([a-z]),.*' 'ldap://%{1}.com.br/%{1}.com.br' ':@'
Configuração manualConfiguração manual
Utilizando rewriteUtilizando rewrite
Uma boa ideia é utilizar o Uma boa ideia é utilizar o slapo-pcacheslapo-pcache para não efetuar para não efetuar consultas excessivas. O pcache cria uma base local consultas excessivas. O pcache cria uma base local
guardando somente os resultados das consultas.guardando somente os resultados das consultas.
MasterMaster MasterMasterMasterMaster
SlaveSlave MasterMaster
MasterMaster
proxyproxy proxyproxy
ldap://a.com.brldap://a.com.br ldap://b.com.brldap://b.com.br ldap://c.com.brldap://c.com.br
cachecache cachecache
ou=a,ou=Mail,o=Companyou=a,ou=Mail,o=Company ou=b,ou=Mail,o=Companyou=b,ou=Mail,o=Company ou=c,ou=Mail,o=Companyou=c,ou=Mail,o=Company
Mirror ModeMirror Mode
MasterMaster
Delta-SyncReplDelta-SyncRepl N-Way MultimasterN-Way Multimaster
ou=a,ou=Mail,o=Companyou=a,ou=Mail,o=Companyou=b,ou=Mail,o=Companyou=b,ou=Mail,o=Companyou=c,ou=Mail,o=Companyou=c,ou=Mail,o=Company
back-metaback-meta
slapo-pcacheslapo-pcache
ClientClient ClientClient
*Permite Load balancer**Permite Load balancer*
VRRP/HeartBeat/CarpVRRP/HeartBeat/Carp
Obrigado!Obrigado!
Leandro Mendes: Leandro Mendes: leandro.mendes at locaweb.com.brleandro.mendes at locaweb.com.brGmail: Gmail: theflockers at gmail.comtheflockers at gmail.com
Twitter: Twitter: @theflockers@theflockers
referências:referências: www.openldap.orgwww.openldap.org