[BSD] Failover cluster dinamikus adatokkal dolgozo webserverhez

Feczak Szabolcs feczo at siodigit.hu
2005. Ápr. 25., H, 12:44:59 CEST


Ok ez a level mar megjarta a freebsd-questions@ es a freebsd-hackers@
listakat, ugyhogy elkeseredesemben, hogy senki nem valaszol ide is
elkuldom. 

A feladat: ket gep cluster-be allitasa oly modon, hogy
a ketto kozul barmely kiesik a masik viszonylag zavartalanul
folytassa a keresek kiszolgalasat. A webszerver Apache,
a programok php-ben irodtak az adatbazisszerver Postgresql.
Nem feladat a 100%-os rendelkezesreallas hajszolasa, csupan
annyi, hogy automatikusan detektalva legyen a hiba es
a meg jol mukodo fel atvegye a feladatokat, "kozel" (kis - ~1 perc -
szinkronkulonbseg megengedett) abban az allapotban ahol a masik megallt.

Olvastam a hup-on a CARP-rol, 5.4-ben mar lesz is, de ahogy a 
hozzaszolasokat olvastam  a cikk alatt rajottem, hogy nem is biztos
erre van nekem szuksegem. Ahogy irtak ez csak arra garancia, hogy
TCP szinten rendbe van-e a dolog, de ha valami alkalmazas szinten
hasal el, akkor nem fogjak latni a weblapot. Igy a TCP SYN-re
adott valasz nem kielegito, sokkal inkabb a szolgaltatas ellenorzesere
iranyulo "pingek" HTTP GET, SQL SELECT ... Ahogy olvastam erre
a DNS-LB megoldas lehet ...

A filerendszer adatteruletenek szinkronizalasara
elso otletem az volt, hogy GEOM-al keszitek egy felemas tukrot,
azert felemas mert egyik fele lokalis, masik fele nfs. Mint
kiderult lehet is ilyet csinalni geom_mirror + geom_gate-val,
de sajnos a szinkron egyiranyu lesz, es olyan "layer"-t senki
nem tudott ajanlani, amit ket gep meg tud valositani es 
azt elerve mindket gepben levo tarolon parhuzamosan megtortennek
az iras muveletek, az olvasas lehet csak egyikrol is.
Mivel fajl feltoltesek is vannak, kivanatos egy kozos terulet.
Sima NFS nem megoldas, mert ugye ha az NFS kiszolgaloja megall,
akkor lottek a fajlrendszer eleresenek...

Tulajdonkeppen nem akkora problema ez, hogy egyiranyu a szinkron,
csak a master kiesese es visszaallitasa utan esetleg kezzel kell
szinkronizalni. Bar igazabol nem ertem, mivel tudomasom szerint egy
szamlalo erteke  alapjan dol el, hogy melyik komponens a frissebb, 
es a magasabb ertekkel rendelkezohoz szinkronizalja a masik osszetevot.

Az adatbazist Slony-val probaljuk szinkronban tartani, sajnos
nem sok szerencsevel jartunk eddig. A Slony listara meg is irtuk,
hogy minden jonak tunik, kommunikal is a ket node, de megsem
tortenek update eseten valtozas a masikon. Sajnos onnan sem jott valasz
par napja ...

Ha a fenti harom dolog osszeallna: dns-lb-vel a hibadetektalas es
valtas, kozos fajlrendszer geom local+nfs, adatbazis szinkron slony-val,
tulajdonkeppen mukodhetne is a dolog, de sajnos semmi tapasztalatom
nincs ezekkel, igy elegge akadozva haladnak a dolgok, valamint 
fogalmam sincs mennyire fog ez mukodni, veszelyezteti-e az adatok
konzisztenciajat ... es ha igen milyen mertekben (a kieseskor
elveszett nehany rekord elvesztese toleralhato, ha az adatbazis 
teljes egeszeben ep marad es a tovabbi uj rekordok rogzulnek).

Kerek barkit, hogy ha van tapasztalata ilyesmiben ossza meg velunk.

Tudom a jo megoldas az lenne ha venne egy HA hardware switchet, vagy
berelne ket portot, de ez momentan nem fer bele a koltsegvetesbe,
viszont azt sem szeretnem, ha ugy menjek pihenni/szorakozni hogy tiszta 
para barmikor jon egy SMS mehetek dolgozni, vagy rosszabb esetben
utazhatok Budapestre szervert buheralni. A cel tehat hogy a hiba
at legyen hidalva, jojjon ertesites, aztan megoldom amint tudom hogy
visszalljon a normal allapot.




További információk a(z) BSD levelezőlistáról