Synchronizace konfigurací vyrovnávacích WWW serverů
Technická zpráva TEN-155 CZ číslo
2/2000
k dispozici též ve formátech PDF,
PostScript a XML.
Pavel Satrapa
5. září 2000
Úvod
Zavedením distribuovaného systému vyrovnávacích WWW serverů složeného ze sedmi strojů rozmístěných v různých městech ČR vznikla silná potřeba zajistit rozumným způsobem synchronizaci jejich konfigurací. Předpokládá se, že na páteřní vyrovnávací servery se budou napojovat dílčí vyrovnávací servery jednotlivých institucí či jejich částí. Pokud k takovému napojení dojde, měl by být zásah do konfigurace systému páteřních serverů co nejjednodušší.
Základní požadavky tedy jsou:
- 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. Domnívám se, že záležitost není natolik urgentní, aby bylo třeba vymýšlet 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) na každém z páteřních serverů vyvolá kontrolní program. Ten zjistí, zda server neobdržel novou konfiguraci. Pokud ano, aktivizuje ji.
Obrázek 1: Schéma uspořádání systému
Datový soubor
Data o vyrovnávacích serverech jsou uložena v centrálním souboru tencache.cfg. Jedná se o textový soubor v pevném formátu. 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ě jsou definovány tyto druhy položek:název<tabulátor>hodnota
- name
- Doménové jméno vyrovnávacího serveru.
- IP
- IP adresa vyrovnávacího serveru.
- type
- Kategorie serveru. Přípustnými hodnotami jsou
core(páteřní server),partner(partnerský server) aclient(klientský server). - cont
- Jméno správce serveru.
- Elektronická adresa správce.
- phone
- Telefonní číslo správce.
- desc
- Poznámky, doprovodné údaje a podobně.
Položka name musí být vždy uvedena jako první. Povinné jsou
pouze první tři položky - name, IP a
type. Příklad části konfiguračního souboru:
name cache.ten34.ces.net IP 195.178.64.58 type core cont Vladimir Smotlacha mail vs@cesnet.cz name cache-lb.ten34.ces.net IP 147.230.16.100 type core cont Pavel Satrapa mail Pavel.Satrapa@vslib.cz
Generované konfigurace
Považuji za nerozumné a nepraktické, aby se centrálně distribuovaly kompletní konfigurace páteřních serverů. Jelikož servery často slouží zároveň jako vyrovnávací servery pro lokální akademickou komunitu, mívají různé individuální odchylky v konfiguraci (např. povolují přístup uživatelům ze svých sítí, jsou otevřeny pro jiné lokálním vyrovnávací servery nezapojené do celkového systému a podobně, mohou se lišit velikosti paměti či diskového prostoru a podobně).
Proto je konfigurace 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:
- sadu 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.
Tyto konfigurační soubory jsou prostřednictvím scp distribuovány odpovídajícím serverům.
Činnost na jednotlivých serverech
Na vyrovnávacím serveru se soubor s automaticky generovanou části konfigurace uloží do vyhrazeného adresáře pod názvem automat.cfg. Kromě něj se zde ještě musí nacházet soubor local.cfg obsahující lokální část konfigurace. Ta musí mimo jiné zavést odpovídající přístupová práva pro seznamy tencore a tenother definované v automaticky generované části.
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ě. Činnost makecfg je následující:
- spojí automat.cfg a local.cfg do jednoho souboru
- jeho obsah porovná se stávající konfigurací squid.conf
- pokud zjistí rozdíly, uloží zálohu aktuálního squid.conf do podadresáře zaloha, nahradí jej novým a prostřednictvím killall pošle signál Squidu, aby se podle něj začal chovat
Vzhledem k tomu, že standardní konfigurační soubor /usr/local/squid/etc/squid.conf je vždy popsaným způsobem zcela nahrazen, nemá smysl v něm dělat jakékoli změny. Veškeré úpravy lokální konfigurace musí být realizovány v local.cfg.