Na tom, ze pri vypadku jednoho serveru prevezme nejakou sluzbu zalozni server, neni nic zas tak sloziteho (IMHO).
Chtelo by to ale nejaky prubezny mirror dat na zalozni server, aby ten mohl pri vypadku hlavniho zacit tam, kde hlavni prestal. Neco jako "raid-1 over the net".
Napr. u zmineneho IMAP, MySQL, WWW nebo jakehokoliv jineho serveru pracujiciho nad nejakymi daty mi bude samotne obnoveni sluzby k nicemu, kdyz nepobezi nad aktualnimi daty. Jiste, muzu mit zdroj dat nekde jinde (NFS server, SCSI disk ci pole pripojeny spolecnou sbernici k obema serverum apod.), tim ale mira redundance zase klesa, protoze system nebude odolny proti vypadku toho uloziste.
V konkretnich pripadech tohle lze "rucne" resit - hlavni SMTP muze veskerou postup posilat na zalozni server, vsechny SQL menici databazi se budou provadet na obouch serverech apod., ale kdyz jsem se to snazil na linuxu vyresit obecne, tak vymyslel akorat priserne slozite reseni vyuzivajici codu, ktere ovsem potrebovalo ne 2, ale hned 5 stroju.
Data - s temi je vzdycky problem :) Kratce receno - neni problem mit sdileny disk (viz nize), ale problem je, jak zaridit, aby jedny data mely namountovany 2 ruzny masiny (v podstate neresitelny problem v Linuxu).
Co se tyka uloziste dat - jsou 2 moznosti:
- free - pouzij netblock device a udelej si RAID1 pres net (ale bude to pomale)
- hw - zivim se krome jineho prodejem IDE_to_SCSI poli, ktere maji 2 SCSI kanaly (tzn. pripojis je k 2 serverum a sdilis jej), pripadne FibreChannel (ale to je o necem uz jinem - jen FC karta do serveru stoji 50 kKc - to se uz blizi cene zakladniho IDE2SCSI) - vic kdyztak viz email, at tady nekomercnime ;)
Ale opakuji - nevim o zadne fs pro Linux, ktery by umoznil mit ty data namountovany na 2 masinach... Jedine reseni je v pripade vypadku heartbeatu provest nasilne prevzeti zarizeni, udelat fsck a mount.
Otazkou ale je, jestli je to vzdy potreba - treba u email/web serveru moc ne (emaily - jde hlavne neztratit zadnou prijatou zpravu, takze je prijmes a az nabehne hlavni server, tak je "preposles", web server - staci delat kazdych par minut rsync ;) - horsi je to s databazemi (tam se to da obejit, pokud databaze podporuje clusterovani - pry pro PostgreSQL uz neco takoveho je). Vetsinou se staci spokojit s degradovanym rezimem prace v pripade vypadku hlavniho serveru (napr. prijimam/odesilam emaily, ale nefunguji uzivatelske schranky, mam webovske stranky, ale treba bez diskuznich for apod.)
Nedávno jsem se ptal v konferenci na možnosti rychlého připojení jednoho úložiště ke dvěma počítačům a dostalo se mi rady, že asi nejúčinnější je připojení jednoho SCSI disku (nebo pole, to je asi jedno) k oběma počítačům jednou kšandou a nasazením OpenGFS (http://opengfs.sourceforge.net/), který zajistí přes síť synchronizaci operací.
Osobně jsem se zajímal hlavně o rychlé sdílení dat mezi dvěma servery, ale myslím, že by to mohlo fungovat i v případě HA.
Pripojit se to da, ale funkcnost bude kdovi jaka. Mam pocit, ze uz snad i ze specifikace SCSI neni mozne sdilet jedno SCSI LUN (v tomto pripade disk) vice radici. W2K cluster to napriklad resi, tak ze si jeden node zabere cele zarizeni pro sebe. Napr. neni tedy mozne mit 2 partisny na jednom disku a kazdou mit aktivni na jinem nodu. Ono i v praxi je to dost velky problem. Napriklad instalace w2k clusteru na intel IBM servery obcas pripomina horrorove sceny, neb musite nejdrive radice primet k tomu aby se domluvili co patri komu. Musi byt tedy podpora primo v OS a na urovni filesystemu. Kdysi to umel tusim veritas volume manager (ani nevim jestli te projekt jeste funguje a umi to i advfs nad Tru64)
Opakuju jeste jednou - pokud budete mit 1 SCSI disk se 2 NTFS partisnami NENI mozne mit jednu partisnu na jednom nodu a druhou na druhem nodu. Vytvori se Vam resource, ktery bude mit zacleneny obje partisny. Pokud disky budete mit dva a na kazdem jednu partisnu pak to neni problem.
Jednoduché, ale UNIXovsky účinné. Nevíte o nějakém těžším _koncepčním_ kalibru typu TruCluster v GNU/Anything provedení s reakční dobou v řádu ms a možností load balancingu některých cluster-friendly parametrů a služeb ? Plácat dohromady veci jako CXFS(proprietary), HSRP atp. pro každou vlastnost systému mě zrovna nenadchlo. O nějaký elegantní transparent cluster framework jsem zatím nezakop. Zatím si musím transp. clustering např. Postgresu řešit sám na aplikační úrovni pomocí proxy komponent aplikace.
Mno existuje projekt, ktery se jmenuje openssi a mel by umet totez co SCO Nonnstop Cluster (system single image cluster), ale nikdy sem ho na linuxu nezkousel. Zkus se podivat na freshmeatu nebo poobnych strankach. Docela by me zajimalo jak resi sdileni pameti a podobne neb Nonstop cluster mel pro toto vyhrazeny ServerNet (udajne technologie vybrana vod tandemu) a ten mel propustnost okolo 1Gbytu (ano ctes spravne ;-).
Zdravim
Ja bych problem s daty resil pravdepodobne mirrorovanim pres sit a to pres vyhrazeny spoj na alespon 1Gbit. 1Gbit sitovka bejva dneska i integrovana na beznych deskach, takze to neni problem sehnat a rychlost je pro pravidelne mirrorovani disku dostacujici. Myslim si ze existuje daemonek ktery rekneme jednou za minutu dve posle update na druhy disk.
Zdenek
Premyslel jsem o HA IMAP serveru, ale prijde mi, ze to v zasade neni mozne nejak snadno poresit. Bud muzu mit /var/spool/imap na externim NAS poli a budu ho mit pristupne z obou nodu, ale budu mit jaksi jen jedno NAS pole a kdyz prestane komunikovat, tak je mi houby platne, ze mam dva imap servery a nebo budou pouzivat kazdy vlastni disk, ale potom zase hrozi, ze maily prijate na padlem stroji dostanou stejne UID jako zpravy prijate na druhem nodu a po najeti systemu se imap klienti zblazni, protoze nikdo nepocita s tim, ze by UID bylo u dvou ruznych zprav stejne.
Take muzete disk sdilet, ale musite si byt uplne jisti, ze druhy nod umrel. Zazil jsem provedeni e2fsck disku sdileneho pres FC, ktery byl druhym nodem pouzivan a z filesystemu zbyly jen trosky. HB tohle resi tak, ze protejsimu nodu vypne UPS, ale nesmi se splest.
Podle me je HB skvely na ruzne load balancery, firewally, web servery, proste na veci, kde bud neni stavova informace (pripadne je jen velmi omezena - zaznamy v NAT tabulce) a nebo se moc nemeni data. Ale na mailserver a nebo imap server je to pouzitelne jen za cenu velkych investic do HW.
Tak me napada, ze by se ten "IMAP cluster" dal bez draheho HW resit na aplikacni urovni:
1/ oba uzly by byly v zasade nazavisle stroje (s vlastnimi disky), s tim ze hlavni prisun posty by byl (rekneme na urovni SMTP) duplikovan a nezavisle rozesilan na oba uzly
2/ zbyvalo by tedy pouze na aplikacni urovni zajistit "synchronizaci" paralelne pracujicich IMAPD, tj. vytvorit patch ktery by v pripade zapisove operace (oznaceni zpravy jako prectene, smazani zpravy ...) vytvoril "transakcni log" a ten zaslal ke zpracovani druhe strane
3/ vlastni cluster by pak pouze zajistoval migraci IP-adresy mezi uzly a jeji propagaci do site (tj. nebyly by potreba zadne sdilene disky)