Milan Kryl

Kryl Blog - RSS

Pod pokličkou gigamailu Centra II

16. 05. 2005 - 08:02

V minulém díle jsme si představili celkovou architekturu gigabajtového e-mailu Centra. Rovněž jsme si řekli něco o frontendových věcech. Dnes se podíváme na to nejsložitější, co v novém systému je - databázi e-mailů.

Systém vysoké dostupnosti

Kamenem úrazu všech redundantních aplikací je redundantní databáze. Vyřešení této části jsme věnovali hodně úsilí. Po zvážení různých variant jsme nakonec sáhli po řešení s distribuovanou redundantní databází, realizovanou vlastními programy a knihovnou na aplikační úrovni.

Máme několik databázových počítačů a na každém běží databázový démon, se kterým se komunikuje přes TCP protokol. Démon, napsaný v jazyce C, obstarává ukládání mailů, replikaci dat a další databázové funkce - výpis mailů a v neposlední řadě i fulltext.

Integrace inteligentního vyhledávání

Ten byl realizován knihovnou založenou na naší fulltextové technologii Morfeo, byť pro účely hledání v mailech musela být poněkud upravena. Zde musím smeknout před autory knihovny - Martinem Marešem a Tomášem Vallou. Od předání knihovny do dnešního dne jsme v ní neobjevili ani jednu chybu!

Bezpečné úložiště

Data se na počítačích ukládají na disková RAID 5 a RAID 1 pole. Výpadek jednoho disku tedy ještě neznamená výpadek celého DB počítače.

Ale i pokud by nastala ta nepravděpodobná událost, že by najednou vypadly dva disky v RAID poli, tak se nic moc nestane. Uživatele převezmou repliky a žádná data se neztratí. Respektive se nejvýše ztratí několik málo mailů, které se nestihly zreplikovat. A to samozřejmě jen těm uživatelům, kteří měli na vypadlém počítači master repliku (viz dále).

Zkušenosti z našeho autentikačního serveru jsme využili i při návrhu databázového serveru, a to konkrétně protokol pro komunikaci s databází mailů. Krátce jsme uvažovali o něčem založeném na XML, ale rychle jsme došli k závěru, že by bylo pro daný úkol příliš těžkopádné. Naopak protokol autentikačního serveru je jednoduchý, máme pro komunikaci pomocí něj napsané knihovny, a v praxi se velmi osvědčil.

Několikanásobná replikace

Každý uživatel v systému má několik replik dat na různých počítačích. Z nich je jeden "master", na něm se provádí všechny změny. Na ostatní kopie se změny přenáší pomocí změnového logu. V současném systému může mít uživatel až čtyři kopie - jednoho mastera a tři repliky, obvyklé jsou ale dvě kopie dat.

Pokud se master stane nedostupným, zastane jej jiná kopie, která se dočasně stane masterem. Toto překlopení je pro uživatele transparentní - maximálně pokud databáze přestane odpovídat, může nastat v odpovědi serveru několikasekundové zpoždění, než doběhne timeout. Nicméně informace o nedostupných uzlech databáze se sdílí, takže zdaleka není nutné, aby timeout proběhl u všech uživatelů a už vůbec ne opakovaně.

Všechno toto je transparentní i vůči aplikacím - na straně aplikace je knihovna, které se předá požadavek pro určitého uživatele, a knihovna sama vyhledá dostupný nód a požadavek na něm provede.

Testování stability v praxi

Mechanismus překlápění jsme testovali i tzv. "trhacími zkouškami" - pracovali jsme v aplikaci a určený člověk "vytrhl" ethernetový kabel z jednoho databázového serveru, čímž bylo simulováno jeho zamrznutí nebo pád. My jsme pokračovali v práci a sledovali, jak se systém s takovýmto pádem vyrovná.

Odolnosti proti různým výpadkům

Redundance systému nám umožňuje restartovat a aktualizovat databázové servery bez velkého dopadu na uživatele. Rozložení replik je rovněž (automaticky) voleno tak, aby byla minimalizována skutečnost, že dojde k výpadku obou replik uživatele najednou - například kdyby vypadl jistič pro celý rack, jako se to už párkrát stalo.

Nebo kdyby nastal požár, který by celý rack zničil. (Každý rack je ale vybaven samočinným hasícím zařízením.) Ani v případě takovéto katastrofy by však nedošlo ke ztrátě uživatelských dat.

Zbytečné obavy z převodu uživatelů do nového systému

Po testech v laboratorních podmínkách nastal čas, kdy jsme měli do nového systému převést staré uživatele. V tu dobu nás trápily různé nepěkné sny, například že převedeme třetinu uživatelů a zjistíme, že jsme na stropě s výkonem. Nebo že naopak převedeme všechny a najednou jim začnou mizet a poškozovat se data...

Naštěstí se nic z toho nevyplnilo, měsíce zátěžových a funkčních testů splnily svůj účel a dnes jsou již všichni uživatelé bezpečně v novém systému, který jsem vám právě představil.

Autor: Michal Kára
 

Tip: Krátké zprávy a zajímavosti (rychlý přístup https://kryl.info/kratce)

Související