Currently, I have Apache2 as my frontend and Mongrel as the rails application server. All request comes into apache but requests for the Rails app are proxied ( mod_proxy ) to an instance of the Mongrel web server running on a different port. Just want to know if this is the best practice in terms of robustness, scalability and security. Thanks Henry! -- http://www.addhen.org/blog --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Hey Henry - On 9-Jan-08, at 9:04 PM, Henry Addo wrote:> Currently, I have Apache2 as my frontend and Mongrel as the rails > application server. > All request comes into apache but requests for the Rails app are > proxied ( mod_proxy ) > to an instance of the Mongrel web server running on a different > port. Just want to know > if this is the best practice in terms of robustness, scalability > and security. Thanks > > Henry! > > -- > http://www.addhen.org/blogwhen you say mod_proxy, did you mean mod_proxy_balancer ? If so, one of the downside of this solution is that mod_proxy_balancer won''t skip over busy instances - but will wait for it to be free. yuck. For this reason, and the heaviness of apache, we''ve switched to a combo of nginx and haproxy. haproxy is so damn light without the previous problem. It can also do some proxying avail in hardware balancers. Ezra (where did I read that?) mentioned that nginx was getting a balancer itself - not sure if that''s been addressed Some of the best minds in rails deployment are on a separate list - you might ask there. http://groups.google.com/group/rubyonrails-deployment/ Jodi --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Nginx does have a balancer, here''s a sample nginx install and .conf for ya (ubuntu install apt-get install -y nginx cd /etc/nginx mv nginx.conf nginx.conf.orig user www-data www-data; worker_processes 6; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main ''$remote_addr - $remote_user [$time_local] '' ''"$request" $status $body_bytes_sent "$http_referer" '' ''"$http_user_agent" "$http_x_forwarded_for"''; access_log /var/log/nginx_access.log main; error_log /var/log/nginx_error.log debug; sendfile on; tcp_nopush on; tcp_nodelay off; gzip on; gzip_http_version 1.0; gzip_comp_level 2; gzip_proxied any; gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript; upstream mongrel { server 127.0.0.1:8000; server 127.0.0.1:8001; server 127.0.0.1:8002; } server { listen 80; client_max_body_size 50M; # server_name www.[servername].com [servername].com; root /data/www/current/public; access_log /var/log/nginx.servername.access.log main; if (-f $document_root/system/maintenance.html) { rewrite ^(.*)$ /system/maintenance.html last; break; } location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect false; proxy_max_temp_file_size 0; if (-f $request_filename) { break; } if (-f $request_filename/index.html) { rewrite (.*) $1/index.html break; } if (-f $request_filename.html) { rewrite (.*) $1.html break; } if (!-f $request_filename) { proxy_pass http://mongrel; break; } } error_page 500 502 503 504 /500.html; location = /500.html { root /data/www/current/public; } } } /etc/init.d/nginx reload this works great for us. On Jan 10, 2:18 am, Jodi Showers <j...-BOB1p6JRLoAV+D8aMU/kSg@public.gmane.org> wrote:> Hey Henry - > > On 9-Jan-08, at 9:04 PM, Henry Addo wrote: > > > Currently, I have Apache2 as my frontend and Mongrel as the rails > > application server. > > All request comes into apache but requests for the Rails app are > > proxied ( mod_proxy ) > > to an instance of the Mongrel web server running on a different > > port. Just want to know > > if this is the best practice in terms of robustness, scalability > > and security. Thanks > > > Henry! > > > -- > >http://www.addhen.org/blog > > when you say mod_proxy, did you mean mod_proxy_balancer ? > > If so, one of the downside of this solution is that > mod_proxy_balancer won''t skip over busy instances - but will wait for > it to be free. yuck. > > For this reason, and the heaviness of apache, we''ve switched to a > combo of nginx and haproxy. haproxy is so damn light without the > previous problem. It can also do some proxying avail in hardware > balancers. > > Ezra (where did I read that?) mentioned that nginx was getting a > balancer itself - not sure if that''s been addressed > > Some of the best minds in rails deployment are on a separate list - > you might ask there. > > http://groups.google.com/group/rubyonrails-deployment/ > > Jodi--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I believe Jodi was referring to a fair balancer, not a round-robin one. Nginx is testing a fair balancer which will skip over busy backends but I don''t think there''s a stable build of it. http://brainspl.at/articles/2007/11/09/a-fair-proxy-balancer-for-nginx-and-mongrel --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Ah I see, I had read the brainspl.at article before but hadn''t noted that it was not in the stable version of nginx. You can get the module here http://wiki.codemongers.com/NginxHttpUpstreamFairModule?highlight=%28fair%29 Going back to Henry''s original question, I have several websites running on Apache+Monrgel_cluster+mod_proxy_balancer and they are perfectly fine, including one receiving several thousands of hits a day. We''re moving most new deploys across to the nginx config as above though, Apache is very heavy to use just as a balancer manager. On Jan 10, 2:51 pm, "Brian Hogan" <bpho...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I believe Jodi was referring to a fair balancer, not a round-robin one. > Nginx is testing a fair balancer which will skip over busy backends but I > don''t think there''s a stable build of it. > > http://brainspl.at/articles/2007/11/09/a-fair-proxy-balancer-for-ngin...--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---