Serving Up Your Rails App On A Mongrel Cluster

2,537 views

Published on

Andy Lo-A-Foe's slide's of his presentation at the RubyenRails 2007 conf in Amsterdam.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,537
On SlideShare
0
From Embeds
0
Number of Embeds
49
Actions
Shares
0
Downloads
137
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Serving Up Your Rails App On A Mongrel Cluster

  1. 1. Serving up your Rails app on a Mongrel cluster Andy Lo-A-Foe andy@loafoe.nl
  2. 2. $ whoami
  3. 3. $ whoami • Brood: Web ontwikkelaar / Linux
  4. 4. $ whoami • Brood: Web ontwikkelaar / Linux • Deed: PHP / Java
  5. 5. $ whoami • Brood: Web ontwikkelaar / Linux • Deed: PHP / Java • Doet: Rails / Architectuur / etc..
  6. 6. $ whoami • Brood: Web ontwikkelaar / Linux • Deed: PHP / Java • Doet: Rails / Architectuur / etc.. • Bij: IndependentIP
  7. 7. Wat is Mongrel?
  8. 8. Wat is Mongrel? • http://mongrel.rubyforge.org
  9. 9. Wat is Mongrel? • http://mongrel.rubyforge.org • Mongrel is a fast HTTP library and server for Ruby that is intended for hosting Ruby web applications of any kind using plain HTTP rather than FastCGI or SCGI.
  10. 10. Wat is Mongrel? • http://mongrel.rubyforge.org • Mongrel is a fast HTTP library and server for Ruby that is intended for hosting Ruby web applications of any kind using plain HTTP rather than FastCGI or SCGI. • Ontwikkelt door Zed Shaw (http://www.zedshaw.com) en anderen..
  11. 11. Waarom Mongrel? (IMHO)
  12. 12. Waarom Mongrel? (IMHO) • Snelheid? nope
  13. 13. Waarom Mongrel? (IMHO) • Snelheid? nope • FastCGI zuigt? nope
  14. 14. Waarom Mongrel? (IMHO) • Snelheid? nope • FastCGI zuigt? nope • Koelheid? yep!
  15. 15. Waarom Mongrel? (IMHO) • Snelheid? nope • FastCGI zuigt? nope • Koelheid? yep! • Eenvoudig? yep!
  16. 16. Waarom Mongrel? (IMHO) • Snelheid? nope • FastCGI zuigt? nope • Koelheid? yep! • Eenvoudig? yep! • Monitoring? yep!
  17. 17. Installatie
  18. 18. Installatie • Uitgebreide documentatie op het web: http://mongrel.rubyforge.org
  19. 19. Installatie • Uitgebreide documentatie op het web: http://mongrel.rubyforge.org • $ sudo gem install mongrel mongrel_cluster --include-dependencies
  20. 20. Installatie • Uitgebreide documentatie op het web: http://mongrel.rubyforge.org • $ sudo gem install mongrel mongrel_cluster --include-dependencies • $ sudo gem install fastthread
  21. 21. Installatie • Uitgebreide documentatie op het web: http://mongrel.rubyforge.org • $ sudo gem install mongrel mongrel_cluster --include-dependencies • $ sudo gem install fastthread • $ cd rails_app_root
  22. 22. Installatie • Uitgebreide documentatie op het web: http://mongrel.rubyforge.org • $ sudo gem install mongrel mongrel_cluster --include-dependencies • $ sudo gem install fastthread • $ cd rails_app_root • $ mongrel_rails start
  23. 23. Installatie • Uitgebreide documentatie op het web: http://mongrel.rubyforge.org • $ sudo gem install mongrel mongrel_cluster --include-dependencies • $ sudo gem install fastthread • $ cd rails_app_root • $ mongrel_rails start • Profit!
  24. 24. Cluster s/Apache/.../ Lighttpd(1.5.0) Nginx Pound ... Share nothing
  25. 25. Apache config RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f RewriteCond %{SCRIPT_FILENAME} !maintenance.html RewriteRule ^.*$ /system/maintenance.html [L] # Redirect all non-static requests to cluster RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ balancer://filmpjes_cluster% {REQUEST_URI} [P,QSA,L] <Proxy balancer://filmpjes_cluster> BalancerMember http://127.0.0.1:9000 BalancerMember http://127.0.0.1:9001 BalancerMember http://127.0.0.1:9002 BalancerMember http://127.0.0.1:9003 ....... </Proxy>
  26. 26. Performance
  27. 27. Performance • Statische content door Apache (of lighty..)
  28. 28. Performance • Statische content door Apache (of lighty..) • Dynamische content door cluster
  29. 29. Performance • Statische content door Apache (of lighty..) • Dynamische content door cluster • Cache, cache, cache
  30. 30. Caching • Page / Action / Fragment • /dyn/140x104/11126/2.jpg • mapping • controller rendered en schrijft resultaat weg in public/dyn/140x104/111126/2.jpg • serveert via send_file :disposition => true • volgende request via Apache
  31. 31. Monitoring • MONIT!! • http://www.tildeslash.com/monit/
  32. 32. Vragen? • Meer info op http://www.railsguru.com

×