Open ldap linuxcon_working

1,943 views
1,851 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,943
On SlideShare
0
From Embeds
0
Number of Embeds
571
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Open ldap linuxcon_working

  1. 1. Arquitetura, disponibilidade e escalabilidade de serviço de diretório Open LDAP http://www.openldap.org
  2. 2. X.500 (ISO/IEC 9594) <ul><li>É um conjunto de padrões que define um serviço de diretório;
  3. 3. Inclui padrões de modelo de dados e protocolos de acesso;
  4. 4. Entre os padrões espeficiados pelo X.500, estão o X.501(modelo) e o X.509 (certificados);
  5. 5. Inclui os protocolos: </li><ul><li>DAP, DSP, DISP, DOP (OSI);
  6. 6. LDAP (TCP/IP); </li></ul></ul>
  7. 7. LDAP <ul><li>Lightweight Directory Access Protocol;
  8. 8. Surgiu com o advento da internet, como forma de trafegar informações do diretório via TCP/IP;
  9. 9. É apenas um protocolo na camada de aplicação;
  10. 10. Está na versão número 3; </li></ul>
  11. 11. Open LDAP http://www.openldap.org
  12. 12. OpenLDAP <ul><li>É uma implementação livre do padrão X.500;
  13. 13. Incluí LDAPv2 (depreciado) e LDAPv3;
  14. 14. Suporta SSL, TLS, SASL, Kerberos...;
  15. 15. Access Control Lists;
  16. 16. Internacionalização;
  17. 17. Diversos backends (back-bdb, back-hdb, back-sql...);
  18. 18. Replicação: </li><ul><li>Master/Slave;
  19. 19. Multimaster; </li></ul></ul>
  20. 20. Arquitetura, disponibilidade e escalabilidade
  21. 21. Redundância <ul><li>O OpenLDAP fornece alguns tipos de replicação, a seguir: </li><ul><li>N-Way Multi-Master: </li><ul><li>Dois ou mais master/escrita simultânea;
  22. 22. Failover automátivo; </li></ul><li>Mirror Mode: </li><ul><li>Dois master/escrita única;
  23. 23. Heartbeat para failover; </li></ul><li>Delta syncrepl: </li><ul><li>Changelog database; </li></ul><li>Syncrepl Proxy: </li><ul><li>Replace do Slurpd. </li></ul></ul></ul>
  24. 24. <ul><li>Como em qualquer arquitetura, o número mínimo de servidores é 2;
  25. 25. Diretórios são melhores para a leitura do que para a escrita;
  26. 26. Se sua necessidade de escrita é muito grande, prefira um RDBMS;
  27. 27. Diretórios razos tendem a gerar problemas de lock;
  28. 28. Sharding é sempre uma boa opção; </li></ul>Regras básicas
  29. 29. Sharding <ul><li>O sharding pode ser feito por letras ou números;
  30. 30. Usar Hashes com o MD5 ou SHA1 é uma boa idéia!
  31. 31. O número de galhos ideal para o sharding depende do tamanho do seu ambiente;
  32. 32. A divisão desses galhos ajuda a diminuir problemas de lock;
  33. 33. Mas para ficar melhor ainda, faça tuning no seu DB_CONFIG (lockers e cache); </li></ul>
  34. 34. o = Company |_ou = Mail |_ou = a | |_dc = aaa.com.br | |_ou = b |_dc = bbb.com.br <ul><li>Replicação Master-Master ou Master/Slave;
  35. 35. Sharding por letra;
  36. 36. Cenário para aplicações de pequeno e médio porte;
  37. 37. Aplicações: </li><ul><li>Catálogo de endereços;
  38. 38. Agenda;
  39. 39. Autenticação;
  40. 40. Lookup de e-mails; </li></ul></ul>Mirror Mode ou Delta Syncrepl Master Master/Slave
  41. 41. Dá pra escalar o diretório?
  42. 42. Dá pra escalar o diretório? Sim!!
  43. 43. Referrals <ul><li>Utilizar referrals é a melhor forma de escalar diretórios;
  44. 44. Se o diretório já está “shardeado”, mover um galho de lugar torna-se trivial;
  45. 45. Depende do client “traduzir” uma entrada com referência para outro lugar;
  46. 46. O back-meta (slapo-meta) pode te ajudar a resolver isso; </li></ul>
  47. 47. client dn: ou=b, o=Company objectClass: referral ou: b ref: ldap://b.com.br/ou=b,o=Company client Entrada com referral vs back-meta(slapo-meta) ldap://a.com.br ldap://b.com.br ldap://a.com.br ldap://b.com.br slapo meta/pcache ou=a ou=a ou=b ou=b cache ou=a ou=b
  48. 48. back-meta(slapo-meta) <ul><li>É uma melhoria (grande) do back-ldap;
  49. 49. Suporta Rewriting;
  50. 50. POSIX regex extended;
  51. 51. Sintaxe similar ao mod_rewrite;
  52. 52. Para o client todas entradas pertencem à um mesmo DIT (directory information tree); </li></ul>
  53. 53. # slapd.conf (back-meta) database meta suffix “ou=Mail,o=Company” uri “ldap://a.com.br/ou=a,ou=Mail,o=Company uri “ldap://b.com.br/ou=b,ou=Mail,o=Company uri “ldap://c.com.br/ou=c,ou=Mail,o=Company # rewrite rewriteRule '.*ou=([a-z]),.*' 'ldap://%{1}.com.br/%{1}.com.br' ':@' Configuração manual Utilizando rewrite Uma boa ideia é utilizar o slapo-pcache para não efetuar consultas excessivas. O pcache cria uma base local guardando somente os resultados das consultas.
  54. 54. E como ficaria juntanto tudo?
  55. 55. ldap://a.com.br ldap://b.com.br ldap://c.com.br ou=a,ou=Mail,o=Company ou=b,ou=Mail,o=Company ou=c,ou=Mail,o=Company Mirror Mode Delta-SyncRepl N-Way Multimaster ou=a,ou=Mail,o=Company ou=b,ou=Mail,o=Company ou=c,ou=Mail,o=Company back-meta slapo-pcache Client Client *Permite Load balancer* VRRP/HeartBeat/Carp Master Master Master Slave Master Master proxy proxy cache cache Master
  56. 56. Obrigado! Leandro Mendes: leandro.mendes at locaweb.com.br Gmail: theflockers at gmail.com Twitter: @theflockers referências: www.openldap.org

×