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

73
Curs 9 Accelerarea accesului web Servicii avansate pentru ISP 9 mai 2017 SAISP Curs 9, Accelerarea accesului web 1/43

Upload: dangtram

Post on 21-May-2018

224 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

Curs 9Accelerarea accesului web

Servicii avansate pentru ISP

9 mai 2017

SAISP Curs 9, Accelerarea accesului web 1/43

Page 2: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

Outline

Nevoia de accelerare

Accelerarea web

Varnish

Administrare Varnish

Concluzii

Intrebari

SAISP Curs 9, Accelerarea accesului web 2/43

Page 3: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 4: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 5: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 6: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 7: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 8: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 9: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 10: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 11: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 12: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 13: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 14: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

Outline

Nevoia de accelerare

Accelerarea web

Varnish

Administrare Varnish

Concluzii

Intrebari

SAISP Curs 9, Accelerarea accesului web 7/43

Page 15: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 16: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

Proxy

I Intermediator ıntre serviciu si client

SAISP Curs 9, Accelerarea accesului web 9/43

Page 17: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 18: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 19: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

Forward proxy (2)

SAISP Curs 9, Accelerarea accesului web 11/43

Page 20: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 21: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 22: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 23: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

Reverse proxy (2)

SAISP Curs 9, Accelerarea accesului web 13/43

Page 24: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 25: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 26: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 27: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 28: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 29: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 30: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 31: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

Ce este un accelerator web?

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

SAISP Curs 9, Accelerarea accesului web 16/43

Page 32: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 33: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 34: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 35: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 36: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 37: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 38: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 39: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 40: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 41: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 42: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

Outline

Nevoia de accelerare

Accelerarea web

Varnish

Administrare Varnish

Concluzii

Intrebari

SAISP Curs 9, Accelerarea accesului web 21/43

Page 43: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 44: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 45: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 46: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 47: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 48: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 49: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 50: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 51: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 52: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

Outline

Nevoia de accelerare

Accelerarea web

Varnish

Administrare Varnish

Concluzii

Intrebari

SAISP Curs 9, Accelerarea accesului web 27/43

Page 53: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 54: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 55: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 56: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 57: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 58: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 59: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 60: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 61: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 62: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 63: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 64: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 65: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

VCL - masina de stari

SAISP Curs 9, Accelerarea accesului web 35/43

Page 66: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 67: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 68: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 69: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 70: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

Outline

Nevoia de accelerare

Accelerarea web

Varnish

Administrare Varnish

Concluzii

Intrebari

SAISP Curs 9, Accelerarea accesului web 40/43

Page 71: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 72: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

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

Page 73: Curs 9 - Accelerarea accesului web · Varnish Administrare Varnish Concluzii ... I Reverse proxy - Apache I Implementat ^ n module: mod_proxy, mod_cache I Activat folosind directiva

Outline

Nevoia de accelerare

Accelerarea web

Varnish

Administrare Varnish

Concluzii

Intrebari

SAISP Curs 9, Accelerarea accesului web 43/43