curs 9 - accelerarea accesului web · varnish administrare varnish concluzii ... i reverse proxy -...

Post on 21-May-2018

224 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Curs 9Accelerarea accesului web

Servicii avansate pentru ISP

9 mai 2017

SAISP Curs 9, Accelerarea accesului web 1/43

Outline

Nevoia de accelerare

Accelerarea web

Varnish

Administrare Varnish

Concluzii

Intrebari

SAISP Curs 9, Accelerarea accesului web 2/43

Paradigma client-server

I Arhitectura distribuitaI Server

I furnizor de serviciiI Ex: web server, file server

I ClientI solicita servicii

I Se partajeaza procesarea ıntre cele 2 entitati

I Comunica peste o retea de calculatoare

SAISP Curs 9, Accelerarea accesului web 3/43

Incarcarea pe server

I Factori

I numar de cereriI complexitatea de prelucrarea a cererilorI dimensiunea datelor transferateI interactiunea cu alte servicii ın cadrul unei cereri

I Componente afectateI CPU (numar de procese, tipul lor CPU - I/O bound)I memoriei (cantitatea de memorie folosita)I lat, ime de banda (numar de pachete, dimensiunea acestora)I I/O (ıncarcarea discului cu cereri)

SAISP Curs 9, Accelerarea accesului web 4/43

Incarcarea pe server

I FactoriI numar de cereriI complexitatea de prelucrarea a cererilorI dimensiunea datelor transferateI interactiunea cu alte servicii ın cadrul unei cereri

I Componente afectate

I CPU (numar de procese, tipul lor CPU - I/O bound)I memoriei (cantitatea de memorie folosita)I lat, ime de banda (numar de pachete, dimensiunea acestora)I I/O (ıncarcarea discului cu cereri)

SAISP Curs 9, Accelerarea accesului web 4/43

Incarcarea pe server

I FactoriI numar de cereriI complexitatea de prelucrarea a cererilorI dimensiunea datelor transferateI interactiunea cu alte servicii ın cadrul unei cereri

I Componente afectateI CPU (numar de procese, tipul lor CPU - I/O bound)I memoriei (cantitatea de memorie folosita)I lat, ime de banda (numar de pachete, dimensiunea acestora)I I/O (ıncarcarea discului cu cereri)

SAISP Curs 9, Accelerarea accesului web 4/43

Solut, ii pentru reducerea ıncarcarii

I Load balancingI distribuire cereri pe mai multe servereI priority activationI asymmetric loadI ssl offloadingI remember: LVS

I LimitariI lat, ime de banda (priority queuing)I procesor (cgroups)I memorie

I ArhivareI trade-off (CPU vs. banda consumata)

SAISP Curs 9, Accelerarea accesului web 5/43

Solut, ii pentru reducerea ıncarcarii

I Load balancingI distribuire cereri pe mai multe servereI priority activationI asymmetric loadI ssl offloadingI remember: LVS

I LimitariI lat, ime de banda (priority queuing)I procesor (cgroups)I memorie

I ArhivareI trade-off (CPU vs. banda consumata)

SAISP Curs 9, Accelerarea accesului web 5/43

Solut, ii pentru reducerea ıncarcarii

I Load balancingI distribuire cereri pe mai multe servereI priority activationI asymmetric loadI ssl offloadingI remember: LVS

I LimitariI lat, ime de banda (priority queuing)I procesor (cgroups)I memorie

I ArhivareI trade-off (CPU vs. banda consumata)

SAISP Curs 9, Accelerarea accesului web 5/43

Solut, ii pentru reducerea ıncarcarii

I Load balancingI distribuire cereri pe mai multe servereI priority activationI asymmetric loadI ssl offloadingI remember: LVS

I LimitariI lat, ime de banda (priority queuing)I procesor (cgroups)I memorie

I ArhivareI trade-off (CPU vs. banda consumata)

SAISP Curs 9, Accelerarea accesului web 5/43

Solut, ii de accelerare a accesului

I CachingI La ce anume putem face caching?

I CPU cacheI Disk buffer (datele de pe disc ın memorie)I Page cacheI Web cache (paginile web)I DNS cache (intrarile DNS)I P2P cache (similar cu Web cache)I Database cache

SAISP Curs 9, Accelerarea accesului web 6/43

Solut, ii de accelerare a accesului

I CachingI La ce anume putem face caching?

I CPU cacheI Disk buffer (datele de pe disc ın memorie)I Page cacheI Web cache (paginile web)I DNS cache (intrarile DNS)I P2P cache (similar cu Web cache)I Database cache

SAISP Curs 9, Accelerarea accesului web 6/43

Solut, ii de accelerare a accesului

I CachingI La ce anume putem face caching?

I CPU cacheI Disk buffer (datele de pe disc ın memorie)I Page cacheI Web cache (paginile web)I DNS cache (intrarile DNS)I P2P cache (similar cu Web cache)I Database cache

SAISP Curs 9, Accelerarea accesului web 6/43

Outline

Nevoia de accelerare

Accelerarea web

Varnish

Administrare Varnish

Concluzii

Intrebari

SAISP Curs 9, Accelerarea accesului web 7/43

Acceleratoare web - roluri

I Cresterea vitezei

I Securitate

I Alterarea traficului

I Caching

I Optimizare de cod (HTML, Javascript)

I Filtrare de reclame

SAISP Curs 9, Accelerarea accesului web 8/43

Proxy

I Intermediator ıntre serviciu si client

SAISP Curs 9, Accelerarea accesului web 9/43

Forward proxy

I Deseori referit doar cu proxy

I Asigura servicii de proxy unui grup de clientiI Se adreseaza ın general retelei interne (LAN)

I Exceptie:

anonimizare

I Din punct de vedere al serviciului accesat, adresa sursa estecea a proxy-ului

SAISP Curs 9, Accelerarea accesului web 10/43

Forward proxy

I Deseori referit doar cu proxy

I Asigura servicii de proxy unui grup de clientiI Se adreseaza ın general retelei interne (LAN)

I Exceptie: anonimizare

I Din punct de vedere al serviciului accesat, adresa sursa estecea a proxy-ului

SAISP Curs 9, Accelerarea accesului web 10/43

Forward proxy (2)

SAISP Curs 9, Accelerarea accesului web 11/43

Reverse proxy

I Calculatoarele nu sunt singurele entitati dintr-un LAN

I servere (de obicei ın DMZ) accesate din exterior

I Nu se poate folosi solutia clasica de Forward proxyI directia traficului este exact invers (Reverse proxy)

I Accepta cereri din exterior ın numele serverelor

I Ascunde identitatea sau chiar existenta unui server

I Balansarea cererilor catre serverele disponibile

SAISP Curs 9, Accelerarea accesului web 12/43

Reverse proxy

I Calculatoarele nu sunt singurele entitati dintr-un LANI servere (de obicei ın DMZ) accesate din exterior

I Nu se poate folosi solutia clasica de Forward proxy

I directia traficului este exact invers (Reverse proxy)

I Accepta cereri din exterior ın numele serverelor

I Ascunde identitatea sau chiar existenta unui server

I Balansarea cererilor catre serverele disponibile

SAISP Curs 9, Accelerarea accesului web 12/43

Reverse proxy

I Calculatoarele nu sunt singurele entitati dintr-un LANI servere (de obicei ın DMZ) accesate din exterior

I Nu se poate folosi solutia clasica de Forward proxyI directia traficului este exact invers (Reverse proxy)

I Accepta cereri din exterior ın numele serverelor

I Ascunde identitatea sau chiar existenta unui server

I Balansarea cererilor catre serverele disponibile

SAISP Curs 9, Accelerarea accesului web 12/43

Reverse proxy (2)

SAISP Curs 9, Accelerarea accesului web 13/43

Forward proxy vs. Reverse proxy

I Forward proxyI intermediaza traficul ın numele clientilorI ascunde identitatea clientilor

I Reverse proxyI intermediaza traficul ın numele serverelorI ascunde identitatea serverelor

SAISP Curs 9, Accelerarea accesului web 14/43

Alte beneficii ale unui proxy

I Monitorizare si filtrarea traficului

I Accesarea anonima a serviciilor

I Imbunatatirea perfomantelor (caching)

I Compresia datelor trimise ın InternetI Single point of access

I mai usor de a aplica politicile de securitate

SAISP Curs 9, Accelerarea accesului web 15/43

Alte beneficii ale unui proxy

I Monitorizare si filtrarea traficului

I Accesarea anonima a serviciilor

I Imbunatatirea perfomantelor (caching)

I Compresia datelor trimise ın InternetI Single point of access

I mai usor de a aplica politicile de securitate

SAISP Curs 9, Accelerarea accesului web 15/43

Ce este un accelerator web?

I Reverse-proxy ce asigura

I cachingI load balancingI securitatea datelorI accounting

SAISP Curs 9, Accelerarea accesului web 16/43

Ce este un accelerator web?

I Reverse-proxy ce asiguraI caching

I load balancingI securitatea datelorI accounting

SAISP Curs 9, Accelerarea accesului web 16/43

Ce este un accelerator web?

I Reverse-proxy ce asiguraI cachingI load balancing

I securitatea datelorI accounting

SAISP Curs 9, Accelerarea accesului web 16/43

Ce este un accelerator web?

I Reverse-proxy ce asiguraI cachingI load balancingI securitatea datelor

I accounting

SAISP Curs 9, Accelerarea accesului web 16/43

Ce este un accelerator web?

I Reverse-proxy ce asiguraI cachingI load balancingI securitatea datelorI accounting

SAISP Curs 9, Accelerarea accesului web 16/43

Exemple de proxy

I Squid - proxy (forward proxy)

I Cel mai utilizat ın ziua de azi

I Multi utilizatori ıl folosesc fara sa stie acest lucru

I Functionalitate de proxy transparent (iptables mangle + Squidinternal configs)

SAISP Curs 9, Accelerarea accesului web 17/43

Exemple de proxy

I Squid - proxy (forward proxy)

I Cel mai utilizat ın ziua de azi

I Multi utilizatori ıl folosesc fara sa stie acest lucru

I Functionalitate de proxy transparent (iptables mangle + Squidinternal configs)

SAISP Curs 9, Accelerarea accesului web 17/43

Exemple de reverse proxy

I Reverse proxy - Apache

I Implementat ın module: mod_proxy, mod_cache

I Activat folosind directiva ProxyPass

I Poate juca rolul si de forward proxy folosind directivaProxyRequests

I Nu este recomandat sa se foloseasca forward proxy peacelasi server Apache ce are activ si reverse proxy. De ce?

I clientii pot genera trafic malitios folosind forward proxyI se ajunge la blocarea adresei IP care este folosita si pentru

reverse proxyI rezulta innacesibilitatea serviciilor oferite pe aceeasi adresa IP

SAISP Curs 9, Accelerarea accesului web 18/43

Exemple de reverse proxy

I Reverse proxy - Apache

I Implementat ın module: mod_proxy, mod_cache

I Activat folosind directiva ProxyPass

I Poate juca rolul si de forward proxy folosind directivaProxyRequests

I Nu este recomandat sa se foloseasca forward proxy peacelasi server Apache ce are activ si reverse proxy. De ce?

I clientii pot genera trafic malitios folosind forward proxyI se ajunge la blocarea adresei IP care este folosita si pentru

reverse proxyI rezulta innacesibilitatea serviciilor oferite pe aceeasi adresa IP

SAISP Curs 9, Accelerarea accesului web 18/43

Exemple de reverse proxy

I Reverse proxy - Apache

I Implementat ın module: mod_proxy, mod_cache

I Activat folosind directiva ProxyPass

I Poate juca rolul si de forward proxy folosind directivaProxyRequests

I Nu este recomandat sa se foloseasca forward proxy peacelasi server Apache ce are activ si reverse proxy. De ce?

I clientii pot genera trafic malitios folosind forward proxy

I se ajunge la blocarea adresei IP care este folosita si pentrureverse proxy

I rezulta innacesibilitatea serviciilor oferite pe aceeasi adresa IP

SAISP Curs 9, Accelerarea accesului web 18/43

Exemple de reverse proxy

I Reverse proxy - Apache

I Implementat ın module: mod_proxy, mod_cache

I Activat folosind directiva ProxyPass

I Poate juca rolul si de forward proxy folosind directivaProxyRequests

I Nu este recomandat sa se foloseasca forward proxy peacelasi server Apache ce are activ si reverse proxy. De ce?

I clientii pot genera trafic malitios folosind forward proxyI se ajunge la blocarea adresei IP care este folosita si pentru

reverse proxy

I rezulta innacesibilitatea serviciilor oferite pe aceeasi adresa IP

SAISP Curs 9, Accelerarea accesului web 18/43

Exemple de reverse proxy

I Reverse proxy - Apache

I Implementat ın module: mod_proxy, mod_cache

I Activat folosind directiva ProxyPass

I Poate juca rolul si de forward proxy folosind directivaProxyRequests

I Nu este recomandat sa se foloseasca forward proxy peacelasi server Apache ce are activ si reverse proxy. De ce?

I clientii pot genera trafic malitios folosind forward proxyI se ajunge la blocarea adresei IP care este folosita si pentru

reverse proxyI rezulta innacesibilitatea serviciilor oferite pe aceeasi adresa IP

SAISP Curs 9, Accelerarea accesului web 18/43

Exemple de acceleratoarea web

I VarnishI JSCAPE MFT Gateway

I load balancerI reverse proxyI NU e grauit

I DrupalI reverse proxy cacheI versiunea 7I NU e gratuit

SAISP Curs 9, Accelerarea accesului web 19/43

Exemple de acceleratoarea web (2)

I Akamai Web Application AcceleratorI lider de piataI solutie complexa vanduta ca un serviciuI se folosesc servere AkamaiI asigura replicare locala (la nivel de continent/tara/oras)I este practic un CDN (Content Delivery Network)

I Ce este un CDN?

I retea de dimensiuni mariI distribuita pe tot globulI asigura disponibilitate ridicataI asigura performanta ridicataI de obicei folosit de companiile media pentru a face streaming

(ex: televiziuni)

SAISP Curs 9, Accelerarea accesului web 20/43

Exemple de acceleratoarea web (2)

I Akamai Web Application AcceleratorI lider de piataI solutie complexa vanduta ca un serviciuI se folosesc servere AkamaiI asigura replicare locala (la nivel de continent/tara/oras)I este practic un CDN (Content Delivery Network)

I Ce este un CDN?I retea de dimensiuni mariI distribuita pe tot globulI asigura disponibilitate ridicataI asigura performanta ridicataI de obicei folosit de companiile media pentru a face streaming

(ex: televiziuni)

SAISP Curs 9, Accelerarea accesului web 20/43

Outline

Nevoia de accelerare

Accelerarea web

Varnish

Administrare Varnish

Concluzii

Intrebari

SAISP Curs 9, Accelerarea accesului web 21/43

Scurt istoric

I Initiat ın 2005 de divizia online a unui ziar tabloid norvegian(Verdens Gans)

I Varnish Cache 1.0 lansat ın septembrie 2006

I Open-source, sub licenta FreeBSD

I Suport comercial la cerereI Varnish Governance Board (VGB)

I 3 persoaneI arhitect Poul-Henning Kamp (binecunosct developer ın

comunitatea FreeBSD)

I Versiunea 2.0 a fost lansata ın 2008, 3.0 ın 2011

I Versiunea 4.0 pe 29 Aprilie 2014 (Release party:)).

SAISP Curs 9, Accelerarea accesului web 22/43

Beneficii ale utilizarii Varnish

I Accelerator Web

I Bazat numai pe protocolul HTTP

I Reducerea contention-ului ıntre thread-uri

I Load balancing (round-robin sau random director)

I Compresie/decompresie a datelor

I Caching ın memorie al fisierelor

I Speed-up 300x-1000x depinzand de arhitectura

SAISP Curs 9, Accelerarea accesului web 23/43

Principii de design

I Solve real problemsI performantaI flexibilitate

I Optimize for modern hardwareI 64-bit, multi-coreI 32-bit, limitat la 3GB de memorie virtuala

I Work with the kernel, not against itI kernelul decide cand sa faca swappingI foloseste cat mai multe facilitati oferite de kernel (epoll,

kqueue)

SAISP Curs 9, Accelerarea accesului web 24/43

Principii de design

I Solve real problemsI performantaI flexibilitate

I Optimize for modern hardwareI 64-bit, multi-coreI 32-bit, limitat la 3GB de memorie virtuala

I Work with the kernel, not against itI kernelul decide cand sa faca swappingI foloseste cat mai multe facilitati oferite de kernel (epoll,

kqueue)

SAISP Curs 9, Accelerarea accesului web 24/43

Principii de design

I Solve real problemsI performantaI flexibilitate

I Optimize for modern hardwareI 64-bit, multi-coreI 32-bit, limitat la 3GB de memorie virtuala

I Work with the kernel, not against itI kernelul decide cand sa faca swappingI foloseste cat mai multe facilitati oferite de kernel (epoll,

kqueue)

SAISP Curs 9, Accelerarea accesului web 24/43

Detalii interne

I Memory cachingI nu tine cont daca datele se afla ın memorie sau swapI rezerva o sectiune suficient de mare de memorie (virtuala)I ramane la latitudinea sistemului de operare unde va tine datele

(pe disc sau ın memorie)

I VCL - Varnish Configuration LanguageI translatat ın cod CI compilat si linkat dinamic la runtime de VarnishI asigura flexibilitate ridicataI nu e nevoie ca administratorul sa stie detalii de implementare

ale VarnishI permite inserarea de cod C nativ prin VCL

SAISP Curs 9, Accelerarea accesului web 25/43

Detalii interne

I Memory cachingI nu tine cont daca datele se afla ın memorie sau swapI rezerva o sectiune suficient de mare de memorie (virtuala)I ramane la latitudinea sistemului de operare unde va tine datele

(pe disc sau ın memorie)

I VCL - Varnish Configuration LanguageI translatat ın cod CI compilat si linkat dinamic la runtime de VarnishI asigura flexibilitate ridicataI nu e nevoie ca administratorul sa stie detalii de implementare

ale VarnishI permite inserarea de cod C nativ prin VCL

SAISP Curs 9, Accelerarea accesului web 25/43

Detalii interne (2)

I ThreadedI scaleaza aproape proportional cu numarul de procesoare

disponibil

I Object cachingI Obiecte stocate ın hash-uriI Hashing-ul poate fi controlat prin modificarea algoritmului

folosit de VarnishI Mai multe obiect pot avea aceeasi cheie

SAISP Curs 9, Accelerarea accesului web 26/43

Detalii interne (2)

I ThreadedI scaleaza aproape proportional cu numarul de procesoare

disponibil

I Object cachingI Obiecte stocate ın hash-uriI Hashing-ul poate fi controlat prin modificarea algoritmului

folosit de VarnishI Mai multe obiect pot avea aceeasi cheie

SAISP Curs 9, Accelerarea accesului web 26/43

Outline

Nevoia de accelerare

Accelerarea web

Varnish

Administrare Varnish

Concluzii

Intrebari

SAISP Curs 9, Accelerarea accesului web 27/43

Mediul de lucru

I Server-e WebI orice server ce foloseste protocolul HTTPI independent de serverul Web folosit

I Varnish ServerI se ofera pachete pentru RedHat/CentOS/Debian/UbuntuI pentru Debian-based: sudo apt-get install varnish

SAISP Curs 9, Accelerarea accesului web 28/43

Comenzi de interactiune cu Varnish

I service varnish restartI repornirea procesului

I service varnish reloadI recitirea scripturilor VCLI cache-ul nu este afectat

I varnishadm param.set ...I configurarea parametrilor fara a reseta serviciul

I varnishadm param.show ...I afisarea parametrilor

SAISP Curs 9, Accelerarea accesului web 29/43

Fis, iere de configurare Varnish

I /etc/default/varnishI configurarea parametrilor liniei de comanda cu care va porni

VarnishI configurarea altor parametri interni VarnishI o data cu modificarea acestui fisier trebuie sa resetati serviciul

I /etc/varnish/default.vclI locatia/numele acestuia poate fi modificat ın

/etc/default/varnishI contine definitia backend-server (cel de la care preia contentul

- ex: Apache server)

SAISP Curs 9, Accelerarea accesului web 30/43

Exemplu de configurare de baza

I /etc/default/varnish

1 NFILES=131072

2 MEMLOCK=82000

3 INSTANCE=$(uname -n)

4 DAEMON OPTS="-a :80 \5 -T localhost:1234 \6 -f /etc/varnish/default.vcl \7 -s malloc,256m"

I /etc/varnish/default.vcl1 backend default {2 .host = "localhost";

3 .port = "8080";

4 }

SAISP Curs 9, Accelerarea accesului web 31/43

Exemplu de configurare de baza

I /etc/default/varnish

1 NFILES=131072

2 MEMLOCK=82000

3 INSTANCE=$(uname -n)

4 DAEMON OPTS="-a :80 \5 -T localhost:1234 \6 -f /etc/varnish/default.vcl \7 -s malloc,256m"

I /etc/varnish/default.vcl1 backend default {2 .host = "localhost";

3 .port = "8080";

4 }

SAISP Curs 9, Accelerarea accesului web 31/43

Logging s, i statistici

I Log data in real-time

I Foloseste shared-memory (nu face logging pe disc!)

I varnishlogI accesarea datelor specifice unui request

I varnishstatI vizualizarea counter-elor globaleI numar de cereri, numar de obiecte stocare

I varnishncsaI log-uri ın format Apache

I se poate modifica comportamentul implicit de scriere ınmemorie din /etc/default/varnishlog

SAISP Curs 9, Accelerarea accesului web 32/43

Logging s, i statistici

I Log data in real-time

I Foloseste shared-memory (nu face logging pe disc!)I varnishlog

I accesarea datelor specifice unui request

I varnishstatI vizualizarea counter-elor globaleI numar de cereri, numar de obiecte stocare

I varnishncsaI log-uri ın format Apache

I se poate modifica comportamentul implicit de scriere ınmemorie din /etc/default/varnishlog

SAISP Curs 9, Accelerarea accesului web 32/43

Logging s, i statistici

I Log data in real-time

I Foloseste shared-memory (nu face logging pe disc!)I varnishlog

I accesarea datelor specifice unui request

I varnishstatI vizualizarea counter-elor globaleI numar de cereri, numar de obiecte stocare

I varnishncsaI log-uri ın format Apache

I se poate modifica comportamentul implicit de scriere ınmemorie din /etc/default/varnishlog

SAISP Curs 9, Accelerarea accesului web 32/43

Logging s, i statistici

I Log data in real-time

I Foloseste shared-memory (nu face logging pe disc!)I varnishlog

I accesarea datelor specifice unui request

I varnishstatI vizualizarea counter-elor globaleI numar de cereri, numar de obiecte stocare

I varnishncsaI log-uri ın format Apache

I se poate modifica comportamentul implicit de scriere ınmemorie din /etc/default/varnishlog

SAISP Curs 9, Accelerarea accesului web 32/43

Logging s, i statistici

I Log data in real-time

I Foloseste shared-memory (nu face logging pe disc!)I varnishlog

I accesarea datelor specifice unui request

I varnishstatI vizualizarea counter-elor globaleI numar de cereri, numar de obiecte stocare

I varnishncsaI log-uri ın format Apache

I se poate modifica comportamentul implicit de scriere ınmemorie din /etc/default/varnishlog

SAISP Curs 9, Accelerarea accesului web 32/43

varnishlog output

1 97 ReqStart c 10.1.0.10 50866 117511506

2 97 RxRequest c GET

3 97 RxURL c /style.css

4 97 RxProtocol c HTTP/1.1

5 97 RxHeader c Host: www.example.com

6 97 VCL call c recv lookup

7 97 VCL call c hash hash

8 97 Hit c 117505004

9 97 VCL call c hit deliver

10 97 Length c 3218

11 97 VCL call c deliver deliver

12 97 TxProtocol c HTTP/1.1

13 97 TxStatus c 200

14 97 TxResponse c OK

15 97 TxHeader c Content-Length: 3218

16 97 TxHeader c Date: Sat, 22 Aug 2008 01:10:10 GMT

17 97 TxHeader c X-Varnish: 117511501 117505004

18

SAISP Curs 9, Accelerarea accesului web 33/43

varnishstat output

1 0+00:44:50 foobar

2 Hitrate ratio: 10 100 175

3 Hitrate avg: 0.9507 0.9530 0.9532

4

5 574660 241.00 213.63 Client connections accepted

6 2525317 937.00 938.78 Client requests received

7 2478794 931.00 921.48 Cache hits

8 7723 3.00 2.87 Cache hits for pass9 140055 36.00 52.07 Cache misses

10 47974 12.00 17.83 Backend conn. success

11 109526 31.00 40.72 Backend conn. reuses

12 46676 5.00 17.35 Backend conn. was closed

13 156211 41.00 58.07 Backend conn. recycles

14 110500 34.00 41.08 Fetch with Length

15 46519 6.00 17.29 Fetch chunked

16

SAISP Curs 9, Accelerarea accesului web 34/43

VCL - masina de stari

SAISP Curs 9, Accelerarea accesului web 35/43

VCL - vcl recv

1 sub vcl recv {2 if (req.restarts == 0) {3 if (req.http.x-forwarded-for) {4 set req.http.X-Forwarded-For =

5 req.http.X-Forwarded-For + ", " + client.ip;

6 } else {7 set req.http.X-Forwarded-For = client.ip;

8 }9 }

10 if (req.request != "GET" &&

11 ...

12 req.request != "DELETE") {13 /* Non-RFC2616 or CONNECT which is weird. */

14 return (pipe);

15 }16 if (req.request != "GET" && req.request != "HEAD") {17 /* We only deal with GET and HEAD by default */

18 return (pass);

19 }20 if (req.http.Authorization || req.http.Cookie) {21 /* Not cacheable by default */

22 return (pass);

23 }24 return (lookup);

25 }

SAISP Curs 9, Accelerarea accesului web 36/43

VCL - functii

I regsub(str, regex, sub)

I regsuball(str, regex, sub)

I ban_url(regex)

I ban(expression)

I purge;

I return(restart)

I return()

I hash_data()

SAISP Curs 9, Accelerarea accesului web 37/43

Load-balancing

I Declaram mai multe backend-uri ın/etc/varnish/default.vcl

I Cream un director ın care setam ca membri backend-urilecreate

I 2 tipuri de director: round-robin, random

I modificam vcl recv pentru a seta noul director/backend

1 director baz round-robin {2 {3 .backend = foo;

4 }5 {6 .backend = bar;

7 }8 }9

10 sub vcl recv {11 if (req.http.host ∼ "^(www.)?mysite.com$") {12 set req.backend = baz;

13 }14 }

SAISP Curs 9, Accelerarea accesului web 38/43

Load-balancing folosind atribute

I Folosim atributele primite de la client pentru a faceload-balancing

I Atribute: adresa IP, header-ul HTTP, URL-ul1 director baz client {2 {3 .backend = foo;

4 .weight = 1;

5 }6 {7 .backend = bar;

8 .weight = 1;

9 }10 }11

12 sub vcl recv {13 set req.backend = baz;

14 /* Load balance by URL */

15 set client.identity = req.url;

16 /* Load balance by client IP, this is the default */

17 set client.identity = client.ip;

18 /* Load balance by user agent */

19 set client.identity = req.http.user-agent;

20 }

SAISP Curs 9, Accelerarea accesului web 39/43

Outline

Nevoia de accelerare

Accelerarea web

Varnish

Administrare Varnish

Concluzii

Intrebari

SAISP Curs 9, Accelerarea accesului web 40/43

Cuvinte cheie

I accelerare

I client-server

I reducerea ıncarcarii

I proxy

I forward proxy

I reverse proxy

I Squid

I Varnish

I memory caching

I VCL

I accelerarea web

I load balacing

SAISP Curs 9, Accelerarea accesului web 41/43

Link-uri utile

I http://en.wikipedia.org/wiki/Scalability

I http://en.wikipedia.org/wiki/Load_balancing_(computing)

I http://en.wikipedia.org/wiki/Web_accelerator

I http://en.wikipedia.org/wiki/Proxy_server

I http://en.wikipedia.org/wiki/Reverse_proxy

I http://www.jscape.com/blog/bid/87783/

Forward-Proxy-vs-Reverse-Proxy

I http://httpd.apache.org/docs/2.0/mod/mod_proxy.html#

forwardreverse

I http://wiki.squid-cache.org/SpoonFeeding

I http://www.squid-cache.org/Intro/

I https://www.varnish-software.com/static/book/

I http://www.akamai.com/html/solutions/web_application_

accelerator.html

I https://drupal.org/node/1046922

SAISP Curs 9, Accelerarea accesului web 42/43

Outline

Nevoia de accelerare

Accelerarea web

Varnish

Administrare Varnish

Concluzii

Intrebari

SAISP Curs 9, Accelerarea accesului web 43/43

top related