Jak nastavit lak cache server-Swapps
webové stránky s vysokým provozem musí sloužit stejný obsah několikrát různým uživatelům. V závislosti na vaší aplikaci může být opravdu drahé (zdroje mluví) zpracovat veškerou logiku aplikace pokaždé, když uživatel požaduje webovou stránku. Zde je místo, kde Server caching přichází, stačí uložit dočasnou kopii obsahu v paměti a slouží tento obsah všem uživatelům.
lak je skvělý pro ukládání obsahu do mezipaměti na straně serveru. V podstatě byste měli cache HTML obsah, ale můžete také cache soubory: CSS, JS, obrázky, dokumenty.
Zní to dobře, ale pravdou je, že ve výchozím nastavení lak nedělá nic, nebo alespoň byste mohli plýtvat výhodami tohoto softwaru a dokumentace nepomůže,takže jsem napsal tento článek, takže můžete získat co největší užitek z laku. Vysvětlím, kde a jak nakonfigurovat, otestovat a nasadit Server mezipaměti laku pro vaši aplikaci.
pro demonstrační účely řekněme, že máme 2 serverové instance pro naše servery aplikací a mezipaměti s následujícími lokálními IP adresami:
- App Server: 192.168.1.2
- Cache Server: 192.168.1.3
nainstalovat lak Cache Server
pro tento účel článků, budeme instalovat Ubuntu server 16.04 s lakem 4.0. Chcete-li nainstalovat lak, stačí spustit:
sudo apt install varnish
nainstaluji lak 4.0 a od této chvíle budete věnovat zvláštní pozornost 2 konkrétním souborům:/etc/default/varnish
a /etc/varnish/default.vcl
konfigurace backendu
první věc, kterou musíte udělat, je nakonfigurovat backend nebo instruovat lak, kde bude webová aplikace žít:
- jaký je název hostitele nebo IP adresa?
- co je port?
Chcete-li definovat, že musíte jít a aktualizovat soubor /etc/varnish/default.vcl
a najít následující část, která bude nakonfigurována pro náš příklad účel, jako je tento:
backend default { .host = "192.168.1.2"; .port = "8080"; .first_byte_timeout = 60s; .connect_timeout = 300s;}
instruuje lak, aby poslouchal aplikaci běžící na IP 192.168.1.2 a portu 8080.
nakonfigurujte démona laku
první věc, kterou musíte definovat, kde bude lak běžet. Necháme jej běžet na výchozím portu 6081. Je velmi běžné spouštět tohoto démona na portech 80 a 443 pro SSL, ale raději dáme NGINX dopředu a necháme ho, aby se zúčastnil provozu.
pokud jde o paměť, instalace prázdného laku poběží s 256MB paměti, což by mohlo stačit pro některé aplikace, ale pro aplikace s vysokým provozem to nemusí stačit, a více, pokud jste rezervovali vyhrazený server pouze pro mezipaměť.
můžete to změnit na:
/etc/default/varnish
najděte následující část:
DAEMON_OPTS="-a :6081 \-T localhost:6082 \-f /etc/varnish/default.vcl \-S /etc/varnish/secret \-s malloc,256m"
Chcete-li aktualizovat množství paměti RAM, změníte poslední řádek, kde se říká 256m a aktualizujete požadovanou hodnotu, v mém případě chci věnovat 3GB paměti RAM laku, takže blok bude vypadat:
DAEMON_OPTS="-a :6081 \-T localhost:6082 \-f /etc/varnish/default.vcl \-S /etc/varnish/secret \-s malloc,3G"
ověřte, že běží se správnou konfigurací
potvrďte, že běží podle očekávání, zkontrolujte proces ps aux | grep varnish
a měli byste vidět něco jako:
/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T :6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,3G
Oprava lakového spouštěcího démona v některých instalacích Ubuntu
zjistili jsme chybu, kdy služba nedodržuje pokyny definované v souboru laku a možná budete muset upravit spouštěcí službu.
Chcete-li to provést, otevřete a upravte soubor
/lib/systemd/system/varnish.service
a uvidíte něco takového:
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
aby to fungovalo, budete muset aktualizovat sekci uvnitř řádku ExecStart a nahradit ji pro požadovanou konfiguraci:
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
poté, co jste s tím hotovi, musíte znovu načíst démona služby: systemctl daemon-reload
a poté restartujte lak.
jak nakonfigurovat vymazání mezipaměti
existují 2 způsoby, jak vymazat mezipaměť laku:
- restartujte službu laku.
- odeslat požadavek na očištění na lak serveru.
restartovat lak je to jen o restartování služby:
sudo service varnish restart
ale to, co opravdu potřebujeme, je být schopen odeslat požadavek na očištění z aplikačního serveru. Toho lze dosáhnout instrukcí serveru, aby vyčistil konkrétní cestu nebo všechny z nich. Při použití CURL, požadavek bude vypadat:
curl -X PURGE http://192.168.1.3:6181
ve výchozím nastavení lak neumožňuje požadavek na vyčištění z externího serveru, takže je třeba povolit požadavky z aplikačního serveru. Chcete-li tak učinit, přejděte a upravte /etc/varnish/default.vcl
a najděte sekci očištění, kde je třeba přidat IP adresu app serveru:
acl purge { "localhost"; "127.0.0.1"; "192.168.1.2"/24;}
jak ladit vyčištění
budete muset ověřit, že vše funguje správně. K tomu můžete použít následující příkaz:
varnishlog -g request -q 'ReqMethod eq "PURGE"'
pak můžete poslat žádost o očištění a měli byste vidět něco takového, abyste potvrdili, že byla přijata žádost o očištění:
* << 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
stav 200 OK znamená, že všechno šlo dobře a lak vymazal mezipaměť pro požadovanou adresu URL a měli byste mít vše, co potřebujete k zahájení ukládání do mezipaměti na vašem serveru.
dalším krokem, pokud jste tak neučinili, je nakonfigurovat pravidla, jaký obsah chcete ukládat do mezipaměti a který Ne, ale to je téma pro jiný blogový příspěvek a bude velmi záviset na typu použité aplikace, rámce nebo CMS.