Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy -...
Transcript of Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy -...
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