Ezra Zygmuntowicz wrote:
> Hey Simon-
> 
>       I don't have any whitepapers about our architecture currently  
> available. But the 50,000 ft view is like this:
> 
> Http request from client ->  LVS redundant load balancers -> Nginx ->  
> mongrel_cluster.
> 
>       The nginx and mongrel clusters run on the same Xen VM. with multiple  
> VM's behind the LVS load balancers.

Cool, good to know. This setup would be a bit overkill to me, but good 
to know how you set things up and how they work.

>       You are correct that nginx does not support kerberos so you will need  
> to keep apache. Haproxy is probably a good solution for you in this  
> case.

All right. I've set up apache as reverse-/proxy serving haproxy 
balancing the mongrels.
Just to help someone who would like to go down the same road, this is my 
apache site config:

<Virtualhost *:80>
   ServerName whatever
   DocumentRoot /home/myhome/MyHome/public/


   ProxyPass /images !
   ProxyPass /stylesheets !
   ProxyPass /javascripts !

   Alias /images /home/myhome/MyHome/public/images
   Alias /stylesheets /home/myhome/MyHome/public/stylesheets
   Alias /javascripts /home/myhome/MyHome/public/javascripts

   ProxyPass / http://127.0.0.1:8000/
   ProxyPassReverse / http://127.0.0.1:8000
   ProxyPreserveHost on

   <Directory /home/myhome/MyHome/public>
      Options ExecCGI FollowSymLinks
      AllowOverride all
      Order allow,deny
      Allow from all
   </Directory>
</Virtualhost>

and my haproxy.cfg file (took it from rubyworks):

global
web server
   maxconn 500
socket, therefore
   log   127.0.0.1       local0
   user nobody
   group nogroup
defaults
   log global
   mode http
   balance roundrobin
   maxconn 500
   option httplog
   option abortonclose
   retries 3
   redispatch
   clitimeout 120000
   contimeout 120000
   srvtimeout 120000
listen rails :8000
   server rails-1 localhost:8001 maxconn 1 check
   server rails-2 localhost:8002 maxconn 1 check
   server rails-3 localhost:8003 maxconn 1 check


to test I set the clitimeout, contimeout and srvtimeout to high numbers, 
so I can see how long actions/requests get handled.
The "maxconn 1" parameter does exactly what it says (one request per 
mongrel).
I have to test this setup a bit more, and see what haproxy does if a 
mongrel goes down or is disabled.

Thank you all for your feedback.

Simon
_______________________________________________
Mongrel-users mailing list
Mongrel-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/mongrel-users

Reply via email to