Una delle problematiche con cui un amministratore di sistema viene costretto a confrontarsi su ambienti web server è la necessità di alleggerire il carico sul demone,in presenza di una crescita delle visite e del traffico servito.
I consumi di memoria tendono a crescere esponenzialmente quando il demone è sottoposto ad una quantità di richieste e di utenti concorrenti molto alta.
Le contromisure che si possono adottare in situazioni di questo tipo possono essere quella di ottimizzare il funzionamento del sistema o di utilizzare un software di caching.Si parte dall’ottimizzazione delle risorse con interventi mirati sul demone (Apache nella maggior parte dei casi).Qualora l’ottimizzazione non consenta di ottenere risultati apprezzabili per via dei margini risicati di guadagno in termini di memoria,si può implementare un sistema di caching e di accelerazione dei contenuti.
Varnish è un acceleratore web e fornisce la funzione di caching dei contenuti ponendosi in ascolto sulla porta 80 come fronted per Apache.Può essere utilizzato inoltre come load balancer e dispone di una sintassi abbastanza chiara che permette di sviluppare configurazioni avanzate in base alle proprie esigenze.
Per l’installazione su CentOS e Red Hat,Varnish è disponibile nei repository EPEL,purtroppo però con la versione 2.0.6 che presenta differenze di sintassi rispetto all’ultima versione disponibile motivo per cui abbiamo preferito la compilazione da sorgente.
Installiamo subversion e tutta quella serie di tool e librerie necessarie per la compilazione di Varnish :
# yum install subversion automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig -y
Preleviamo il codice :
# svn co http://varnish-cache.org/svn/trunk
e posizioniamoci nella directory che contiene i sorgenti :
# cd trunk/
# cd varnish-cache/
avviamo a questo punto la configurazione e la compilazione di Varnish e come ultimo passaggio l’installazione :
# sh autogen.sh
# sh configure # make # make install
Prima di proseguire con la configurazione di Varnish,modifichiamo la porta di ascolto di Apache,che dovrà essere portato in bind sulla porta 8080 :
# vim /etc/httpd/conf/httpd.conf Listen 8080
Il cambio di porta dovrà essere eseguito anche per tutti gli eventuali virtualhost,se presenti sul sistema.
Riavviamo Apache per rendere effettiva la modifica :
# /sbin/service httpd restart
Apriamo il file di configurazione di Varnish,situato in /usrl/local/etc e decommentiamo le righe relative al backend.Il backend non è altro che Apache,in ascolto sulla porta 8080,verso cui verranno inoltrate tutte le richieste,dopo essere state poste in cache da Varnish.
# vim /usr/local/etc/varnish/default.vcl
backend default {
.host = "127.0.0.1";
.port = "8080";
}
Avviamo ora Varnish da riga di comando,indicando il file di configurazione da utilizzare con l’opzione -f, la quantità di memoria da allocare per la cache,nell’esempio 200MB ed infine l’indirizzo su cui porre in ascolto l’interfaccia di amministrazione di Varnish,accessibile con telnet.
# varnishd -f /usr/local/etc/varnish/default.vcl \ > -s malloc,200MB \ > -T 127.0.0.1:2000
Dopo l’avvio,Varnish resterà in ascolto sulla porta 80,catturando e ponendo in cache tutte le eventuali richieste dirette ad Apache.

Ottima la guida, una domanda però, nel caso dovessi riavviare o fermare l’httpd devo successivamente far ripartire anche Varnish?
Ciao Alessio,il demone httpd ed il demone varnishd sono due istanze separate,e il riavvio di uno non incide sull’altro.Avrai bisogno di riavviare varnishd nel caso di modifiche al file di configurazione.