\"/
\"/ \"/    

Vyrovnávací WWW servery

Bohuslav Moučka, ÚVT MU
Ročník IX - číslo 3, únor 1999
Citace: B. Moučka. Vyrovnávací WWW servery. Zpravodaj ÚVT MU. ISSN 1212-0901, 1999, roč. IX, č. 3, s. 9-12.
Tematické zařazení: Webové zdroje a technologie
 předchozí článek | následující článek 

Vyrovnávací WWW server (v angličtině WWW proxy cache) je zařízení, které se snaží zmenšit objem dat přenášených službou WWW po Internetu. Používá k tomu osvědčenou technologii vyrovnávacích pamětí: zapamatuje si odpověď na dotaz, a pokud se v dohledné době stejný dotaz zopakuje, poskytne rovnou uloženou odpověď. Dochází tak k významné úspoře objemu přenášených informací, která při dostatečně dimenzovaném serveru překračuje 50%. Pro vyrovnávací servery se nejčastěji používá program Squid. Zařazení vyrovnávacího serveru však přináší i jistá rizika. Ta nejzávažnější jsou dvě:

  1. Nebezpečí neaktuálních dokumentů. Mohlo se stát, že dokument byl od doby svého uložení změněn a vyrovnávací server poskytne klientovi verzi, která již není platná. K řešení tohoto problému nabízí přenosový protokol HTTP mechanismus, jak může odesílající WWW server stanovit dobu aktuálnosti daného dokumentu. Pokud tak neučiní, může si vyrovnávací server stanovit dobu aktuálnosti sám. Algoritmy pro určení doby aktuálnosti dokumentu jsou v současné době již na velmi dobré úrovni a pravděpodobnost tohoto nežádoucího jevu minimalizují.
  2. Nebezpečí nesprávných dokumentů. Jestliže odesílající server pod stejným URL odesílá různé verze dokumentů v závislosti na složení hlaviček z dotazu, nebudou tyto variace vyrovnávacím serverem rozpoznány. Typickým příkladem je změna kódování češtiny podle charakteru klienta. Může se pak stát, že vyrovnávací server poskytne jinou verzi dokumentu, než by poslal původní server. V tomto směru nabízí protokol HTTP prostředky pro zákaz ukládání dokumentu ve vyrovnávacích pamětech. Novější verze navíc poskytuje zdokonalené mechanismy pro identifikaci dokumentu a požaduje, aby si vyrovnávací server uchovával i hlavičky dotazu, který vedl k uložení dokumentu. Potom může snadno zjistit, že v dotazu došlo k jistým změnám a zachovat se podle toho.

Squid a stáří objektů

Z hlediska vyrovnávacího serveru je nejsnazší je-li součástí odpovědi z WWW serveru hlavička Expires. V takovém případě je platnost dotyčného objektu jasně stanovena. Drtivá většina odpovědí však tuto hlavičku postrádá. Tehdy není podle HTTP doba aktuálnosti objektu omezena a je ponecháno ke zvážení vyrovnávacímu serveru, jak dlouho jej bude ukládat.

Squid při žádosti o určitý objekt provede níže popsané kroky (tzv. test čerstvosti), aby stanovil jeho stav. Může být dvojí. Buď je objekt čerstvý a v takovém případě jej rovnou odešle klientovi. Druhým možným výsledkem je, že objekt posoudí jako prošlý. V takovém případě je považován za neaktuální a nelze jej odeslat. Squid musí ověřit u původního WWW serveru, zda nedošlo k jeho změně. Proto pošle podmíněný dotaz (opatřený hlavičkou If-Modified-Since) a obdrží buď potvrzení platnosti nebo změněnou verzi objektu. V každém případě zjistí, jak si dotyčný objekt stojí právě teď a co má poslat klientovi. Důležitým údajem pro posouzení čerstvosti objektu je jeho Stáří. Jedná se o dobu, která uplynula od uložení objektu do vyrovnávací paměti do současnosti. S touto hodnotou se pracuje prakticky ve všech krocích algoritmu.

Další významné informace pocházejí z konfiguračních příkazů refresh_rate, které jsou obsaženy v souboru squid.conf. Podle lokátoru objektu se zjistí, který z těchto příkazů použít. V něm pak Squid najde tři údaje:

Test čerstvosti je vyjádřen posloupností kroků. V každém z nich dojde k vyhodnocení určitých podmínek, a pokud dojde k jejich naplnění, Squid rozhodne o čerstvosti objektu. V opačném případě pokračuje dalším krokem. Uplatní se tedy první krok, jehož podmínka je splněna:

Popsaný algoritmus pro posuzování čerstvosti objektů je velmi rozumný. Především jeho závěrečný krok, kdy dlouho nezměněné objekty budou déle čerstvé, dost věrně odráží skutečnost. Navíc lze kritéria stanovit odlišně pro různé lokátory. Takže například obrázkům můžete nastavit vyšší Procento než běžným stránkám.

Transparentní vyrovnávací server

Klasický způsob spolupráce s vyrovnávacím serverem je otázkou konfigurace klienta. V některých případech však takový přístup nemusí být optimální. Řada uživatelů si možná vyrovnávací server ve svém WWW prohlížeči nenastaví. Jestliže chceme i tyto uživatele zahrnout do působnosti vyrovnávacího serveru, můžeme zvolit transparentní řešení. Zde se na straně klienta nic nekonfiguruje a vše se odehrává bez aktivní spolupráce a často i bez vědomí uživatele. O přesměrování WWW provozu se zpravidla stará směrovač (zpravidla ten, přes nějž je síť připojena k Internetu). Podle konfiguračních pravidel poznává WWW dotazy a přesměrovává je k vyřízení na vyrovnávací WWW server. Typická pravidla spočívají v tom, že se přesměrovává provoz směřující na TCP port 80, což je standardní port služby WWW. Základní výhodou transparentních vyrovnávacích serverů je bezpracné zvýšení uživatelské populace, která server využívá. Nemusí se spoléhat na konfiguraci ze strany uživatelů. Výsledkem je efektivnější využití připojení k Internetu.

Rubem této příjemné vlastnosti je, že před transparentním vyrovnávacím serverem není úniku, což v některých případech může vést k nekorektnímu chování doposud bezproblémové WWW služby. Uveďme tři nejčastěji se vyskytující případy problémů "způsobených" transparentním vyhledávacím serverem a způsoby jejich řešení:

  1. Některé placené WWW služby autorizují klienty podle IP adresy. Ta se nyní změní (dotaz přijde z vyrovnávacího serveru, takže jako adresa odesilatele bude figurovat adresa WWW serveru, nikoliv adresa klienta), což může způsobit komplikace.
    Řešení: Do pravidel pro přesměrování je třeba přidat výjimku, aby provoz na dotyčný server neprocházel přes vyrovnávací server (seznam výjimek je v dokumentu http://cache.vslib.cz/projekt/vyjimky.html).
  2. Setkali jsme se i s tím, že některé servery odmítly uživateli spojení na základě změny jeho IP adresy. Úvodní autorizace totiž proběhla na portu 80, avšak další dialog se přestěhoval na jiný port. Jelikož dotyčný uživatel neměl zapnutou spolupráci s vyrovnávacím serverem, byla úvodní autorizace přesměrována, zatímco následující provoz na jiný port nikoli. Z hlediska WWW serveru se tedy změnila IP adresa odesilatele, což bylo interpretováno jako porušení bezpečnosti.
    Řešení: Uživatel si musí nakonfigurovat klienta pro spolupráci s vyrovnávacím serverem.
  3. Třetí potíží, která může postihnout i běžný WWW provoz, jsou nekompletní dokumenty. Někdy si vyrovnávací server uloží nekompletní dokument (pokud odesílající server neoznámí délku dat a později spojení s ním skončí předčasně, těžko se dá určit, zda dorazila kompletní data) a při pozdějších přístupech k němu dostávají uživatelé tuto "zkrácenou" verzi. Jedná-li se o WWW stránku, pomůže prosté tlačítko Reload. Pokud však nekompletnost postihla ukládaný soubor, Reload dost dobře nelze použít.
    Řešení: Můžete kontaktovat správce vyrovnávacího serveru, aby nekompletní objekt odstranil. Existuje však i jeden zajímavý "samoobslužný" nápad - připojit k URL dokumentu příponu ?něco. Ta zajistí, že cílová adresa bude odlišná od předchozí a navíc se adresy obsahující otazník typicky neukládají. Máte tedy skoro jistotu, že dokument bude nově získán z mateřského WWW serveru.

Vyrovnávací servery v TEN-34

Počítače provozující WWW cache jsou umístěny po jednom v lokalitách Plzeň, České Budějovice, Liberec, Brno, Ostrava a dva v Praze. Jde o počítače s operačním systémem Linux RedHat 5.1. Jako software, který obstarává vlastní chod vyrovnávacího serveru, byl zvolen program Squid. S tímto programem lze jednoduše realizovat i transparentní cache. Jsou úspěšně provozovány například v Ostravě, Liberci a Českých Budějovicích. Toto řešení ovšem klade velké požadavky na centrální směrovač, proto se jej ve větších městech nepodařilo realizovat.

V loňském roce bylo firmou Cisco uvolněno řešení transparentních vyrovnávacích serverů Cisco Cache Engine. Tři tyto vyrovnávací servery jsou připojeny na hraničním směrovači autonomního systému TEN-34 CZ a vykrývají požadavky těch klientů, kteří k WWW serverům nepřistupují prostřednictvím sítě vyrovnávacích serverů založených na programovém vybavení Squid. Z vyhodnocení poměru datových toků z/do Cisco Cache Engine se průměrná úspora pohybuje v rozmezí 22% až 35%, přičemž nižší hodnota platí pro dny pracovního klidu a vyšší hodnota pro dny pracovní.

Ve stávající konfiguraci jsou Squid cache servery a Cisco Cache Engine provozovány paralelně s tím, že nevyřízené požadavky klientů používajících Squid cache server již nejsou předávány na Cache Engine. Squid cache servery v současné době obsluhují jednu pětinu datového toku WWW provozu, zbývající čtyři pětiny jsou vybavovány na Cache Engine Farmě.

Literatura

[1] Závěrečná zpráva o řešení projektu TEN-34 v roce 1998
[2] Dokumenty vzniklé při realizaci Vyrovnávacích serverů v  TEN-34
Zpět na začátek
ÚVT MU, poslední změna 14.11.2011