balanceo de carga con apache y mod_proxy
Posted on Thu 14 April 2011 in tools • 1 min read
El uso de mod_proxy de apache tiene muchas utilidades y gracias a su sencillez de configuración, nos puede sacar de muchos apuros.
En este caso lo vamos a usar para balancear la carga sobre unos servidores web en python llamado tornado http://www.tornadoweb.org que sirve un framework en python. Usaremos el llamado proxy inverso
Instalamos mod_proxy si no lo tenemos ya y activamos los modulos proxy, proxy_balancer, proxy_html, lo mejor en poner proxy* para que a2enmod
active lo que necesite
root@lnxport:~# apt-get install libapache2-mod-proxy-html
root@lnxport:~# a2enmod proxy*
Un vez instalado y activado el modulo en apache, necesitamos configurarlo en el archivo apache2.conf dentro de un VirtualHost
ProxyRequests Off
<Proxy balancer://tornadocluster>
DefaultType application/octet-stream
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>
ProxyPass /appname balancer://tornadocluster/appname
ProxyPassReverse /appname balancer://tornadocluster/appname
En esta configuración vamos a usar el proxy sobre unos puertos internos en la maquina, pero se pueden usar direcciones externas indistintamente. Ademas se pueden usar diferentes algoritmos de balanceo, podeis encontrar mas información en la doc del modulo http://httpd.apache.org/docs/2.0/mod/mod_proxy.html
Como es un proxy inverso, o sea que tiene que traducir, tanto la salida como la entrada, se usan las directivas ProxyPass y ProxyPassReverse
Con esta simple configuración podemos hacer ver al usuario que esta navegando por nuestro site, sin saber que por detras, apache esta conectando con otros servidores para presentar los datos necesarios.