Ambiente Moodle Distribuido para Demandas de Alta Escala

2,543 views

Published on

Uma visão geral e uma proposta de implementação do ambiente Moodle distribuído, voltado para grandes ambientes, que demandam um grande volume de usuários e recursos.

Apresentação realizada durante a terceira edição do MoodleMoot Brazil, em 2009, na Universidade Presbiteriana Mackenzie.

Published in: Education
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,543
On SlideShare
0
From Embeds
0
Number of Embeds
64
Actions
Shares
0
Downloads
0
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Ambiente Moodle Distribuido para Demandas de Alta Escala

  1. 1. Universidade Presbiteriana Mackenzie<br />Ambiente Moodle Distribuído para Demandas de Alta Escala<br />Daniel Arndt Alves<br />José Augusto Pereira Brito<br />Divisão de Tecnologia da Informação <br />São Paulo, 14 de Novembro de 2009<br />
  2. 2. Tópicos Abordados<br />Introdução<br />Opções de Escalabilidade<br />Ajustes de Performance<br />Configurações de Hardware<br />Configurações de Sistema Operacional<br />Configurações de Web Server<br />Configurações do Banco de Dados<br />Configurações do Moodle<br />
  3. 3. Tópicos Abordados<br />Modelos de Clusterização<br />Divisão de Serviços<br />Cluster de Apache<br />Cluster de MySQL<br />Cluster de NFS<br />
  4. 4. Introdução<br />?<br />
  5. 5. Opções de Escalabilidade<br />Análise das opções de escalabilidade:<br />
  6. 6. Ajustes de Performance<br />Determinar o índice de Benchmark do Servidor<br />
  7. 7. Hardware<br />Regra Geral “RuleofThumb”:<br />Usuários Concorrentes (interagindo): 50 x RAM (GB)<br />Usuários Concorrentes (navegando): 5 * Usuários Concorrentes (interagindo)<br />Exemplo:<br />Universidade c/ 500 computadores, 100 alunos interagindo simultaneamente.<br />Servidor: 2 GB RAM<br />
  8. 8. Sistema Operacional<br />Exemplo: Servidor otimizado para aplicações de rede (Windows Server Core)<br />Exemplo: Otimização de acesso à disco:hdparm –m16 –d1(leitura/gravação em múltiplos setores + DMA)<br />
  9. 9. Web Server<br />
  10. 10. Web Server<br />Emprego de Aceleradores de PHP:<br />APC - http://pecl.php.net/apc<br />PHPA - http://www.php-accelerator.co.uk/<br />Xcache - http://trac.lighttpd.net/xcache/<br />eAccelerator - http://eaccelerator.net/<br /><ul><li>Ajuste deCache:
  11. 11. Gravar as páginas em cache em uma área de TMPFS/RAMDrive:
  12. 12. Leitura/Gravação mais rápida
  13. 13. Conteúdo é perdido ao reinicializar o servidor</li></li></ul><li>Web Server<br />Modo de Execução:<br />Apache<br />IIS ISAPI module<br /><ul><li>Ajuste de consumo de Memória:
  14. 14. memory_limit
  15. 15. 16 MB – Moodle < 1.7
  16. 16. 40 MB – Moodle 1.7 – 1.9</li></li></ul><li>Web Server<br /><ul><li>Apache no Windows:
  17. 17. Apache Lounge - http://www.apachelounge.com/
  18. 18. Variável MaxClients:
  19. 19. MaxClients = Memória Total * 80% / Memória p/ processo Apache
  20. 20. Memória p/ processo Apache = 10 MB (regra geral)
  21. 21. Medição:
  22. 22. ps -ylChttpd --sort:rss
  23. 23. Se for necessário um valor acima de 256, verifique também a diretiva ServerLimit.
  24. 24. Reduza o número de módulos ao mínimo necessário</li></li></ul><li>Web Server<br /><ul><li>Utilize a última versão do Apache disponível
  25. 25. Em ambiente Linux/Unix, ajuste o parâmetro MaxRequestsPerChild para valores abaixo de 20-30
  26. 26. Para servidores carregados, ajuste o parâmetro KeepAlive para Off (se as páginas não tiverem muitas imagens/recursos), ou ajuste o parâmetro KeepAliveTimeout para valores entre 2 e 5.
  27. 27. Outra alternativa é configurar um Proxy Reverso, como uma forma de cache para as páginas imagens estáticas. Desta forma, pode-se ativar novamente o KeepAlive no servidor Apache.</li></li></ul><li>Web Server<br /><ul><li>Se o servidor não emprega arquivos .htaccess, desabilite o parâmetroAllowOverride
  28. 28. Ajuste o parâmetro DirectoryIndex para diminuir a negociação de conteúdo entre o cliente-servidor:
  29. 29. DirectoryIndexindex.php index.html index.htm
  30. 30. No servidor de produção, desabilite o parâmetroExtendedStatus, bem como os seguintes módulos:
  31. 31. mod_info
  32. 32. mod_status</li></li></ul><li>Web Server<br /><ul><li>Instale e habilite o módulomod_expires, configurando da seguinte forma:</li></ul><IfModulemod_expires.c><br />ExpiresActiveOn<br />ExpiresDefault "accessplus 1 seconds"<br />ExpiresByTypetext/html "accessplus 1 seconds"<br />ExpiresByTypeimage/gif "accessplus 1 week"<br />ExpiresByTypeimage/jpeg "accessplus 1 week"<br />ExpiresByTypeimage/png "accessplus 1 week"<br />ExpiresByTypetext/css "accessplus 1 week"<br />ExpiresByTypetext/javascript "accessplus 1 week"<br />ExpiresByType application/x-javascript "accessplus 1 week"<br />ExpiresByTypetext/xml "accessplus 1 seconds"<br /></IfModule><br />
  33. 33. Banco de Dados<br />Para visualizar os valores atuais, utilize os seguintes comandos:<br />SHOW STATUS;<br />SHOW VARIABLES;<br /><ul><li>Habilite o parâmetro query_cache:
  34. 34. query_cache_type = 1
  35. 35. query_cache_size = 36MB
  36. 36. query_cache_min_res_unit = 2K
  37. 37. Verifique o parâmetro table_cache:
  38. 38. table_cache_type = 512</li></li></ul><li>Banco de Dados<br /><ul><li>Verifique o parâmetro key_buffer:
  39. 39. key_buffer_size = 32M
  40. 40. Otimize as tabelas semanalmente, e antes de atualizar a versão do Moodle
  41. 41. Em grandes ambientes converta as tabelas para o formato InnoDB, ao invés do MyISAM, utilizado por padrão pelo Moodle</li></li></ul><li>Moodle<br />Configure o tipo de acelerador empregado no servidor PHP:<br />Site Admin => Server => Performance => Cachetype<br /><ul><li>Habilite o cache de registros:
  42. 42. Site Admin => Server => Performance => Record cache = True
  43. 43. Habilite o cache de linguagem</li></li></ul><li>Moodle<br />Utilize os comandos nativos do sistema:<br />Zip<br />Unzip<br />Du<br /><ul><li>Verifique a quantidade de filtros ativos
  44. 44. Habilite o cache de textos
  45. 45. Verifique o Anti-Vírus rodando no servidor</li></li></ul><li>Divisão de Serviços<br />
  46. 46. Modelo de Cluster<br />
  47. 47. Modelo de Cluster<br />Exemplo: Ultra MonkeyLoadBalancer:<br />http://www.howtoforge.com/high_availability_loadbalanced_apache_cluster<br />Habilitar o Módulo ip_vs (IP Virtual Server) no LoadBalancer<br />Instalar o Ultra Monkey no LoadBalancer<br /><ul><li>Habilitar o encaminhamento de pacotes no LoadBalancer
  48. 48. Habilitar o Heartbeat e o Idirectord
  49. 49. Configurar os nós Apache</li></li></ul><li>Modelo de Cluster<br />Exemplo: Cluster de MySQL<br />http://www.howtoforge.com/loadbalanced_mysql_cluster_debian<br />Configurar o MySQL Cluster Management Server<br />Configurar os MySQL Cluster Nodes (StorageNodes)<br />Configurar o LoadBalancer<br />Instalar o Ultra Monkey<br />Configurar o heartbeat<br />Configurar o ldirectord<br />Preparar os MySQL Cluster Nodes para LoadBalancing<br />
  50. 50. Modelo de Cluster<br />Exemplo: Cluster de NFS<br />http://www.howtoforge.com/high_availability_nfs_drbd_heartbeat<br />Instalar os servidores NFS<br />Sincronizar os relógios dos servidores<br />Instalar DRBD<br />Configurar o DRBD<br />Instalar e Configurar o heartbeat<br />
  51. 51.
  52. 52.
  53. 53. Obrigado<br />Daniel Arndt Alvesdaniel.alves@mackenzie.br<br />José Augusto Pereira Britojoseaugusto.brito@mackenzie.br<br />

×