[Mongrel] Again: Workaround found for request queuing vs. num_processors, accept/close
Simon Santoro
simon.santoro at gmail.com
Thu Jan 24 04:44:13 EST 2008
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
More information about the Mongrel-users
mailing list