Kaliop Poland
Varnish nie tylko za darmo

Varnish nie tylko za darmo

Popularny akcelerator stron internetowych Varnish w swojej najnowszej wersji 4 oferuje wyższą wydajność i bezpieczeństwo w porównaniu ze swoim poprzednikiem. Obok wersji otwartej, ogłoszonej już w ubiegłym roku powstaje komercyjne oprogramowanie firmy Varnish Software, wzbogacone o dodatkowe mechanizmy i narzędzia. Oferta została wzbogacona o support producenta. Możliwości oferowane przez wersję płatną mają uczynić Varnish rozwiązaniem zdolnym sprostać wymaganiom rozbudowanych serwisów, z zasobami liczącymi wiele terabajtów, w szczególności plików audio i wideo.

Jedną z bardziej istotnych zmian w wersji 4 jest mechanizm przekazywania żądań do serwerów zaplecza (backend). W starszych wersjach, żądania dostępu do zaplecza były przetwarzane w tym samym wątku, w którym żądanie od klienta. Varnish 4 dzięki zastosowaniu podziału na oddzielne wątki (wątek klienta i wątek backendu) może odświeżać treści w tle, jednocześnie zwracając klientowi bieżącą zawartość. W wyniku tej zmiany odpowiedź jest serwowana przez Varnish nawet kilkadziesiąt procent szybciej.

Taki podział spowodował rozdzielenie metody vcl_fetch na dwie nowe: vcl_backend_fetch oraz vcl_backend_response.  Z tego powodu obiekt req (request) nie jest dostępny w metodzie vcl_backend_response - obiekt ten był używany w vcl_fetch i po rozdzieleniu tej metody w metodzie vcl_backend_response mamy do dyspozycji tylko obiekt bereq (backend request).

Domyślne bezpieczeństwo

Duża elastyczność i wydajność Varnisha wynikająca między innymi z możliwości korzystania z kodu C w plikach VCL mogła powodować także poważne problemy z bezpieczeństwem. Nie trudno sobie wyobrazić zagrożenie wynikające z możliwości uruchomienia dowolnego kodu z wysokimi uprawnieniami do systemu, jakimi proces Varnisha dysponuje. Aby wyeliminować nieświadome wykorzystania tej potencjalnej luki domyślnie wyłączono od wersji 4 możliwość używania C w plikach VCL ( parametr vcc_allow_inline_c).

Funkcja vcl_error zmieniła nazwę na vcl_backend_error, aby rozróżnić wewnętrznie generowane błędy od “sztucznie” generowanych odpowiedzi. Od wersji VCL 4 funkcja vcl_backend_error jest wykonywana w momencie zwrócenia błędu podczas próby pobrania obiektu.

Skalowalność i dostępność

Wraz z Varnishem w wersji 4, pojawił się o produkt o nazwie Varnish Plus.  Stanowi on połączenie subskrypcji na usługę wsparcia technicznego oraz dodatkowych funkcji, których nie zawiera wersja otwarta. Produkt bazuje na oprogramowaniu Varnish Cache Plus, czyli utwardzonej wersji otwartego Varnisha.

Z dodatkowych funkcji  warto wspomnieć o MSE (Massive Storage Engine), który pozwala na przechowywanie bardzo dużej liczby obiektów w cache o rozmiarach nawet wielu terabajtów. Funkcja ta przyda się w rozbudowanych serwisach z materiałami video i plikami binarnymi a także, w portalach o bardzo dużej liczbie tekstowej zawartości.

Kolejnym mechanizmem przeznaczonym dla witryn o bardzo dużej oglądalności jest funkcja High Avaliability, pozwalająca na replikowanie cache pomiędzy kilkoma serwerami Varnish. Wymiana danych pomiędzy maszynami odbywa się z wykorzystaniem niezależnych wątków replikacyjnych.

Uproszczona administracja i analiza ruchu

Administratorzy dużych instalacji z pewnością docenią także statystyki na żywo, które generuje moduł Custom Statistics. Formatem wyjściowym może być JSON, dający możliwość późniejszego przetwarzania z wykorzystaniem zewnętrznych narzędzi.

Prawidłowa konfiguracja systemu dla obsługi Varnisha stanowiła dotychczas problem. Wersja 4, wzbogacona o narzędzie Varnish Tuner dostarcza rekomendacje konfiguracji dla danej witryny. Jedyne co trzeba zrobić to wywołać narzędzie konsolowe i postępować zgodnie z instrukcjami na ekranie. Po zakończeniu pracy narzędzia otrzymamy listę zmian, które powinniśmy wprowadzić w systemie, aby zwiększyć wydajność naszego Varnisha.

VAC (Varnish Administration Console) - webowe narzędzie pozwalające między innymi na zarządzanie poleceniami wysyłanymi do Varnisha. Możemy za jego pomocą między innymi w szybki i łatwy sposób wyczyścić cache dla konkretnego serwera, dopisać reguły, grupować serwery czy też przeglądać statystyki.

Wśród dodatkowych elementów wersji płatnej warto jeszcze wspomnieć o module Enhanced Cache Invalidation - to moduł pozwalający na przedawnianie zawartości cache dla treści ze sobą powiązanych, a także o module Mobile Detection, który jak wskazuje nazwa, pozwala na wykrywanie urządzeń mobilnych klientów odwiedzających stronę. Pozwala on na wykrycie około 140 rodzajów urządzeń, w tym także rozmiaru ekranu, obsługi Adobe Flash a także wsparcia kodeków video.

Przeczytaj relację z Varnish Software Summit - London 2015

Dowiedz się więcej o Varnish Cache 4.1: Obsługa SSL/TLS w Varnish Cache 4.1

Autor:
Paweł Szczepaniak, Head of R&D and Infrastructure, Kaliop Poland