Varnish cache

13
VARNISH-CACHE Praktyczne zastosowania Michał Gruchała

Transcript of Varnish cache

Page 1: Varnish cache

VARNISH-CACHEPraktyczne zastosowania

Michał Gruchała

Page 2: Varnish cache

Agenda

1. Co to jest Varnish-Cache

2. Warsztat

3. Varnish-Cache w GOG.com

Page 3: Varnish cache

Varnish-Cache

Użytkownik LoadBalancer(Varnish-Cache)

Backend

Backend

Backend

Page 4: Varnish cache

Varnish-Cache

Reverse Proxy / LoadBalancer

Cache

Konfigurowalność / Elastyczność

Protokół HTTP (brak SSL)

Badanie zdrowia backendów

Dowolna możliwość wyboru backendów

Możliwośc zmiany zapytania / odpowiedzi HTTP

Edge Side Includes

Trzyma w cache odpowiedzi otrzymane od backendów

Eliminuje dogpile effect

Maszyna stanowa / automat skończony

Konfiguracja jest kodem / zbiorem funkcji wykonywanych w poszczególnych stanach

Możliwość pisania modułów albo wstawek inline-C

Page 5: Varnish cache

Varnish-Cache

vcl_recv() vcl_deliver() DONEvcl_fetch()

vcl_hit()

vcl_miss()

move bytesvcl_pipe()

vcl_pass()

vcl_hash()

Page 6: Varnish cache

Funkcja jest wykonywana w po pobraniu danych od backendu

Manipulujemy odpowiedzią

Podejmujemy decyzję czy zapisujemy do cache

Może nie być wykonana - żądanie HTTP zostało obsłużone przez cache

Varnish-Cache

vcl_recv()

vcl_fetch()

Funkcja jest wykonywana na początku przetwarzania zapytania

Ustawiamy backend / Wybieramy odpowiedź z cache

Normalizujemy zapytanie

Page 7: Varnish cache

Warsztat

devacademy.gog.com

Francja

Varnish-Cache

!

!

LOADBALANCER

web-{1,2}.devacademy.gog.com

Kanada

nginx + php-fpm

!

BACKENDY

Page 8: Varnish cache

Warsztat

Page 9: Varnish cache

Warsztat

LoadBalancer director / backends / health checks

vcl_recv

Zasoby statyczne vcl_recv + vcl_fetch

ochrona przed dogpile effect

Zasoby dynamiczne Cookie

Zasoby dynamiczne personalizowane

ESI

Ajax

Page 10: Varnish cache

Co więcej?

Grace Serwuje przeterminowane dane z cache

Restarts Umożliwa zresetowanie procesu (powrót do vcl_recv).

Możliwa reakcja na błędne odpowiedzi z backendów

Moduły curl

throttle

geoip

Normalizacja URL Różne linki prowadzące do tych samych zasobów (przydatne przy statycznych plikach typu js/css)

Sterowanie cache TTL można pobierać z backendu (nagłówek)Inwalidacja cache przez HTTP

Page 11: Varnish cache

Varnish-Cache w GOG.com

Page 12: Varnish cache

Varnish-Cache w GOG.com

Wiele serwerowni Varnish-Cache na maszynach POP wybiera odpowiednie datacenter

Obsługa OAuth2 Varnish-Cache rozwiązuje access token na client_id / user_id

Cache z cookie Ten sam URL ale wiele wersji językowych, wersja mobilne/desktop.

Ochrona przez DoS Chcemy na Varnish-Cache zrealizować system ochrony przed atakami typu DoS

Page 13: Varnish cache

DZIĘKUJĘ ZA UWAGĘZapraszam do dyskusji