martie 14, 2022

Cum se configurează un server cache lac – Swapps

Site-urile web cu trafic ridicat trebuie să servească același conținut de mai multe ori utilizatorilor diferiți. În funcție de aplicația dvs., poate fi foarte scump (resurse vorbind) să procesați toată logica aplicației de fiecare dată când un utilizator solicită pagina web. Aici este locul unde vine cache server, puteți doar o copie temporară a salva conținutul în memorie și servi acest conținut pentru toți utilizatorii.

lac este mare pentru a cache conținut pe partea de server. În esență, ar trebui să cache conținut HTML, dar, de asemenea, puteți cache fișiere: CSS, JS, imagini, documente.

sună bine, dar adevărul este că, în mod implicit, lacul nu face nimic, sau cel puțin ați putea pierde avantajele acestui software, iar documentația nu ajută, așa că am scris acest articol, astfel încât să puteți beneficia cel mai mult de lac. Voi explica unde și cum să configurați, să testați și să implementați un server de cache lac pentru aplicația dvs.

în scopuri demonstrative, să presupunem că avem 2 instanțe de server pentru serverele noastre de aplicații și cache cu următoarele adrese IP locale:

  • server de aplicații: 192.168.1.2
  • server Cache: 192.168.1.3

instalați lac de memorie cache server

în acest scop articole, vom instala un Ubuntu server 16.04 cu lac 4.0. Pentru a instala lac, trebuie doar să rulați:

sudo apt install varnish

voi instala lac 4.0, și de acum încolo va fi acordând o atenție deosebită 2 fișiere specifice:/etc/default/varnish și /etc/varnish/default.vcl

backend configurare

primul lucru ce trebuie să faceți este să configurați backend sau instrui lac în cazul în care aplicația web va trăi:

  • care este numele gazdei sau adresa IP?
  • care este portul?

pentru a defini că trebuie să mergeți și să actualizați fișierul /etc/varnish/default.vcl și să găsiți următoarea secțiune, care va fi configurată pentru exemplul nostru scop ca acesta:

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

acesta va instrui lac pentru a asculta aplicația care rulează la IP 192.168.1.2 și portul 8080.

configurați demonul de lac

primul lucru pe care trebuie să-l definiți unde va rula Lacul. Îl vom lăsa să ruleze pe portul implicit 6081. Este foarte obișnuit să rulați acest daemon pe porturile 80 și 443 pentru SSL, dar preferăm să punem NGINX în față și să-l lăsăm să participe la trafic.

în ceea ce privește memoria, o instalare lac gol va rula cu 256MB de memorie, care ar putea fi suficient pentru unele aplicații, dar pentru aplicații de mare trafic, s-ar putea să nu fie suficient, și mai mult dacă ați rezervat un server dedicat pentru cache numai.

puteți schimba asta la:

/etc/default/varnish

găsiți următoarea secțiune:

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

pentru a actualiza cantitatea de RAM, schimbați ultima linie în care scrie 256m și actualizați pentru valoarea necesară, în cazul meu, vreau să dedic 3 GB de RAM la lac, astfel încât blocul va arăta:

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

validați că rulează cu configurația potrivită

confirmați că rulează conform așteptărilor, verificați procesul ps aux | grep varnish și ar trebui să vedeți ceva de genul:

/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 lac de pornire daemon în unele instalații Ubuntu

am detectat un bug în cazul în care serviciul nu este în urma instrucțiunile definite la fișier lac și s-ar putea solicita să editați serviciul de pornire.

pentru a face acest lucru deschideți și editați fișierul

/lib/systemd/system/varnish.service

și veți vedea ceva de genul asta:

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

pentru a face să funcționeze, va trebui să actualizați secțiunea din interiorul liniei ExecStart și să o înlocuiți pentru configurația necesară:

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

după ce ați terminat cu asta, trebuie să reîncărcați daemonul de serviciu: systemctl daemon-reload și apoi reporniți lac.

cum se configurează pentru a curăța memoria Cache

există 2 moduri de a șterge memoria cache a lacului:

  • reporniți serviciul de lac.
  • trimite o cerere de purjare la serverul de lac.

reporniți Lacul este vorba doar de repornirea serviciului:

sudo service varnish restart

dar ceea ce avem cu adevărat nevoie este să putem trimite o cerere de purjare de la serverul de aplicații. Acesta poate fi realizat prin instruirea server pentru a curăța o anumită cale sau toate dintre ele. Prin utilizarea CURL, cererea ar arata ca:

curl -X PURGE http://192.168.1.3:6181

în mod implicit, lacul nu va permite o solicitare de purjare de la un server extern, deci trebuie să permiteți solicitări de la serverul de aplicații. Pentru a face acest lucru, mergeți și editați /etc/varnish/default.vcl și găsiți secțiunea purge unde trebuie să adăugați adresa IP a serverului de aplicații:

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

cum să depanați purjarea

va trebui să validați că totul funcționează corect. Pentru a face acest lucru, puteți utiliza următoarea comandă:

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

apoi, puteți trimite o cerere de purjare și ar trebui să vedeți ceva de genul asta pentru a confirma că cererea de purjare a fost primită:

* << 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

o stare de 200 OK înseamnă că totul a mers bine și lacul a șters memoria cache pentru adresa URL solicitată și ar trebui să aveți tot ce aveți nevoie pentru a începe să memorați în cache conținutul de pe serverul dvs.

următorul pas dacă nu ați făcut este să configurați regulile conținutului pe care doriți să îl cache și care nu, dar acesta este un subiect pentru o altă postare pe blog și va depinde în mare măsură de tipul de aplicație, cadru sau CMS utilizat.

Lasă un răspuns

Adresa ta de email nu va fi publicată.