Quantcast
Channel: Linux Feed » kloxo
Viewing all articles
Browse latest Browse all 2

Come mettere Varnish davanti al proprio Webserver senza fare alcun cambio.

$
0
0

Varnish è un “Web Accelerator” open source che può essere utilizzato per accelerare il vostro sito web.

E’ possibile memorizzare nella cache alcuni elementi statici, come immagini o JavaScript, ma si può anche usarlo per altri scopi come il bilanciamento del carico o aggiungere un po di sicurezza, in generale, la maggior parte delle persone vogliono provare e testare il loro sito web per vedere se è davvero così incredibile (IMO sì, ma provate voi stessi).

Le guide tradizionali che si trovano in rete vi diranno di spostare il webserver su un’altra porta, forse 81,8080 o far ascoltare solo su localhost, configurare Varnish in ascolto sulla porta 80 e utilizzare il web server come back-end, ovvero il server a cui Varnish inoltrerà le richieste non trovate nella propria cache.

Questa è la configurazione “normale” e funziona benissimo, ma a volte si vuole solo fare un test rapido o forse si sta utilizzando un pannello di controllo, come ad esempio Cpanel, Kloxo o ISPConfig e nella mia esperienza cambiare le porte standard in ascolto di Apache non è una decisione da prendere a cuor leggero usando questi strumenti.

Quindi, in una VPS (con Kloxo) ho usato un approccio diverso: iptables.




Nel mio approccio ho lasciato il webserver (Apache per me) sulla porta 80, quindi nessun cambiamento su questo lato.
Ho configurato Varnish per l’ascolto sulla porta 8080 e impostato come backend Apache sulla porta 80.
Ho fatto partire Varnish e, come previsto, andando sulla porta 8080 ho visto che il sito funziona correttamente (fornito da Apache).

E ora un po’ di “magie” con iptables, tutte le richieste che vanno alla porta 80 del server sono silenziosamente reindirizzate alla porta 8080 , e così Varnish diventa il nostro server di front-end senza alcun cambiamento sulla configurazione di Apache.

Come farlo

Come avrete probabilmente intuito l’unico “trucco” è quello di utilizzare una delle molte caratteristiche di iptables, iptables è uno programma che gira in user-sapce che permette di configurare le tabelle fornite dal firewall del kernel Linux, e in questo caso particolare ho usato la tabella nat con la catena PREROUTING tramite l’azione di redirect.

Dalla pagina man di iptables:

nat :
Questa tabella viene consultata quando un pacchetto creato da una nuova connessione viene rilevato. Si compone di tre catene
incluse: PREROUTING (per alterare i pacchetti non appena entrano), OUTPUT (per alterare i pacchetti generati localmente
prima dell’instradamento), e POSTROUTING (per alterare i pacchetti quando sono in procinto di uscire).

Così non appena un pacchetto entra il “firewall”, iptables, verifica se ha una porta di destinazione pari ad 80 in tal caso si applica l’azione, nel mio caso redirect e quindi il pacchetto viene reindirizzato alla porta 8080 dove Varnish è in ascolto.

Regole di Iptables ed Alias

Per mettere le regole che dirigono tutto il traffico dalla porta 80 alla 8080 aprite un terminale come root ed usate il comando:

#iptables -t nat  -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

Se volete togliere Varnish come server di Front End potete semplicemente togliere questa regola con il comando:

#iptables -t nat  -D PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

E per verificare se il redirect è attvio, chiedetelo ad iptables con:

#iptables -L -t nat

Se vedete una linea come quella seguente significa che il redirect è attivo, se non c’e’ nulla nell’output significa che è inattivo.

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
REDIRECT   tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 8080



Ma c’è un modo più semplice di utilizzare questi comandi come root è sufficiente aggiungere nel vostro file ~/.bashrc questi 3 alias:

alias varnishon='iptables -t nat  -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080'
alias varnishoff='iptables -t nat  -D PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080'
alias varnishstatus='iptables -L -t nat |grep -q 8080; if [ "test$?" = "test0" ]; then echo "Varnish On"; else echo "Varnish Off"; fi'

Ed ora potete attivare e disattivare Varnish con 1 solo comando.

Note Finali

Non ho provato con un benchmark quanto peggiorano le performance di questa configurazione a confronto di una soluzione tradizionale, probabilmente non tanto in quanto iptables è un servizio del kernel ed è molto leggero, in ogni caso se avete un sito con un sacco di traffico utilizzate questa configurazione solo per un test di Varnish, e se vi piace fate una configurazione “tradizionale”.

No related posts.

flattr this!




Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles