:::: MENU ::::

Apache HTTP Server: Load Balancer

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:

  1. BalanceMember indica le posizioni su cui bilanciare.
  2. ProxySet lbmethod indica, in questo caso, che ogni richiesta deve essere effettuata in una posizione diversa.
  3. 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 ?