martedì 18 dicembre 2012

Bilanciare il carico su apache - mod_proxy_balancer

Da apache 2.1 è disponibile il modulo mod_proxy_balancer. Ecco alcuni passi da seguire (nell'esempio è stata ipotizzata la document root in /var/www/ ):
 
Attivare i moduli:
a2enmod proxy
a2enmod proxy_balancer
a2enmod proxy_http
a2enmod status

Creiamo la directory:
mkdir /var/www/balancer-manager

Creiamo il file per proteggere le chiamate (La password inserita va poi specificata nel virtualhost)
htpasswd -c /var/.htpasswd admin

Editiamo il file /var/www/balancer-manager/.htaccess:
AuthType Basic
AuthName "Members Only"
AuthUserFile /var/.htpasswd
<limit GET PUT POST>
require valid-user
</limit>

Configurazione di esempio del virtualhost. In rosso valori da editare.
<VirtualHost *:80>
        ServerName www.example.com
        ServerAlias example.com
        DocumentRoot /var/www/
        ProxyRequests Off

        <Proxy *>
          Order deny,allow
          Allow from all
        </Proxy>

        ProxyPass /balancer-manager !
        ProxyPass / balancer://mycluster/ stickysession=BALANCEID nofailover=On
        ProxyPassReverse /PASSWORD 192.168.1.5
        ProxyPassReverse /PASSWORD 192.168.1.6
        <Proxy balancer://mycluster>
          BalancerMember http://192.168.1.5  route=http1
          BalancerMember http://192.168.1.6  route=http2
          ProxySet lbmethod=byrequests
        </Proxy>

        <Location /balancer-manager>
          SetHandler balancer-manager

          Order deny,allow
          Allow from all
        </Location>
</VirtualHost>



Facciamo il restart di apache
/etc/init.d/apache2 restart