mars 14, 2022

Hur man ställer in en lack cache server-Swapps

webbplatser med hög trafik måste tjäna samma innehåll flera gånger till olika användare. Beroende på din ansökan, kan det vara riktigt dyrt (resurser talar) för att bearbeta alla program logik varje gång en användare begär webbsida. Här är där server caching kommer, du kan bara spara tillfällig kopia av innehållet i minnet och servera detta innehåll till alla användare.

lack är bra att cache innehåll på serversidan. I huvudsak bör du cache HTML-innehåll men du kan också cache-filer: CSS, JS, bilder, dokument.

det låter bra, men sanningen är som standard lack gör ingenting, eller åtminstone du kan slösa fördelarna med denna mjukvara, och dokumentationen hjälper inte, så jag har skrivit den här artikeln, så att du kan få ut det mesta nytta av lack. Jag ska förklara var och hur du konfigurerar, testar och distribuerar en Lackcacheserver för din applikation.

för demonstrationsändamål, låt oss säga att vi har 2 serverinstanser för våra app-och cacheservrar med följande lokala IP-adresser:

  • App Server: 192.168.1.2
  • cacheserver: 192.168.1.3

installera lack Cache Server

för detta artiklar ändamål kommer vi att installera en Ubuntu server 16.04 med lack 4.0. För att installera lack behöver du bara springa:

sudo apt install varnish

Jag kommer att installera lack 4.0, och från och med nu kommer du att ägna särskild uppmärksamhet åt 2 specifika filer:/etc/default/varnish och /etc/varnish/default.vcl

Backend-konfiguration

det första du behöver göra är att konfigurera backend eller instruera lack där webbapplikationen kommer att leva:

  • vad är värdnamnet eller IP-adressen?
  • vad är porten?

för att definiera att du måste gå och uppdatera filen /etc/varnish/default.vcloch hitta följande avsnitt, som kommer att konfigureras för vårt exempeländamål så här:

backend default { .host = "192.168.1.2"; .port = "8080"; .first_byte_timeout = 60s; .connect_timeout = 300s;}

det kommer att instruera lack att lyssna på applikationen som körs på IP 192.168.1.2 och port 8080.

konfigurera Lackdemonen

det första du behöver definiera var lack ska köras. Vi kommer att lämna den igång på standardporten 6081. Det är mycket vanligt att köra den här demonen på port 80 och 443 för SSL, men vi föredrar att sätta NGINX i fronten och lämna den för att delta i trafiken.

när det gäller minnet kommer en lack blank-installation att köras med 256 MB minne, det kan räcka för vissa applikationer, men för appar med hög trafik kanske det inte räcker, och mer om du bara har reserverat en dedikerad server för cache.

du kan ändra det på:

/etc/default/varnish

hitta följande avsnitt:

DAEMON_OPTS="-a :6081 \-T localhost:6082 \-f /etc/varnish/default.vcl \-S /etc/varnish/secret \-s malloc,256m"

för att uppdatera mängden RAM, ändrar du den sista raden där det står 256m och uppdaterar för det önskade värdet, i mitt fall vill jag ägna 3 GB RAM till lack, så blocket kommer att se ut:

DAEMON_OPTS="-a :6081 \-T localhost:6082 \-f /etc/varnish/default.vcl \-S /etc/varnish/secret \-s malloc,3G"

validera det körs med rätt konfiguration

bekräfta att det körs som förväntat, kontrollera processen ps aux | grep varnishoch du bör se något liknande:

/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T :6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,3G

Fix lack startup daemon i vissa Ubuntu-installationer

vi har upptäckt ett fel där tjänsten inte följer instruktioner definierade i lackfilen och du kan behöva redigera starttjänsten.

för att göra det öppna och redigera filen

/lib/systemd/system/varnish.service

och du kommer att se något så här:

Description=Varnish HTTP acceleratorDocumentation=https://www.varnish-cache.org/docs/4.1/ man:varnishdType=simpleLimitNOFILE=131072LimitMEMLOCK=infinityExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T :6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256MExecReload=/usr/share/varnish/reload-vclProtectSystem=fullProtectHome=truePrivateTmp=truePrivateDevices=trueWantedBy=multi-user.target

för att få det att fungera måste du uppdatera avsnittet inuti raden ExecStart och ersätta det för önskad konfiguration:

ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T :6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,3G

när du är klar med det måste du ladda om servicedemonen: systemctl daemon-reload och starta sedan om lack.

så här konfigurerar du för att rensa Cache

det finns 2 sätt att rensa Lackcachen:

  • starta om Lacktjänsten.
  • skicka en RENSNINGSBEGÄRAN till lack server.

starta om lack det handlar bara om att starta om tjänsten:

sudo service varnish restart

men vad vi verkligen behöver är att kunna skicka en RENSNINGSFÖRFRÅGAN från applikationsservern. Det kan uppnås genom att instruera servern att rensa en specifik sökväg eller alla. Genom att använda CURL skulle begäran se ut:

curl -X PURGE http://192.168.1.3:6181

som standard tillåter lack inte en RENSNINGSBEGÄRAN från en extern server, så du måste tillåta förfrågningar från applikationsservern. För att göra det, gå och redigera /etc/varnish/default.vcloch hitta avsnittet purge där du behöver lägga till App-serverns IP-adress:

acl purge { "localhost"; "127.0.0.1"; "192.168.1.2"/24;}

så här felsöker du rensningen

du måste validera att allt fungerar korrekt. För att göra det kan du använda följande kommando:

varnishlog -g request -q 'ReqMethod eq "PURGE"'

då kan du skicka en RENSNINGSBEGÄRAN och du bör se något liknande för att bekräfta att RENSNINGSBEGÄRAN mottogs:

* << Request >> 1179851- Begin req 1179850 rxreq- ReqStart 192.168.195.197 39700- ReqMethod PURGE- ReqURL /.*- ReqProtocol HTTP/1.1- ReqHeader Host: swapps.com- ReqHeader User-Agent: W3 Total Cache- ReqHeader Connection: close- ReqHeader X-Forwarded-For: 192.168.195.197- VCL_call RECV- Timestamp Process: 1531199642.768541 0.000094 0.000094- RespHeader Date: Tue, 10 Jul 2018 05:14:02 GMT- RespHeader Server: Varnish- RespHeader X-Varnish: 1179851- RespProtocol HTTP/1.1- RespStatus 200- RespReason OK- RespReason Purged- End

en 200 OK-status betyder att allt gick bra och lack har rensat cachen för den begärda webbadressen, och du bör ha allt du behöver för att börja cacha innehåll på din server.

nästa steg om du inte har gjort är att konfigurera reglerna för vilket innehåll du vill cacha och vilket inte, men det är ämne för ett annat blogginlägg och det beror mycket på vilken typ av applikation, ramverk eller CMS som används.

Lämna ett svar

Din e-postadress kommer inte publiceras.