Buongiorno e grazie per l’acquisto.
Oggi configureremo un cluster di server WEB affinchè sinao in grado di bilanciare le richieste tra i componenti del cluster e garantire un certo livello di alta affidabilità.
Partiamo con gli ingredienti. Servono 3 dicasi tre server: due (presumibilmente potenti) in cluster per erogare il sito web vero e proprio ed un server (presumibilmente più piccolo) per effettuare il balancing delle richieste. Per dirla tutta sui due web server può girarci un qualsiasi server web a partire da Apache 2.0 in poi mentre sul server di balancing avremo bisogno di Apache 2.2 compilato con il supporto per il mod_proxy e mod_proxy_balancer.
Per chi non lo sapesse l’unico sistema operativo degno di essere usato è Freebsd, per cui questo how-to si appoggerà ad esso.
Per il nostro esempio definiamo i due web server come www1 (www1.site.com) e www2 (www2.site.com) mentre la macchina balancer è identificata come www (www-fw.site.com).
Innanzitutto andiamo su www, dentro /usr/ports/www/apache22 e spariamoci un bellissimo make options, all’interno del quale attiveremo tutti i mod_proxy, seguito da un make install che frullerà per parecchi minuti.
cd /usr/ports/www/apache22
make options
make install
A questo punto modifichiamo l’httpd.conf dentro /usr/local/etc/apache22 aggiungendo le seguenti righe:
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/ stickysession=BALANCEID nofailover=On
ProxyPassReverse / http://www1.site.com/
ProxyPassReverse / http://www2.site.com/
<Proxy balancer://mycluster>
BalancerMember http://www1.site.com route=www1
BalancerMember http://www2.site.com route=www2
ProxySet lbmethod=byrequests
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Order deny,allow
Allow from all
</Location>
A questo punto dentro /etc/rc.conf io suggerisco di attivare lo startup di apache22 al boot e di htcacheclean che fa la pulizia della directory di cache del proxy:
apache22_enable=”YES”
htcacheclean_enable=”YES”
Ok, il balancer è pronto, ora dobbiamo semplicemente istruire i web server affinché in fase di erogazione dei contenuti venga specificato il COOKIE che permette al balancer di riassociare un client al suo server. Dentro l’httpd.conf di ognuno dei due server web incolliamo (nel virtual host che ci interessa o nella location) il seguente codice:
RewriteEngine On
RewriteRule .* – [CO=BALANCEID:balancer.www1:site.com:1440:/]
Attenzione ad impostare correttamente il domain del cookie, il lifetime ed il path. E soprattutto attenti ad aver attivato il mod_rewrite prima di attivare la rewriteengine. E soprattutto sul secondo server cambiate www1 in www2…
Ok, restartate tutti e tre gli apache… dovrebbe funzionare.
Buon divertimento.
p.s.:
poi amplio il concetto…