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.vcl
szerkeszté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.