március 14, 2022

Hogyan állítsunk be egy lakk gyorsítótár-kiszolgálót-Swapps

a nagy forgalmú webhelyeknek ugyanazt a tartalmat többször kell kiszolgálniuk a különböző felhasználók számára. Attól függően, hogy az alkalmazás, akkor nagyon drága (források beszél) feldolgozni az összes alkalmazás logika minden alkalommal, amikor a felhasználó kéri weboldal. Itt van, ahol a kiszolgáló gyorsítótárazása jön, csak a memóriában lévő tartalom ideiglenes másolatát mentheti, és ezt a tartalmat minden felhasználó számára kiszolgálhatja.

a lakk nagyszerű a tartalom gyorsítótárazásához a szerver oldalon. Lényegében gyorsítótáraznia kell a HTML tartalmat, de fájlokat is gyorsítótárazhat: CSS, JS, képek, dokumentumok.

jól hangzik, de az igazság az, hogy alapértelmezés szerint a lakk nem tesz semmit, vagy legalábbis pazarolhatja ennek a szoftvernek az előnyeit, a dokumentáció pedig nem segít, ezért írtam ezt a cikket, így a lehető legtöbbet hozhatja ki a lakk. Elmagyarázom, hol és hogyan kell konfigurálni, tesztelni és telepíteni a lakk gyorsítótár-kiszolgálót az alkalmazáshoz.

demonstrációs célokra tegyük fel, hogy 2 szerverpéldányunk van az alkalmazás-és gyorsítótár-kiszolgálóinkhoz a következő helyi IP-címekkel:

  • alkalmazás szerver: 192.168.1.2
  • gyorsítótár-kiszolgáló: 192.168.1.3

telepítse a lakk gyorsítótár-kiszolgálót

erre a cikkre egy Ubuntu server 16.04-et telepítünk a lakk 4.0-val. A lakk telepítéséhez csak futtatnia kell:

sudo apt install varnish

telepítem a lakk 4.0-t, és mostantól különös figyelmet fordít 2 konkrét fájlra:/etc/default/varnishés /etc/varnish/default.vcl

Háttérkonfiguráció

az első dolog, amit meg kell tennie, hogy konfigurálja a háttérkonfigurációt, vagy utasítsa a lakkot, ahol a webes alkalmazás élni fog:

  • mi a hosztnév vagy IP-cím?
  • mi a kikötő?

annak meghatározásához, hogy meg kell menni, és frissítse a fájlt /etc/varnish/default.vcl, és keresse meg a következő részben, hogy lesz beállítva a példa célra, mint ez:

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

ez utasítja a lakkot, hogy hallgassa meg az IP 192.168.1.2 és a 8080 porton futó alkalmazást.

állítsa be a lakk démont

az első dolog, amit meg kell határoznia, hogy a lakk hol fog futni. Az alapértelmezett 6081 porton hagyjuk futni. Nagyon gyakori, hogy ezt a démont a 80-as és 443-as porton futtatjuk SSL-re, de inkább az Nginx-et helyezzük elöl, és hagyjuk, hogy részt vegyen a forgalomban.

ami a memóriát illeti, a lakk üres telepítés 256 MB memóriával fog futni, ami elég lehet egyes alkalmazásokhoz, de a nagy forgalmú alkalmazásokhoz, lehet, hogy nem elég, és még több, ha csak egy dedikált szervert tart fenn a gyorsítótárhoz.

meg lehet változtatni, hogy a:

/etc/default/varnish

keresse meg a következő részt:

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

a RAM mennyiségének frissítéséhez változtassa meg az utolsó sort, ahol azt mondja, hogy 256m és frissítse a szükséges értéket, az én esetemben 3 GB RAM-ot akarok szentelni a lakknak, így a blokk úgy fog kinézni:

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

ellenőrizze, hogy a megfelelő konfigurációval fut-e

ellenőrizze, hogy a várt módon fut-e, ellenőrizze a folyamatot ps aux | grep varnishés valami hasonlót kell látnia:

/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 lakk indítási démon egyes Ubuntu telepítésekben

hibát észleltünk, amikor a szolgáltatás nem követi a lakk fájlban meghatározott utasításokat, ezért szükség lehet az indítási szolgáltatás szerkesztésére.

ehhez nyissa meg és szerkessze a fájlt

/lib/systemd/system/varnish.service

és valami ilyesmit fog látni:

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

annak érdekében, hogy működjön, frissítenie kell az ExecStart soron belüli szakaszt, majd ki kell cserélnie a szükséges konfigurációra:

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

miután ezzel végzett, újra be kell töltenie a szolgáltatási démont: systemctl daemon-reload, majd indítsa újra a lakkot.

hogyan kell beállítani a gyorsítótár kiürítését

a lakk gyorsítótár törlésének 2 módja van:

  • indítsa újra a lakk szolgáltatást.
  • tisztítási kérelem küldése a Lakkszervernek.

indítsa újra a lakkot ez csak a szolgáltatás újraindításáról szól:

sudo service varnish restart

de amire igazán szükségünk van, az az, hogy el tudjuk küldeni a tisztítási kérelmet az alkalmazáskiszolgálóról. Ez úgy érhető el, hogy utasítja a szervert egy adott útvonal vagy mindegyik megtisztítására. A CURL használatával a kérés így néz ki:

curl -X PURGE http://192.168.1.3:6181

alapértelmezés szerint a Varnish nem engedélyezi a külső kiszolgálóról érkező törlési kérelmeket, ezért engedélyeznie kell az alkalmazáskiszolgálótól érkező kéréseket. Ehhez keresse meg a /etc/varnish/default.vclszerkesztést, és keresse meg a tisztítás részt, ahol hozzá kell adnia az alkalmazáskiszolgáló IP-címét:

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

a tisztítás hibakeresése

ellenőriznie kell, hogy minden megfelelően működik-e. Ehhez használhatja a következő parancsot:

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

ezután küldhet egy tisztítási kérelmet, és ehhez hasonlót kell látnia annak megerősítéséhez, hogy a tisztítási kérelem érkezett:

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

a 200 OK állapot azt jelenti, hogy minden rendben ment, és a lakk törölte a kért URL gyorsítótárát, és mindent meg kell adnia a tartalom gyorsítótárazásához a szerveren.

a következő lépés, ha még nem tette meg, hogy konfigurálja a szabályokat, hogy milyen tartalmat szeretne gyorsítótárazni, és melyik nem, de ez egy másik blogbejegyzés témája, és ez nagymértékben függ az alkalmazott alkalmazás, keretrendszer vagy CMS típusától.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.