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.

La configurazione, seconda parte

Una volta creati, è possibile definire una policy di load balancing, ad esempio round robin, aggiungendo le seguenti righe al file di configurazione:

director default_director round-robin {
  { .backend = web1; }
  { .backend = web2; }
}

Per fare questo utilizziamo l’opzione director con cui possiamo raggruppare logicamente I server che creiamo. In questo caso abbiamo creato un gruppo logico con policy round robin, ma ne esistono molti altri:

                     random

                     client

                     dns

                     hash

che non spiegheremo nel dettaglio.

Per fare In modo che i documenti non vengano salvati in cache si può utilizzare l’opzione “pass”:

if (req.url ~ “^/status.php$” ||
 req.url ~ “^/update.php$” ||

req.url ~ “^/admin/build/features” ||
req.url ~ “^/info/.*$”) {
            return (pass);
}

Tutte le richieste verso i path indicati non verranno salvate in cache.

Un’altra feature che è possibile utilizzare sono le ACL (Access Control List). Nel caso in cui non volessimo che il contenuto di alcune pagine sia accessibile potremmo fare in questo modo:

1.  Definiamo un ACL contenente gli indirizzi fidati

            acl internal {

            “192.168.0.0”/24;
            }

2.  Nella subroutine vcl_recv andiamo a negare l’accesso ad una data risorsa (private.php)se la richiesta non arriva dagli indirizzi definiti al punto 1, mostrando un errore al client.

            sub vcl_recv {
             …
                        if (req.url ~ “^/private.php$” && !client.ip ~ internal) {
                        error 404 “Page not found
                        }
            }

Infine un’altra importante opportunità che dà Varnish è quella di continuare a servire le richieste dei client anche se I server di backup sono tutti “down”. Infatti è possibile definire sugli oggetti in cache la “grace”, che rappresenta il periodo in cui un oggetto non deve essere refreshato e può essere restituito al client. Questo può essere compiuto scrivendo nel file di configurazione le seguenti righe:

sub vcl_recv {
            set req.grace = 6h;
}

impostando il parametro grace sulla richiesta in ingresso a 6 ore, ad esempio.

In conclusione, Varnish è un tool molto efficiente. Oltre ad aumentare le performance del tuo sito web può anche agire come full backup gestendo al meglio scenari di disaster recovery.