Server stack verbeterd – Welkom Varnish!

De PFSquad.NU server stack had het afgelopen jaar al een redelijk sterke inrichting met de setup van NGINX in combinatie met PHP-FPM, met als basis PHP 7.x, een combinatie van Cloudflare en MaxCDN voor een extra boost in performance.  Tel daarbij op onze eigen optimalisaties, onze Cachewizard oplossing, de  toevoeging van SSL maar daarop inhakend dan ook weer HTTP/2 bij op en het was al een systeem waar mening website van zou zeggen; wij willen dat op een dergelijke manier kunnen draaien, en dat snappen we maar al te goed want het was al een snel en sterk systeem!

Tel daarbij dan ook nog de toevoeging van Imagify bij op zoals in een eerder bericht reeds toegelicht en wat kan er nog beter?!  Nou dat zullen we je vertellen; Varnish caching die in harmonie met dit alles werkt, maakt alles nog net dat stukje meer cooler!

Varnish

In het kort even voor de mensen die niet weten wat Varnish is; Varnish is een HTTP-accelerator, ontworpen voor het cachen van (dynamische) websites. In tegenstelling tot webservers zoals Apache en nginx, en andere proxyservers , is Varnish slechts een proxyserver (met uitsluitend ondersteuning voor het HTTP-protocol).

Om een idee te geven van hoe je Varnish een beetje moet zien als leek; Varnish wordt gebruikt door bekende websites zoals Wikipedia, The New York Times, Facebook, Twitter, Vimeo, Tumblr etc.

Cool, maar dan richt je dat toch even in om samen te werken met de setup die jullie al hadden voor PFSquad.

Was het maar zo een feest inderdaad dat het gewoon klik en presto het werkt was.
Zoals hierboven heel kort toegelicht heeft Varnish een klein nadeel in het feit dat het alleen werkt op een HTTP connectie maar dus geen HTTPS connectie en dat is juist iets wat we willen blijven hanteren om een aantal redenen. 

Maar laten we even hypotetisch stellen we dat we voor die route gekozen dan hadden we;

  • Geen gebruik meer kunnen maken van onze SSL certificaten, wat zonde van het geld zou zijn maar ook van het feit dat SSL toch een ding aan het worden is.
  • Geen gebruik meer kunnen maken van de HTTP/2 configuratie, wat jammer is met het oog de snelheid gain van HTTP/2 met oog op multiplexing (minder verbindingen).
  • Veel erger zou het zijn dat het hele HTTP scheme dan verandert en Google daar zeker geen fan van is en je op diverse vlakken het nodige weer moet veranderen.

Kortom we hebben het altijd uitgesteld totdat we deze stap konden maken zonder dat het ons problemen zou opleveren op onder andere die gebieden. Maar tevens wouden we het zo doen dat we ook terug zouden kunnen indien het toch onvoorziene problemen zou geven.

Reden is dat het heel lastig is om zoiets goed te testen zonder het te echt ook op een productie-omgeving te hebben draaien. Je zit toch altijd met bepaalde zaken die je soms toch niet 1 op 1 kunt nabootsen. Maar we hebben het in fases gedaan; deze blog is eigenlijk als eerste overgegaan om in ieder geval een goede basis te kunnen krijgen.

Methode

Ik zal er niet te diep op in gaan omdat het toch voor iedere website wellicht net anders beter is in te richten en tevens omdat het best een aardig technisch geheel is. Maar we hebben met behulp van Docker (https://www.docker.com/) een setup gemaakt die op de Apache backend luistert.

Dit omdat Varnish zelf alleen op HTTP kan functioneren. Onze Nginx + PHP-FPM werkt als een reverse proxy en Varnish valt daardoor eigenlijk tussen beide in; het verzoek van de client komt eerst via Apache dan bepaalt Varnish van heb ik een Cached versie in geheugen, zoja dan serveert die de betreffende versie, zo nee dan wordt er een verzoek naar de origin server. In beide gevallen vangen we bepaalde zaken via onze CDN combinatie van Cloudflare en MaxCDN af.

Het voordeel van Varnish niet direct op de Origin server te draaien maar als een Docker instance (wat nog steeds wel technisch op de server is) maakt het zo dat we bij problemen de instance kunnen stoppen en met wat verandering van poorten weer als vroeger kunnen draaien.

Het meest uitdagende was nog het correct configureren van de afvanging van verschillende systemen die door Nginx, Varnish etc moeten kunnen communiceren met elkaar. Dat is niet altijd even makkelijk maar als je doorzet kom je er uiteindelijk wel aan uit. 

Problemen

Omdat we merken dat er toch nog wat kleine zaken niet goed verlopen zijn we het nodige aan het testen. Mocht je problemen ervaren laat het ons dan aub even weten.

Aanrader?

Is het een aanrader om Varnish toe te voegen? Eigenlijk altijd is het antwoord daar ‘JA’ op.

Het is gewoon een ongekend sterk caching systeem wat op bijna iedere server stack / configuratie een goede toevoeging is. Je merkt na het toevoegen en spideren / primen van cache dat websites echt nog net dat een stukje sneller zijn dan dat ze al waren.

Maar verlies niet uit het oog dat er echt wel eens stukje configureren aan te pas komt als je varnish goed wilt inrichten zodat je ook daadwerkelijk kunt genieten van de voordelen die het systeem kan bieden. Denk daarbij aan zaken zoals een goede VCL file schrijven met daarin wat te doen bij een hit en miss, maar ook zaken zoals het invalideren / purgen van de cache en vanuit waar en hoe dit kan, maar ook hoe om te gaan met cookies etc. al met al zeker wel iets wat de nodige tijd kost (wat ook wel even het gebrek aan updates op deze blog verklaren kan denk ik).

Als je de kans / gelegenheid krijgt om het in te richten, zeker doen maar ga er echt even voor zitten.

Future Tease

Achter de schermen zijn we op PFSquad.NU nog met iets anders bezig wat we hopen deze komende maand echt volledig op te kunnen leveren. We willen daarover op dit moment nog niet al teveel kwijt. Wel kan ik je zeggen dat we een redelijk aantal zaken anders doen dan voorheen en dat we de afgelopen tijd ook een aantal TB in de cloud hebben gezet.

Maar meer laat ik even niet los, dat lezen jullie tzt wel hier en natuurlijk op PFSquad.NU!

Update 15-08-2017 – 19:20

Door de server issues die we gehad hebben heb ik me zojuist nog een stukje meer in Varnish kunnen verdiepen. We zaten namelijk nog met een probleem; We maken gebruik van een combinatie van Cloudflare en MaxCDN wat betekent dat de verzoeken niet altijd vanuit het origin ip komen. Hierdoor liep het mis bij het kunnen purgen van de Varnish Cache wat toch wel handig is om  te kunnen doen. 

Maar ook dat is nu iets wat (in ieder geval alvast op onze blog) opgelost is. Altijd leerzaam die server issue zal ik maar zeggen.

Laat een Reactie achter

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.