Varnish: il web accelerator per il tuo server.

Varnish e un web accelerator utilizzato per siti web dinamici con funzionalita di caching. Sono stati proprio I suoi creatori a definirlo in questo modo, in quanto il suo scopo principale e quello di velocizzare il front end di un sito web, ottimizzando l'accesso ad esso senza andare a mettere mano sul codice : semplicemente l'utilizzatore di questo prodotto open source non e costretto a modifcare il codice dellla sua applicazione.

Varnish, l’installazione e la configurazione

Una volta introdotto l’argomento possiamo a vedere più nel dettaglio il software. Innanzitutto dobbiamo installare il software. Utilizzando l’ultima versione di Ubuntu (la 12.04) è possibile effettuare l’operazione con un semplice comando:

            sudo apt-get install varnish

In alternativa è possibile compilare il codice sorgente reperibile alla pagina

            https://www.varnish-cache.org/releases/varnish-cache-3.0.1

Una volta installato, andiamo a vedere 2 file di configurazione che ci interessano: il primo ha full path name /etc/default/varnish e contiene, tra le altre, le opzioni con cui viene lanciato varnish. Questo è specificato nell’attributo DAEMON_OPTS, ad esempio

DAEMON_OPTS=      “-a :6081

                        -T localhost:6082

                        -u varnish -g varnish

                        -S /etc/varnish/secret

                        -s malloc,1G”

indica che Varnish sarà in ascolto sulla porta 6081, il management è sulla 6082, e utiliza una cache di 1GB.

Il secondo file di configurazione è /etc/varnish/default.vcl: esso contiene la definizione dei server di backend e le varie subroutines. Di default è definito un unico server di backend:

backend default {

   .host = “localhost”;

   .port = “8080”;

}

che rappresenta un server locale in ascolto sulla porta 8080. Nel caso volessimo definirne più di uno potremmo tranquillamente farlo, ad esempio:

backend web1 { .host = “192.168.0.234”;  .port = 8080; .probe = { .url = “/status.htm”; .interval = 5s; .timeout = 1s; .window = 5;.threshold = 3; }}

backend web2 { .host = “192.168.0.235”; .port = 8080; .probe = { .url = “/status.htm”; .interval = 5s; .timeout = 1s; .window = 5;.threshold = 3; }}

In questo caso abbiamo anche aggiunto l’opzione di probing dell’applicazione.In particolare varnish invierà una richiesta all’URL status.php dei server ogni 5 secondi(interval). Il timeout associato alla pagina è di 1 secondo e per considerare il server di backend attivo almeno almeno 2 (window-threshold) delle ultime 5 richieste(window) devono essere andate a buon fine.