5.2 Optimalizace provozu WWW cache
Řešení v roce 1999 se zaměřilo na
- průběžné testování nových verzí operačního systému a programového vybavení pro vyrovnávací WWW server (HTTP proxy) Squid a jejich implementaci v prostředí produkční sítě, provoz sítě vyrovnávacích serverů
- synchronizaci konfigurací vyrovnávacích WWW serverů
- implementaci transparentních vyrovnávacích serverů s podporou protokolu WCCP
- testování a implementaci komerčních řešení pro podporu sítě vyrovnávacích serverů
Provoz sítě vyrovnávacích WWW serverů
Provoz sítě HTTP proxy serverů zahrnuje zejména testování nových verzí operačního systému a programového vybavení (Squid) a jejich implementaci na produkční síť, reakce na požadavky a dotazy uživatelů.
V souladu s vývojem jak provozovaného operačního systému tak programového vybavení byly implementovány postupně novější verze tak, že vyrovnávací servery na konci roku 1999 používají tuto konfiguraci:
- operační systém Linux Red Hat verze 6.0 a 6.1
- jádro verze 2.2-5a vyšší
- Squid verze 2.2STABLE5
V průběhu řešení již nebyl striktně dodržován požadavek na přísnou jednotu verzí instalovaného programového vybavení, který si řešitelé sami uložili v předchozím období. Dodržování tohoto přístupu, který sice zjednodušuje průběžnou správu systému, by komplikovalo vývojové práce na úrovni operačního systému a Squidu, které byly v tomto období nejdůležitější činností skupiny.
Synchronizace konfigurací serverů
V souvislosti s rutinním provozem sítě vyrovnávacích serverů byla řešena potřeba synchronizace úprav v jejich konfiguracích. K těmto úpravám v rámci celé sítě dochází tehdy, pokud se přidávají nové spolupracující servery (spravované administrátory jiných připojených institucí) či je-li zapotřebí změnit vzájemné vztahy serverů v síti - např. při ladění zatížení daného požadavky sousedních vyrovnávacích serverů. Pro tento úkol jsme navrhli a uvedli do života schéma distribuce konfigurací.
Stanovili jsme pro ně tyto základní požadavky:
- konfigurace systému na jednom místě
- zachování homogenity konfigurace jednotlivých strojů
Princip řešení
Celý konfigurační systém vychází z centrální databáze vyrovnávacích WWW serverů. Do ní jsou zařazeny všechny zúčastněné stroje - jak centrální, tak spolupracující servery. Dělí se do tří kategorií:
- páteřní
- Cílem systému je vyrobit konfigurační soubory pro všechny páteřní servery.
- partnerské
- Servery jiných institucí, které jsou však natolik kvalitní (z hlediska diskového prostoru a rychlosti připojení), že má smysl oboustranná spolupráce s nimi - dokumenty se jim poskytují a také se po nich požadují.
- klientské
- Zde je spolupráce jednostranná. Klientský server využívá servery páteřní, ale sám nic neposkytuje.
Vždy po provedení změny v databázi musí správce spustit program make, který na základě jejího obsahu vytvoří konfigurační soubory pro jednotlivé páteřní servery a následně je serverům rozešle.
Akceptování konfiguračních změn není prováděno on-line. Předpokládá se, že rekonfigurace není natolik urgentní, aby bylo třeba implementovat odpovídající synchronizační mechanismy. Postačí, když se v pravidelných intervalech (v současné konfiguraci jednou denně v nočních hodinách, v případě potřeby lze frekvenci zvýšit) na každém z páteřních serverů vyvolá kontrolní program. Ten zjistí, zda server neobdržel novou konfiguraci. Pokud ano, aktivuje ji.
Obrázek 5.3: Schéma uspořádání systému
Datový soubor
Data o vyrovnávacích serverech jsou uložena na centrálním konfiguračním počítači v textovém souboru ve formátu, kde každá položka je umístěna na samostatném řádku a má tvar:
Soubor řádků pro jeden vyrovnávací server je od ostatních oddělen prázdným řádkem. V současné době se pracuje s položkami uvedenými v tabulce 5.1. Některé slouží ke generování konfigurací, ostatní jsou pro potřeby správce databáze (např. kontaktní informace či poznámky).název<tabulátor>hodnota
name |
doménové jméno vyrovnávacího serveru |
IP |
IP adresa vyrovnávacího serveru |
type |
kategorie serveru (core, partner, client) |
cont |
jméno správce serveru |
mail |
elektronická adresa správce |
phone |
telefonní číslo správce |
desc |
poznámky, doprovodné údaje a podobně |
Tabulka 5.1: Položky databáze vyrovnávacích serverů
Generované konfigurace
Konfigurace je rozdělena do dvou částí - automaticky generované a lokální, která je udržována ručně správcem daného serveru. Automaticky generovaná část obsahuje jen ty prvky konfigurace, které mají globální charakter. Konkrétně se jedná o tyto konstrukce:
- sada příkazů
cache_peerpro páteřní a partnerské vyrovnávací servery (tedy všechny, kde se může ptát) - definici přístupového seznamu tencore obsahujícího páteřní servery
- definici přístupového seznamu tenother obsahujícího ostatní servery, které mohou využívat služeb páteřních serverů.
Tyto konfigurační soubory jsou prostřednictvím scp distribuovány odpovídajícím serverům.
Uvedení konfigurace do provozu má na starosti program makecfg. Spouští se v pravidelných intervalech prostřednictvím standardního programu cron. Kromě toho jej správce po provedení změn může spustit ručně.
Transparentní vyrovnávací server (WCCP)
Na počátku roku byla možnost transparentního přesměrování WWW provozu na vyrovnávací servery založené na programu Squid omezena jen na metodu podmíněného přesměrování provozu (policy routing). Tato metoda byla v předchozím projektu vyzkoušena a provozována na několika lokalitách sítě TEN-34 CZ. Použité řešení s sebou neslo vysoké nároky na kontrolu korektní funkce vyrovnávacího serveru a implementaci mechanismu řešícího jeho sehání. Nebylo jednoduché rozkládat zátěž na několik vyrovnávacích serverů a navíc neúměrně stouplo zatížení směrovače. Tyto nevýhody omezují použití metody podmíněného přesměrování provozu pouze na menší lokality.
WCCP protokol
WCCP (Web Cache Coordination Protocol) je protokol navržený firmou Cisco Systems pro spolupráci vyrovnávacího serveru se směrovačem. Původně byl vyvinut jako firemní protokol pro spolupráci s Cisco Cache Engine. Později byla verze 1.0 licencována i jinými společnostmi (Inktomi, Network Appliance a NLANR-Squid).
WCCP protokol má dvě hlavní funkce
- umožňuje přiřadit jednomu směrovači jeden nebo více vyrovnávacích serverů (tzv. cache farm) pro transparentní přesměrování HTTP provozu
- dovoluje jednomu z vyrovnávacích serverů určit, jak bude směrovačem distribuován HTTP provoz na jednotlivé spolupracující servery
Obrázek 5.4: Vyrovnávací servery s WCCP protokolem
Vzhledem k výše uvedeným vlastnostem a díky tomu, že páteř sítě TEN-155 CZ je provozována na zařízeních Cisco, se WCCP protokol jeví jako optimální pro širší nasazení transparentních vyrovnávacích WWW serverů.
V polovině roku byla do vývojové verze Squidu 2.3 implementována podpora
WCCP. Vzhledem k tomu, že je tato verze nestabilní, implementovali jsme WCCP do
poslední dosud uvolněné stabilní verze Squidu 2.2STABLE5 - viz
http://www.vsb.cz/~hal01/cache/wccp/
V době prvních pokusů s nasazením Squidu s WCCP jsme museli řešit otázky samotné funkčnosti WCCP u programového vybavení Squid a následně posoudit otázky výkonnostní.
Podpora WCCP protokolu v operačním systému Linux
Stávající implementace GRE v jádru Linuxu neumožňuje bez předchozích úprav nasazení Squidu s protokolem WCCP.
Přesměrované WWW pakety jsou směrovačem zapouzdřeny do GRE paketů a typ protokolu je označen jako 0x883e. Označení tímto protokolem, který není Linuxu znám (firemní označení), zabrání operačnímu systému v dalším zpracování zapouzdřeného paketu. Vzhledem k tomu, že struktura zapouzdřeného paketu odpovídá standardnímu IP, je možné přepsat pole typu protokolu v paketu na 0x0800 (IP protokol).
Tato úprava ve zdrojových souborech jádra se v případě Linuxu uskuteční v souboru /usr/src/linux/net/ipv4/ip_gre.c
Do funkce ipgre_rcv je třeba přidat
int ipgre_rcv(struct sk_buff *skb, unsigned short len){
...
if (skb->protocol == __constant_htons(0x883e))
skb->protocol = __constant_htons(ETH_P_IP);
...
}
Opravná dávka (patch) je uložena na
http://www.vsb.cz/~hal01/cache/wccp/ip_gre.patch.
Toto řešení je původní. Ohlásili jsme je autorům Squidu, kteří odkaz na
úpravu zahrnuli do doprovodné dokumentace programu
http://squid.nlanr.net/Doc/FAQ/FAQ-17.html#ss17.10.
Podrobný technický popis transparentních vyrovnávacích serverů a jejich nasazení v rámci sítě TEN-155 CZ je dostupný na http://www.vsb.cz/~hal01/cache/doc ve formě článků pro další provozovatele transparentních vyrovnávacích serverů.
Výkonnostní parametry vyrovnávacího serveru Squid s WCCP
Při provozu vyrovnávacího serveru Squid s podporou WCCP docházelo u Squidu k uváznutí ve zpracování událostí, které mělo za následek odpojení serveru od směrovače. Tento stav jsme napravili zásahem do zdrojového kódu Squidu a implementací prioritního zpracování událostí.
V souvislosti s předpokládaným dalším nasazením Squidu s WCCP protokolem jsme testovali výkonnostní parametry Squidu na stávajícím technickém vybavení, abychom mohli stanovit kvalifikovaný odhad potřebného počtu vyrovnávacích serverů pro větší lokality.
Při stávající konfiguraci vyrovnávacího serveru (Pentium Pro, 200 MHz, 256 MB operační paměti, 10 GB diskového prostoru pro cache) se daří provozovat stabilní vyrovnávací server do zatížení cca 3200 HTTP požadavků za minutu při současně otevřených 1200 deskriptorech souborů, zatížení procesoru se pohybuje v rozmezí 55-60 %.
Vyšli jsme ze zkušeností s provozováním vyrovnávacího WWW serveru s WCCP ve středně velké lokalitě (oblast Ostravy a Opavy) a na základě velikosti datových toků do jednotlivých metropolitních sítí stanovili počty potřebných strojů, jak je uvedeno v tabulce 5.2. V souladu s touto rozvahou jsme vznesli požadavek na nákup nových strojů. Byly dodány v prosinci 1999 a k jejich zprovoznění dojde během ledna 2000.
| lokalita | počet |
|---|---|
| Brno | 6-7 |
| Ostrava | 2 |
| Plzeň | 2 |
| Liberec | 1 |
| České Budějovice | 1 |
Tabulka 5.2: Počty WCCP serverů
Stávající servery budu použity v nových lokalitách a pro některé podpůrné úlohy, jako je zpracování a zpřístupnění protokolů o činnosti jednotlivých serverů. Není vhodné kombinovat v jedné farmě stroje různých výkonnostních parametrů, aby vykazovaly shodné parametry při přístupu k libovolnému WWW serveru v Internetu.
V současné době je Squid s WCCP provozován v Brně, Českých Budějovicích, Liberci a Ostravě, připravuje se zprovoznění v Plzni. Lokalita Brna a Ostravy je do zprovoznění plánovaného technického vybavení vykryta pouze částečně (v mezích možností stávající techniky).
Pro posuzování výkonnostních parametrů jsme odladili jednoduché nástroje pro sběr provozních dat. Slouží správci vyrovnávacího serveru pro vyhodnocení práce serveru, srovnání s jinými konfiguracemi a lokalitami a posuzování vlivu změn na výkonnost systému. Vzhledem k tomu, že vyrovnávací server ovlivňuje celá řada vnějších vlivů a okamžitých situací, nelze jednotlivé závislosti vybraných proměnných popsat jednoduchou funkcí. Z tohoto důvodu jsou opakovaně po delší dobu shromažďovány provozní hodnoty serveru, které v grafickém znázornění vymezují oblast práce vyrovnávacího serveru.
Pro ilustraci předkládáme tři z charakteristik provozovaných vyrovnávacích serverů. Z grafu na obrázku 5.5 je zřejmé že v provozovaném systému je úspěšnost vyrovnávacího serveru nezávislá na zatížení serveru. Graf na obrázku 5.6 znázorňuje závislost zatížení procesoru na počtu otevřených deskriptorů souborů. Z charakteristiky je zřejmé, že od cca 300 otevřených deskriptorů již zatížení procesoru dále nevzrůstá a je zapotřebí lokalizovat část kódu vyrovnávacího serveru způsobující nasycení. Na obrázku 5.7 je zřejmá lineární závislost zatížení procesoru na počtu HTTP požadavků klientů. Od cca 3000 požadavků za minutu dochází ke ztrátě linearity závislosti.
Cisco Cache Engine
Na začátku roku jsme zprovoznili farmu tří strojů Cisco Cache Engine pracujících jako transparentní vyrovnávací servery. Tato farma je připojena k hraničnímu směrovači TEN-155 CZ a má zachytit WWW provoz od klientů, kteří nejsou obsluhováni některým z vyrovnávacích serverů v rámci sítě TEN-155 CZ.
Při reálném provozu jsme však zaznamenali nemalé problémy jak se spolehlivostí techniky, tak s funkčností při vyšším zatížení. Konkrétně docházelo k následujícím situacím:
- Určité URL je dosažitelné ze stroje mimo Cisco Cache Engine, zatímco stroj procházející přes Cache Engine, se ve stejný okamžik ke stránkám nedostane. Nebo Netscape pod Win95 ohlásí "Cache Error", zatímco Linuxový Lynx ve stejné době stránku v pořádku vrátí.
- Chybová hlášení jsou velice stručná a matoucí. I když například na dotazovaném serveru neběží na portu 80 WWW server, ohlásí Cache Engine chybu "Cache Error". Tato interpretace poškozuje provozovatele služby u uživatelů, kteří často při shlédnutí hlášení "Cache Error" již nečtou dále a obviňují z chybné funkce sítě poskytovatele připojení k síti Internet, který transparentní Cisco Cache Engine provozuje.
- V protokolech o činnosti Cache Engine se vyskytují chyby (např. nepravidelně chybí jméno serveru).
- Malá informační hodnota protokolu o činnosti. Pro každý dotaz je vyhrazen jeden řádek, který je ovšem zapsán před vyřízením žádosti a neinformuje tudíž o tom, jak akce dopadla.
Na základě těchto zjištění byly Cisco Cache Engine u dodavatele reklamovány a byl dohodnut postup pro nápravu: stávající zařízení budou bezplatně vyměněna za nový model a firma Cisco Systems navíc dodá další tři exempláře. Nová verze Cisco Cache Engine byla testována během srpna a září na mezinárodní lince sítě TEN-155 CZ, tedy pod plnou zátěží, a vykazovala bezproblémové chování.
Společně se dvěma nově zakoupenými exempláři tak vznikne farma osmi Cisco Cache Engine. Bude zpracovávat dotazy od uživatelů, kteří nejsou obsluhováni lokálními vyrovnávacími servery (především Prahu a některé menší lokality).
Díky problémům s Cisco Cache Engine nemohla být ve větší míře testována služba SkyCache využívající předběžného přenosu objektů do vyrovnávacího serveru přes satelitní spoj. Tato služba je (podle smlouvy se společností SkyCache) do doby nasazení nových Cisco Cache Engine ve stavu testování.
Úkoly pro příští období
- Nasazení nových vyrovnávacích serverů s WCCP pro úplné vykrytí lokality Brno a Ostrava, instalace původních serverů do menších lokalit (Olomouc, Hradec Králové, Pardubice).
- Výkonnostní optimalizace nové struktury vyrovnávacích serverů.
- Testování nových žurnálových souborových systémů pro Linux a vyhodnocení jejich použitelnosti v našich podmínkách.
- Testování připravovaného nového rozhraní Squidu do souborových systémů.
- Vývoj nástroje pro dohled na provoz skupiny vyrovnávacích serverů a sledování okamžitých provozních stavů a pracovních charakteristik.
obsah |
následující
|