open ldap linuxcon_working

19
Arquitetura, disponibilidade e Arquitetura, disponibilidade e escalabilidade de serviço de escalabilidade de serviço de diretório diretório Open Open LDAP LDAP http://www.openldap.org

Upload: leandro-mendes

Post on 08-Jul-2015

1.731 views

Category:

Documents


2 download

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;

OpenOpenLDAPLDAPhttp://www.openldap.org

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;

Arquitetura, disponibilidade e Arquitetura, disponibilidade e escalabilidadeescalabilidade

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

Dá pra escalar o diretório?Dá pra escalar o diretório?

Dá pra escalar o diretório?Dá pra escalar o diretório?

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.

E como ficaria juntanto tudo?E como ficaria juntanto tudo?

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