Apache HTTP Server ha un modulo che ci permette di bilanciare il carico. Vediamo come si usa.
Introduzione
Apache HTTP Server ha diversi moduli con cui puoi fare molte cose, come sovrascrivere l’URL, usare la sicurezza SSL o bilanciare il carico tra più macchine. Il bilanciamento del carico consiste nel fatto che utilizziamo un unico indirizzo URL e internamente il traffico viene reindirizzato a macchine diverse che contengono ciascuna la stessa pagina Web.
Nota: in questo esempio utilizzeremo due pagine Web diverse solo come dimostrazione del bilanciamento.
Requisiti precedenti
È necessario:
- Avere un Apache HTTP Server installato e funzionante.
- Avere più sedi con la stessa pagina Web.
Informazioni sulle posizioni: potrebbero essere macchine indipendenti, ognuna con il proprio URL. Nel nostro caso, avremo due pagine Web situate nelle cartelle:
/var/www/html/webpage-1/index.html
e:
/var/www/html/webpage-2/index.html
È importante che in questi file il contenuto sia diverso, perché altrimenti non potremo apprezzarne il bilanciamento.
Esempio di file:
webpage-1/index.html
<html>
<head>
<title>First Web page</title>
</head>
<body>
<h1>This is the first Web page.</h2>
</body>
</html>
webpage-2/index.html
<html>
<head>
<title>Second Web page</title>
</head>
<body>
<h1>This is the second Web page.</h2>
</body>
</html>
Installazione
Il modulo di bilanciamento si chiama “proxy_balancer” e per installarlo devi inserire questi comandi:
a2enmod proxy
a2enmod proxy_http
a2enmod lbmethod_bytraffic
a2enmod proxy_balancer
Come possiamo vedere, è necessario installare altri moduli in precedenza.
Configurazione
Come regola generale, quasi tutti configurano Apache nel seguente file:
/etc/apache2/apache2.conf
Personalmente, io preferisco configurare le cose separatamente perché ci sono meno distrazioni. Per configurare i moduli vengono utilizzati i file specifici, che si trovano nella cartella:
/etc/apache2/mods-enabled
Modifichiamo il file
/etc/apache2/mods-enabled/proxy_balancer.conf
e lo lasciamo così:
<IfModule mod_proxy_balancer.c>
<Proxy "balancer://myset">
BalancerMember "http://localhost/webpage-1/index.html"
BalancerMember "http://localhost/webpage-2/index.html"
Order deny,allow
Allow from all
ProxySet lbmethod=byrequests
</Proxy>
ProxyPreserveHost On
<Location "/">
ProxyPass "balancer://myset/"
ProxyPassReverse "balancer://myset/"
</Location>
</IfModule>
vim: syntax=apache ts=4 sw=4 sts=4 sr noet
In questo modo:
- BalanceMember indica le posizioni su cui bilanciare.
- ProxySet lbmethod indica, in questo caso, che ogni richiesta deve essere effettuata in una posizione diversa.
- Location “/” indica che quando carichiamo la pagina http: // localhost / verrà eseguito il bilanciamento.
Test
Riavviamo il server in modo che legga la nuova configurazione con:
service apache2 restart
Carichiamo la pagina iniziale del nostro server HTTP Apache:
http://localhost/
E vedremo che ogni volta che ricarichiamo la pagina il contenuto della pagina cambia.
So, what do you think ?