Varnish cache
-
Upload
gogcom-dev-team -
Category
Technology
-
view
84 -
download
0
Transcript of Varnish cache
VARNISH-CACHEPraktyczne zastosowania
Michał Gruchała
Varnish-Cache
Użytkownik LoadBalancer(Varnish-Cache)
Backend
Backend
Backend
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
Varnish-Cache
vcl_recv() vcl_deliver() DONEvcl_fetch()
vcl_hit()
vcl_miss()
move bytesvcl_pipe()
vcl_pass()
vcl_hash()
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
Warsztat
devacademy.gog.com
Francja
Varnish-Cache
!
!
LOADBALANCER
web-{1,2}.devacademy.gog.com
Kanada
nginx + php-fpm
!
BACKENDY
Warsztat
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
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
Varnish-Cache w GOG.com
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
DZIĘKUJĘ ZA UWAGĘZapraszam do dyskusji