Požadavky na objem dat, která má Internet přepravit, rostou daleko rychleji než
skutečné přepravní schopnosti Internetu. Budování nové infrastruktury není
přitom jedinou možností. Cílem tohoto článku je seznámit s principy činnosti a
se zásadami používání vyrovnávacích serverů pro WWW, tedy zařízení, které se
snaží nepříznivý trend zvrátit lepším využitím stávajících možností Internetu.
Dříve než se ponoříme do vlastího popisu si však uděláme krátkou jazykovou
odbočku. Poměrně nemotorný český termín "vyrovnávací server pro WWW" totiž
neoznačuje nic jiného než systém, který se v angličtině nazývá proxy-cache, v
české počítačové hantýrce pak cache-server nebo proxy-server. Můj bývalý kolega
Pavel Satrapa též razil termín WWW--silo, který sice výstižně zachycuje princip
činnosti, ale bohužel se neujal. V textu budou dále použity všechny uvedené
termíny (s výjimkou "sila") jako synonyma.
Kde je problém?
Největší bolestí současného Internetu je (a vždy bylo) zahlcení komunikačních
tras, zejména mezinárodních linek. Zatímco počet WWW serverů, WWW klientů a
objem přepravovaných dat exponenciálně roste, síť, která by měla zajistit
provoz mezi nimi, roste navzdory úsilí poskytovatelů Internetu daleko pomaleji.
S tím, jak se Internet více a více zahlcuje, stoupá nespokojenost a zklamání
uživatelů z neefektivity a nespolehlivosti síťové technologie.
Zásadním problémem je však to, že stávající sítě nejsou optimálně využity. V
současnosti drtivá většina WWW spojení prochází přes pomalé mezinárodní spoje.
Pokud bychom dokázali udržet komunikaci v rámci rychlých lokálních či národních
sítí, bylo by možné dosáhnout daleko lepších výsledků. WWW model, ve kterém je
jeden jediný zdroj informace (server) a mnoho čtenářů rozptýlených po celé
síti, proto není z hlediska využití přenosového pásma vůbec optimální. Kdyby se
dokumenty přiblížily čtenářům, nebylo by nutné je přenášet přímo ze vzdálených
serverů, ale stačilo by je přenést z nějakého bližšího "meziskladu". Takový
systém lze vytvořit použitím různě realizovaných vyrovnávacích pamětí,
proxy-cache serverů.
Princip činnosti
Vyrovnávací server pro WWW je tedy zařízení, které se snaží zmenšit objem dat
přenášených po Internetu službou WWW. Místo toho, aby WWW prohlížeče uživatelů
navazovaly přímá spojení se vzdálenými servery, předávají své dotazy blízkému
vyrovnávacímu serveru, který je za ně vyřídí a získané dokumenty jim předá
zpět. Současně s tím se získané dokumenty ukládají do vyrovnávací paměti
serveru; pokud se některá žádost o dokument (či obrázek nebo zvukovou stopu)
bude opakovat častěji, může vyrovnávací server použít lokální kopii a vyřídit
tak žádost rychleji, bez potřeby přenášet data ze vzdáleného WWW serveru.
Praktické zkušenosti ukazují, že s takovouto základní konfigurací není problém
ušetřit přibližně 40 % objemu provozu.
Hiearachie vztahů
V předchozím odstavci jsme hovořili o vyrovnávacím serveru bez vazeb na okolí
nenajde-li server ve své vyrovnávací paměti platnou kopii dokumentu, obrátí se
přímo na původní WWW server a použije tak pro získání dokumentu stejné
komunikační trasy, jakou by použil klient. Doba získání dokumentu je v takovém
případě stejná, odstraní se ale duplicitní dotazy. Hovoříme o ploché struktuře
cache-serverů.
Zajímavější situace však nastává v případě, kdy se vyrovnávací server v
situaci, kdy sám nemá platnou kopii dokumentu,
obrací na okolní vyrovnávací servery. Tím lze výrazně zvýšit pravděpodobnost,
že požadovaný dokument bude nalezen na některém blízkém vyrovnávacím serveru,
což zkrátí dobu přenosu dokumentu po síti.
Nejjednodušším případem je hierarchie cache-serverů: každý vyrovnávací server
je nastaven tak, aby se v případě nenalezení platné kopie dokumentu obrátil na
nadřazený cache-server. Ten může být rovněž nastaven tak, aby se obracel na
svého nadřízeného, atd. Dotaz od klienta, který do hierarchie vstoupí v
některém ze spodních pater, tak putuje stromem vztahů vzhůru tak dlouho, dokud
některý z cache-serverů nenalezne platnou kopii dokumentu, a nebo dokud dotaz
nedorazí až k vrcholu hierarchie tam již nelze vyřídit dotaz jinak než dotazem
na původní webový server.
Řetězení proxy-serverů do hierarchie má však několik vážných vad na kráse,
zejména co se týče spolehlivosti a efektivity. Z obrázku je zřejmé, že v
případě selhání některého cache-serveru dojde k odříznutí všech podřízených
cache-serverů a jejich uživatelů. Výpadek jednoho serveru tak může ohrozit
funkčnost velké části systému; výpadek serveru na vrcholu pak znemožní činnost
celé soustavy.
K nevýhodám patří též to, že klasická hierarchie předává požadavky pouze směrem
vzhůru, ale nikdy vodorovně či dolů. Pokud použijeme situaci znázorněnou na
obrázku, v případě, že platná kopie dokumentu požadovaného uživatelem
prostřednictvím serveru Cache-12 je uložena např. v Cache-21, nebude pro
vyřízení dotazu využita. Důvod je zřejmý dotaz putuje pouze směrem vzhůru a
tudíž neprojde přes cache-server, který má platnou kopii dokumentu.
K výhodám hierarchie naopak patří to, že neklade na zúčastněné cache-servery
žádné dodatečné komunikační nároky. Hierarchii je tak možné sestavit i z
prostých cache-serverů, které nepodporují možnost vytvořit sofistikovanější
strukturu, či ze serverů od různých dodavatelů, které spolu neumí jinak
komunikovat. Dvojúrovňovou hierarchii lze též využít tehdy, pokud existuje
pouze jediná rozumná cesta do Internetu (například komutovaná linka) a
realizace složitějších struktur by byla zbytečným luxusem.
Složitější struktura
cache-serverů
Složitější struktura vzájemně provázaných cache-serverů se nazývá cache-mesh.
Tvoří ji vyrovnávací servery s definovanými vzájemnými sousedskými vztahy.
Sousedící cache-servery se podle míry spolupráce dělí na dvě kategorie: na
rodiče a sourozence. Od sourozenců je možné získat pouze dokumenty, které již
mají ve vyrovnávacích pamětech. Rodič může též fungovat jako nadřazený server v
hierarchii vede přes něj cesta k nenalezeným dokumentům.
Vyrovnávací server, který obdrží žádost o dokument, jehož platná kopie není
uložena ve vyrovnávací paměti, se tedy nejprve zeptá svých sousedících
cache--serverů, zda ho náhodou nemají. Pokud od některého souseda obdrží
kladnou odpověď, získá dokument od něj (respektive od souseda, který jako první
kladně odpověděl). Pokud žádný soused požadovaný dokument nemá, obrátí se
server na některého z rodičů. Výběr rodičů je ovlivněn rychlostí jejich odezvy,
předkonfigurovanou důležitostí a dodatečnými pravidly, beroucími v potaz např.
geografické umístění cílového WWW serveru.
Výhodou uspořádání vyrovnávacích serverů do "propletence" je vysoká flexibilita
konfigurace. S pomocí sousedských vazeb je možné požadované dokumenty hledat na
blízkých vyrovnávacích serverech dříve, než dojde k jejich získání od zdroje.
Rodičovské vazby umožňují předávat neuspokojené požadavky dále strukturou
serverů; v případě selhání rodiče však nedojde k "odstřižení" všech jeho
podřízených, protože výpadek rodiče lze detekovat tím, že přestane odpovídat na
dotazy. V takovém případě podřízený server použije jiného rodiče (s nižší
preferencí), nebo získá dokument sám přímo od zdroje uživatel tedy selhání
nadřízeného serveru vůbec nezaznamená. Pravidla výběru rodičů umožňují
rozkládat dotazy na několik nadřízených serverů, což snižuje jejich zatížení a
zlepšuje odezvu.
Nevýhodou struktury cache-mesh, vyplývající z probíhající komunikace mezi
sousedícími servery, je nepatrné zvýšení počáteční prodlevy před získáním
dokumentu. Zatímco celková doba čekání na dokument je při použití této
struktury v průměru kratší než při jeho získání z WWW serveru, díky úvodní
komunikaci mezi cache-servery se před očima uživatele chvíli "nic neděje", což
subjektivně působí jako zpomalení přístupu k Webu. Některé vyrovnávací servery
(jmenovitě poslední verze populárního programu Squid) tomu předchází tím, že
spolupracující vyrovnávací servery si v předstihu vymění seznamy lokálně
uložených dokumentů. Tím se odbourá nutnost počátečního zjišťování, kteří že
sousedi mají kopii požadovaného dokumentu, a je možné se obrátit přímo na
souseda, v jehož seznamu tento dokument figuruje.
Stárnutí dokumentů
Každý cache-server, dříve než předloží klientovi nalezenou lokální kopii
dokumentu, musí nejprve zvážit, zda je tato kopie čerstvá. Ani uživatelé, ani
správci WWW serverů nemají zájem na tom, aby vyrovnávací servery stohovaly
dokumenty nekonečně dlouho chcete-li si k ranní kávě přečíst poslední novinky
ze světa, tři týdny stará titulní stránka vašeho oblíbeného internetového
deníku vás jistě příliš nepotěší. Musí tedy existovat nástroje, jimiž lze
stanovit dobu platnosti kopie.
V ideálním případě by měl určit životnost dokumentu sám jeho autor, protože je
nejvíce fundovaný o ní rozhodnout. Stačí, aby do záhlaví dokumentu uvedl
(pomocí HTTP hlavičky Expires), do kdy může být tento dokument ukládán ve
vyrovnávacích pamětech. Cache-servery pak mohou po celou dobu životnosti
používat bez obav lokální kopie; očekává se, že po vypršení platnosti bude
dokument vystřídán novějším. Toto schema se výborně hodí na pravidelně
publikované zprávy, bulletiny, internetové noviny a časopisy.
Jiný způsob, jakým mohou autoři ovlivnit ukládání dokumentů ve vyrovnávacích
pamětech, je stanovit maximální dobu, po kterou je povoleno ponechat dokument
na cache-serveru (HHTP hlavička Cache-Control: max-age). Po uplynutí této doby
je třeba znovu přenést dokument ze serveru. Použitím tohoto způsobu se odstraní
opakované přenosy dokumentu z WWW serveru a současně je zaručeno, že klienti
budou moci vidět změny provedené v dokumentu maximálně do doby specifikované
tímto parametrem.
Ve většině případů však autoři bohužel životnost svého dokumentu neuvádějí.
Vyrovnávací servery si proto s ověřením čerstvosti musí poradit po svém. Často
používanou metodou (a nutno říci, že rozumnou), je určení morálního stáří
dokumentu. Morální stáří se počítá jako poměr mezi dobou, kterou dokument
strávil ve vyrovnávací paměti, a celkovým stářím dokumentu. Pokud je tento
poměr menší než hodnota určená v konfiguraci vyrovnávacího serveru, považuje se
dokument za čerstvý, v opačném případě za prošlý. Tím je zajištěno, že často se
obměňující dokumenty stráví ve vyrovnávací paměti jen chvilku, zatímco ty
neměnné mohou být uloženy podstatně déle (viz tabulka na následující straně).
Zjistí-li vyrovnávací server, že jeho kopie dokumentu není čerstvá, pokusí se
přímo na původním WWW serveru ještě ověřit, zda se originál dokumentu změnil od
doby jeho přenesení na vyrovnávací server (dotazem s hlavičkou
If-Modified-Since). Pokud se dokument od přenesení nezměnil, WWW server jen
krátce odpoví "dokument nezměněn"; vyrovnávací server tak může předložit
klientovi lokální kopii dokumentu, neboť její čerstvost právě ověřil u
autoritativního zdroje. Pokud je na webovém serveru vystavena nová verze
dokumentu, cache-server ji přenese, předloží klientovi a uloží si ji coby
čerstvou do své vyrovnávací paměti.
Jak na to?
Zřízení vlastního cache-serveru není složité volně dostupný je např. program
Squid, na trhu jsou též k dispozici komerční implementace. Zdálo by se tedy, že
masovému nasazení cache-serverů nestojí nic v cestě. Ale...
Problémy
Mají-li být vyrovnávací servery efektivní, je nutné, aby je využívalo co
nejvíce uživatelů. Konfigurace použití vyrovnávacích serverů v současných
prohlížečích je triviální, zisk z jejich používání nesporný; přesto řada
uživatelů nebude ochotna cache-servery používat možná to nedovedou, možná jsou
pohodlní, možná mají principiální výhrady proti tomu, aby jejich komunikace se
světem procházela více systémy, než je nutné.
Stejně tak poskytovatelé obsahu, tedy správci WWW serverů, nejsou vždy z
používání vyrovnávacích serverů nadšeni. Cache-servery sice snižují zátěž
jejich webových serverů, ale současně ovlivňují statistiky přístupů a reklam,
na nichž závisí život komerčně provozovaných serverů.
Uživatelé
Základním úkonem, který musí každý uživatel provést, je nastavit svůj WWW
prohlížeč tak, aby směroval své požadavky na vyrovnávací server. V optimálním
případě by měl být jeho prohlížeč přednastaven správcem sítě, či by se
nastavení mělo provést automaticky po instalaci programů pro připojení na
Internet. Někdy si však musí uživatel nastavit přístup k vyrovnávacímu serveru
ručně. Je to možné provést hned několika způsoby.
První, základní způsob, jak
nastavit WWW prohlížeč, je ručně ho nasměrovat na vyrovnávací server uvedením
jeho adresy a portu. V grafických prohlížečích je tato volba zpravidla pod
volbou "Připojení"; je třeba vyplnit položky obsahující adresu vyrovnávacího
serveru a port, na kterém server běží (zpravidla se používají čísla portů 3128,
8080 nebo 81) oba tyto údaje by měl dát uživatelům k dispozici správce sítě
nebo poskytovatel internetového připojení.
Webový prohlížeč se tak vlastně stává nejnižším uzlem hierarchie cache-serverů,
přičemž uvedený vyrovnávací server se stává jeho nadřízeným. Druhý, lepší
způsob, jak lze nakonfigurovat WWW prohlížeč, spočívá v takzvané
autokonfiguraci. Do nastavení WWW prohlížeče se zapíše lokátor URL, který
ukazuje na soubor s jednoduchým programem v JavaScriptu. Před tím, než začne
prohlížeč komunikovat s Internetem, si nejprve načte tento program z WWW
serveru. Pro každý požadovaný dokument pak pomocí tohoto programu určí, na
který vyrovnávací server se má obrátit. Tato metoda je výhodná hned z několika
důvodů: především, uživatelé si budou pamatovat URL autokonfiguračního programu
lépe než jméno cache-serveru a číslo patřičného portu. Je též možno centrálně
měnit způsob používání cache-serveru: zatímco např. při změně cache-serveru by
u ručního způsobu nastavení bylo nutné změnit nastavení všech prohlížečů, u
autokonfigurace stačí změnit jediný soubor autokonfigurační program. Dále je
možné napsat autokonfigurační skript tak, aby v případě výpadku jednoho
cache-serveru začal automaticky používat jiný, a to zcela samočinně. Konečně,
je možné vytvořit i takový skript, který automaticky rozkládá zátěž na několik
vyrovnávacích serverů.
Třetí způsob, jak přesměrovat WWW dotazy na vyrovnávací server, se nazývá
transparentní přesměrování. To se odehrává bez aktivní účasti (a často i bez
vědomí) uživatele. Ve WWW prohlížečích není při tomto způsobu potřeba nic
zapínat ani dopisovat. Přesměrování totiž probíhá zcela samočinně na
směrovačích poskytovatele přístupu k Internetu. Tím je možné bez další
administrativní námahy zvýšit počet uživatelů využívajících cache-server;
výhodou i nevýhodou této metody je, že před ní není úniku.
Použití vyrovnávacích serverů může ale v některých případech komplikovat
uživatelům život. Nejtypičtějším příkladem je přístup na placené komerční WWW
servery. Některé si totiž kromě přístupového jména a hesla uživatele pamatují i
adresu počítače, ze kterého je povolen přístup při použití vyrovnávacího
serveru však bude se serverem komunikovat nikoliv počítač uživatele, ale
cache-server, což může způsobit odmítnutí přístupu. Ve většině případů se dají
tyto problému řešit buď dohodou se správcem WWW serveru, nebo změnou nastavení
prohlížeče tak, aby se provoz s takovým WWW serverem nesměroval přes
vyrovnávací server.
Vzácně též může dojít k tomu, že do vyrovnávací paměti cache--serveru se uloží
neúplná kopie dokumentu. To se může stát v situaci, kdy cache-server komunikuje
se serverem, který neumí před přenosem dat oznámit jejich celkovou délku, a
následně v průběhu přenosu dojde k rozpadu spojení. Zkrácená verze dokumentu
potom bude opakovaně předkládána uživatelům coby autentická lokální kopie. V
takové situaci obvykle stačí, aby kterýkoliv z uživatelů stiskl ve svém
prohlížeči Refresh/Reload; nově přenesená úplná kopie stránky se pak ve
vyrovnávací paměti uloží namísto té zkrácené, a vše zase bude fungovat správně.
Poskytovatelé obsahu
Autoři WWW stránek a správci webových serverů mají sami největší šanci ovlivnit
způsob ukládaní svých dokumentů ve vyrovnávacích serverech. Cache-servery
snižují zatížení populárních WWW serverů a přetížených komunikačních linek k
nim vedoucích, na druhou stranu však mohou zkreslovat statistické údaje, nutné
pro komerční provoz. K všeobecné spokojenosti čtenářů i správců ve většině
případů stačí vhodně nastavit údaje o povolení či zákazu ukládát dokumenty na
cache-serverech.
Nejtvrdším nástrojem, který mají poskytovatelé obsahu k dispozici, je úplný
zákaz ukládání dokumentu ve vyrovnávacích pamětech cache-serverů i WWW
prohlížečů: použití HTTP hlavičky Pragma: no-cache. Nejpřípadnějšími kandidáty
pro ni jsou výstupy z CGI nebo ASP skriptů, které se mění s každým dotazem,
generátory odkazů pro reklamní proužky a další. Je vhodné podotknout, že
většina vyrovnávacích serverů i bez použití této hlavičky neukládá dokumenty, v
jejichž URL se buď vyskytuje řetězec "cgi-bin" nebo znak "?", nebo obsahují
cookies, což jsou typické příznaky dynamicky generovaných stránek.
O možnosti řídit dobu platnosti a maximální dobu ukládání pomocí HTTP hlaviček
jsem se již zmínil v souvislosti s určováním čerstvosti dokumentů. Právě v
uvážlivém používání těchto hlaviček leží skryt hlavní přínos vyrovnávacích
serverů: často měnící se dokumenty je možno uložit jen na krátkou dobu,
statické grafické prvky ale na mnohem delší, titulní stránka se nezmění do
zítřka, ceník je aktuální až do konce měsíce...
Spolu s aktivním úsilím autorů by WWW servery měly dodržovat několik dalších
pravidel usnadňujících spolupráci s vyrovnávacími servery. Jejich vyčerpávající
seznam je uveden na stránkách Cache Now!, které popularizují rozšíření této
technologie. Uvedu alespoň pár těch nejdůležitějších:
WWW servery by měly mít správně nastavené a se sítí synchronizované vnitřní
hodiny, aby bylo možné správně určit čas, kdy byl dokument vytvořen.
Dynamické dokumenty generované CGI nebo ASP skripty by měly být cache-friendly,
tj. vybavené platnými hlavičkami o životnosti dokumentu a o poslední modifikaci
údajů. Cesta k nim by neměla obsahovat řetězec cgi-bin, a měly by se vyvarovat
triků s obměnami obsahu v závislosti na typu WWW prohlížeče.
Pokud WWW server používá proužkovou reklamu nebo obměňující se grafické motivy,
je velmi vhodné povolit ukládání
ve vyrovnávacích pamětech pro všechny grafické prvky; ukládat se nebude pouze
dynamicky generovaný odkaz na grafiku.
WWW servery by měly omezit používání cookies.
Caching v tuzemsku
Vyrovnávací servery se v Čechách již několik let používají, a to v poměrně
širokém měřítku. Jejich nasazení však většinou neprovázela patřičná publicita
ze stran poskytovatelů. O existujících strukturách cache-serverů se toho proto
ví poměrně málo.
Asi největší soustava cache-serverů v ČR je realizována na akademické síti
TEN-34 CZ. Tvoří ji devět vyrovnávacích serverů umístěných v osmi velkých
univerzitních městech České republiky, propojených linkami o rychlosti 34 a 155
Mb/s. WWW komunikace univerzit, účastnících se na tomto projektu, je směrována
(často pomocí transparentního přesměrování) na jednotlivé vyrovnávací servery.
Díky vysokorychlostní síti se celá soustava chová jako jeden velký
distribuovaný server. Cílem vytvoření této soustavy bylo pozorovat její chování
pod reálnou zátěží, optimalizovat ji modifikací vztahů mezi jednotlivými
servery, a následné vypracování vědecké dokumentace, popisující provoz a
chování takovéto distribuované struktury. Technické parametry této struktury
serverů jsou poměrně úctyhodné celkový diskový prostor, vyhrazený pro
vyrovnávací paměti, překračuje 150 GB, přenesený objem dat se pohybuje v řádech
desítek gigabajtů za den. Dosažená úspěšnost úspory dat se pohybuje kolem 50 %.
I komerční poskytovatelé Internetu si uvědomují, jaký přínos pro ně vyrovnávací
servery znamenají, a proto téměř všichni vytvořili více či méně košaté
soustavy, přes které směrují provoz svůj i svých zákazníků. Možnost vzájemné
komunikace cache-serverů a sdílení dat ve vyrovnávacích pamětech otvírá nové
možnosti ve spolupráci jinak ostře konkurenčních společností.
8 2820 / pah