Šta je novo?

WEB Based Backup-Storage Service (Seminarski)

ipejasinovic

Cenjen
Učlanjen(a)
23.11.2009
Poruke
14
Poena
154
Nisam siguran da li ova tema pripada ovdje, pa neka neki mod prebaci na više odgovarajuće mjesto...

Naime, uzeo sam da radim seminarski rad na gore navedenu temu, pa uz priču treba i uraditi mali sistem. Pošto sistem treba da zadovolji određene uslove: fail safe, 99,9% uptime, cheap itd..., ja sam ga zamislio ovako:

attachment.php


Znači imam Server 1 koji priža servis klijentima. Na serveru treba da se vrti jedan servis koji će raditi po http protokolu, a služi znači za autentifikaciju klijenata i manipulaciju/transferovanje podataka. To ja i kolege trebamo isprogramirati...

Server 2 je mirror Servera 1 i to ću uraditi sa HeartBeat & DRBD rješenjem.

PC3, PC4 & PC5 su računari koji služe kao Storage. No tu imam problem. Kako ih povezati i prijaviti na Serveru 1 odnosno 2.

a) Jedno rješenje zamišljam kao još jedan moj servis koji će jedan fajl koji se uploaduje uvijek sačuvavati na 2 mjesta, npr. PC 3 i PC5 (Komunikacije preko TCP/IP protokola). To znači ponovo moram programirati. Takođe moram praviti neki journal na Serveru te aplikaciju za oporavak na Storage PC-u.

b) Drugo rješenje je korištenje već gotovih rješenja, ali tu imam nedoumica. Znači, mogao bih da pomoću nekog SAN rješenja da prijavljujem ove Storage PC-ove na Server(e) kao lokalne diskove. Tu bih onda mogao da napravim SW RAID 5, gdje bih se spasio pravljenja journal-a, no ne znam da li je moguće sa npr. Open-iSCSI prijaviti ove Storage računare kao lokalne uređaje pa od njih napraviti SW Raid. I ko u ovom slučaju treba da vrši oporavak nekog od ovih Storage računara, npr. ako je izgorio HDD ili napajanje itd...

Ono što nisam rekao je da će ovi računari biti vezani u neku lokalnu mrežu gigabitnim karticama. U krajnjoj mjeri, uopšte i ne moram da radim sa pravim računarima, mogu sve kroz VM.

Sad me zanima mišljenje i pokoji odgovorčić nekih stručnjaka, koji su imali dodira sa ovim stvarima, da li je ovo što sam ja zamislio ostvarivo, da li je moglo drugačije, vaše preporuke i za moje ideje i za softwerska rješenja itd...
 

Prilozi

  • WBBSS.gif
    WBBSS.gif
    10.3 KB · Pregleda: 445
Ja bi ovo resio na sledeci nacin.
Za povezivanje i failover izmedju Servera 1 i servera 2 opredelio bih se za HeartBeat.
Storage resenje bi isao na iscsi varijantu naravno sa raid variantom.
Jedino sto mi nije jasno recimo ako bi na pc3 digao iscsi, sta bi radio na pc4 i pc5. Koliko ja znam nemoguce je ( barem sa dostupnim alatkama ) napraviti iscsi cluster tako da bi ti se pc3,4,5 deklarisali kao jedan storage. Mozda neka varijanta da i njih ispovezujes heartbeatom ali opet tu bi ti se javio problem oko iscsci targeta i disk mounta sa "klijentske" strane. Generalno izvodljivo je da izmedju servera 1 i 2 i storage masina bude neka vrsta nekog proxy-ija koji ce da izvali ako ti gekne recimo pc3 da switchuje na pc4.... sto ti i to naravno ne garantuje 99.9 uptime nego ko zna koliki downtime.
 
Koliko ja vidim tvoja ideja je da korisnik na heartbeat-ovanim serverima uploaduje fajl, a zatim ih i dodatno cuvas na ove 3 masine?

U tom slucaju mozes slobodno da koristis NFS za transfer podataka na pc3-pc5, nema potrebe da izmisljas 'toplu vodu'. Ako je upload preko http-a pa jos preko interneta, nema sanse da to bude brze nego prebacivanje fajlova koriscenjem NFS sharinga u lokalu. Napravis par skripti koje koriste NFS sharing-e i rsync i to ti je to. U stvari NFS ti mozda i ne treba ako ne zelis da sa primarnih servera listas share-ove na bekap pc-jevima, rsync ce ti biti dovoljan.
 
Poslednja izmena:
Tu negdje. Znači korisnik uploaduje fajl preko neta na server1 npr., a server taj file sačuva na jedan od storage računara. To je prostije, ali moram skontati i kako najbolje zaštititi podatke.

Jedan način je da radim slično kao google. Fajl uvijek sačuvam na više računara. Jer npr. ako crkne PC3, imam taj fajl i na npr. PC4. No, tu moram ja raditi neki journaling, da znam na kojim računarima imam koji fajl...

Drugi način mi je da uz pomoć iSCSI računare PC3 - PC5 prijavim kao lokalne diskove, pa onda od tih diskova napravim softwerski RAID5.

U prvom slučaju, moram raditi svoj virtuelni FS, journaling i metode/servise za oporavak.

U drugom slučaju ne moram raditi FS i journaling, i to mi je na izgled bolje, ali ne znam kako uraditi oporavak i ko to ustvari radi? Da li sw za raid, moj softwer ili ?
 
Ok, varijanta no. 2:

Dizao bi na pc1 i pc2 sw raid 5 koji cine 3 iscsi diska pc 3-4-5 ? Pc 1-2 su iscsi inicijatori, 3-4-5 targeti. Sve si setovao, pc1-2 vide 3 iscsi diska sa 3-4-5; na pc1 ucukas par kobasica i mdadm-om napravis sw raid 5.

I posle ovog nisam bas siguran da ce sve da ide glatko - ok, ako ti 'pukne' neki od 3-4-5, ti zamenis hardver (ubacis drugu masinu, ofc prethodno nasetovanu kako treba) i preko mdadm na pc1 zamenis neispravan 'disk'.

Ali sta se desava ako pukne pc1? Da li si siguran da ce pc2 da preuzme sw raid kontrolu tako lako?
 
Neće meni heartbeat na pc2 da preuzme kontrolu nikako. Odradim drbd + heartbeat sve po uputstvu, na pc1 sve fercera kako treba, sve lijepo radi... Ubijem PC1 ali PC2 ne preuzima kontrolu...
Vidi da je master ubijen i da on treba postati master, ali neće i gotovo. Ludim!
 
Probaj prvo sa sto jednostavnijim setupom i samo heartbeat, kad to prodje dodaj drbd.

Ima tu 5-6 config fajlova pa se covek lako pogubi.

Isto tako obavezno ugasi iptables.
 
Poslednja izmena:
Mislim da komplikujes sa backendom dok ti je pristup platformi krajnje jednostavan (ili nedovoljan). Ako je ideja da se ta platforma koristi za backup servera, http upload backup fajla preko web interfejsa se retko kad koristi ili nikad. Ideja je da se backup sa remote servera vrsi recimo u predefenisanom terminu, npr, jednom dnevno automatski, npr. rsync-om sa remote servera ka tvojoj backup platformi. Trebao bi da postoji i taj nacin pristupa platformi, umesto httpa ili pored httpa.

Za backend komunikaciju pc1/2 sa pc3/4/5, najjednostavnije ti je da koristis nfs. I na taj nacin pc1/2 lako pristupaju backup fajlovima koje korisnik platforme u slucaju da su potrebni za recover moze preuzimati putem tvog web interfejsa (ili opet putem rsync-a) na pc1/2.
 
Poslednja izmena:
Covek je izgleda resio da eksperimentise.

A inace nfs+rsync je ubedljivo najlakse i najbrze resenje. I radice 100% ono sto treba.

edit: ako je bas neophodna real-time sinhronizacija verovatno moze rsync da se spregne sa fam-om pa da se okida kad dodje do promena.
 
Poslednja izmena:
Malo se mimoilazimo, ali objasniću i zašto. Mada, rad sam i promijeniti pristup ako mi malo bolje objasnite vaše ideje.

1. Naime, ovo je moj prvi dodir sa ovakvim systemima.
2. Teme seminarskog tipa GFS, NFS su već zauzete, morao sam nešto malo drugačije uzeti.
3. Kao što se da primjetiti, ovo pitanje sam postavio već prije 10-tak dana. Znači već sam krenuo sa realizacijom. Takođe, tokaja se složio sa većinom moje ideje, pa sam mislio da moja ideja ima smisla.

Sad da bolje objasnim, zašto sam ja mislio da je ovakvo rješenje dobro. Na server1 se vrti apache2 + php + neki php file manager. server2 je tu u slučaju otkaza server1. Za to sam mislio heartbeat + drbd, ali čini mi se da nemam potrebe za drbd.

RootDir na apache-u je postavljen na particiju koja je sw raid 5 od 3 iSCSI diska. Znači, tu se nalaze neki korisnički folderi i tu svaki korisnik može vršiti manipulacije nad svojim fajlovima kroz gore navedeni php file manager.

Računare pc3-pc5 sam uzeo kao storage zato što mislim da je logičnije nego uzeti jedan računar sa 3 hdd-a. Možda jeste malo skuplje, ali nije otkaz hdd-a jedini problem koji se može desiti. Šta ako npr. izgori napajanje na storage računaru. Kod mog sistema ne treba da brinem, jer imam još 2 računara sa ispravnim podacima, a mogu i ubaciti još jedan računar kao spare...
 
Poslednja izmena:
E pa kad tako kazes....:)

Javi se kako je proslo sa raid-om na iscsi-ju, to mi se jedino cini kao problem.
 
3. Kao što se da primjetiti, ovo pitanje sam postavio već prije 10-tak dana. Znači već sam krenuo sa realizacijom. Takođe, tokaja se složio sa većinom moje ideje, pa sam mislio da moja ideja ima smisla.

Javi nam obavezno dal ti je uspeo iscsi soft raid, zivo me interesuje teoretski je izvodljivo ali u praksi nije mi nikada ni padalo na pamet da pokusam jer mislim da ni gigabitna mreza ti ne bi bila dovoljna za taj poduhvat :) ... da sam na tvom mestu ipak bi se odlucio da uradim raid na nivou iscsi-a a ne na nivou targeta .. no sta je tu je ... Ipak ne daj boze da ti gekne jedan target automatski ostajes bez raida.
 
Poslednja izmena:
Evo samo citat sa jednog stranog sajta:
I also faced this problem. I have 5 targets (1TB each). I create software
RAID5 over the 5 iscsi disks. First time create is about 12 hours (about
33MB/s). In normal state, read/write speed is also fast (over 100MB/s
write). However when recover the raid, the speed becomes very slow need more
than 20 hours to recover(speed about 11MB/s).
 
Ako je jedna mrezna karta prespora nije neki problem da se doda jos jedna i napravi bonding.

Ali i dalje ne vidim odgovor na ono sto mene interesuje i cini mi se da moze biti problem - da li uspevas da zavrtis soft raid na pc-ju 2 bez dodatnih intervencija kada ti padne pc1?
 
Naravno, pretpostavke su da ce mreze donekle biti razdvojene i gigabitne, a takodje i gigabitne kartice na racunarima...

Sto se tice problema sa sw raid-om na PC2, mislim da nebi trebalo biti problema. Kada padne PC1, heartbeat na PC2 pali moju skriptu. Moja skripta treba prvo da napravi iSCSI diskove, tj. da se konektuje na storage nodove. Onda se pravi raid sa mdadm sa opcijom scan, da ih sam prepozna kako je i koji bio zakacen. Onda treba md mountovati i pokrenuti apache2 na kraju.

Vrijeme da nodovi se otkace sa servera je nekih 30-sekundi, tako da ja mogu podesiti heartbeat da tek nakon 30 sek. nedostupnosti master servera, pokrene moju skriptu. Tako da, kad se pokrene moja skripta, mislim da nece biti problema sa konektovanjem na nodove i pravljenje raid-a.

Trenutno mi radi heartbeat i samo jedan iscsi disk. Nisam nista vise ni radio. Imam malih problema sa linux-om inace. Posto nisam bas vican da pravim svoju distribuciju sa lfs, gentoo ili arch, tako da trenutno radim sve na xubuntu, ali sam kontao skinuti neku netinstall distribuciju, pa da instaliram samo ono sto meni treba...
 
I koliko traje rebuild raida?
 
Brzina mi nije toliko bitna, ali se nadam, pošto će u jednom trenutku max 4 računara biti priključeni na jednu mrežu, brzinama od 20 do 25 MB/s. Jer našao sam na netu da je čovjeku sa 5 računara u ovakvom raid-u brzina bila oko 11MB/s u najgorem slučaju, a ja imam 3 računara u ovom raid-u...
 
Bitna je brzina - switch-ovanje front-end racunara kod tebe znace rebuild raida zar ne? A dok traje rebuild tebi ne radi ni web aoplikacija jer si odlucio da ti fajlovi stoje na isci diskovima.
 
Ma ne, zašto bi se radio rebuild raid-a? Potrebno je samo da se ponovo poveže na način na koji su već iscsi diskovi bili povezani, a za to, koliko sam vidio, mdadm ima ugrađenu opciju. Pa nije valjda da kad ugasiš računar na kojem su particije u sw raid-u, da pri sledećem paljenju mora ponovo raditi build...
 
Zato sto meni nikad nije uspelo da sw raid proradi 'iz cuga' i bez rebuilda kad sam premestao diskove iz compa u comp (do duse raid 1 i nije bio iscsi). Verovatno je u pitanju bila promena uuid-a prilikom promena masina ali se nisam preterano opterecivao time - ipak je to bio raid1 pa je, iako sam imao degraded raid array, stvar radila (i pomocu mdadm se naknadno raid polje vracalo u stanje u kome treba da bude).

ps. btw nadam se da se ne (ne daj boze) ne ljutis sto ti postavljam sva ova pitanja, stvar je interesantna pa me interesuje kako ide.
 
Poslednja izmena:
Ma nema ljutnje, naravno. Samo izmjenjujemo mišljenja. Ti imaš iskustva, dok se ja oslanjam na teoriju, zato imamo malo podijeljene stavove. Meni tek slijedi da mi se teorija obije o' glavu...

Nego, vrijedili šta SUSE Studio? Da napakujem sebi neku Lindžu sa specifičnim softwerom za moje potrebe u ovom slučaju, da se ne bakćem sa probavanjem 100 distroa...
 
Nego, vrijedili šta SUSE Studio? Da napakujem sebi neku Lindžu sa specifičnim softwerom za moje potrebe u ovom slučaju, da se ne bakćem sa probavanjem 100 distroa...

Sve je to linux .. same sh1t diferent smell :)
 
Sinoć sam se malo uhvatio u koštac sa svojim seminarskim u praksi i mogu reći da sam veoma zadovoljan postignutim. Sve fercera. Znači, mdadm uopšte nema problema sa asemblovanjem razvaljenog raid-a, odnosno kad server2 preuzme kontrolu...

Jedino što nisam testirao, kad isključim neki storage računar, kako se raid ponaša... Ustvari tu imam sad pitanje. Da li je moguće i dalje izvlačiti podatke kad otkaže jedan storage ili se mora odmah pristupiti popravljanju oštećenog dijela?
 
Što se tiče Linux-a, odlučio sam se za Debian. Uzeo sam netinstall cd i instalirao samo ono što mi treba. Ako nešto zafali, tu je apt-get :D

BTW. Magična kobasica je bila: mdadm --assemble --force /dev/md0 /dev/sdb /dev/sdc /dev/sdd
 
Poslednja izmena:
Svaka cast :)

Koliko se brzo rebuilduje raid?
 
Assemble. Konkretno mislim na simulaciju potpunog otkaza jednog od nodova i zamene novim, sa 'blanko' hd-om. Ne interesuje me koliko ti vremena treba da na masini instaliras OS i sl, vec koliko je potrebno vremena da jednom kada se startuje mdadm novi 'hard' postane punopravan clan raida.
 
Poslednja izmena:
E pa, rekao sam, da to nisam testirao. Nisam zato sto trenutno nemam vremena. Najbitnije mi je bilo to da vidim, moze li drugi racunar odnosno server da prepozna superblokove na tim iscsi diskovima i pravilno ih asembluje, iako im je uuid drugaciji i uopste sw raid nije kreiran na tom racunaru...
 
Mislio sam se javiti davno prije, ali sam potpuno zaboravio. Ovaj cluster koji sam radio, dobio je prolaznu ocjenu i sa njim sam završio, ali rekoh možda bi bilo dobro da napišem u kratkim crtama šta sam sve uradio i dobio na kraju. Znači, izmjena u odnosu na prvu ideju ima ali je to tu negdje:

1. Storage računari
* Debian 5 Core
* iscsi target
* Export 50GB particije kao fileio (blockio nije htjeo, ne znam zašto)
* Podrška za multipath

2. Serveri - na kraju su oba u funkciji
* Debian 5 Core
* open-iscsi
* mdadm - Raid 5 od 3 iscsi diska, svi u funkciji, bez spare
* ocfs2 fajl sistem (gfs ne voli ovakav raid, često sam imao connection timeout)
* ucarp za ip failover
* Webmin za web administraciju
* apache2 + php5 + AjaXplorer kao korisnički servis

Toliko, ako se još nečeg sjetim, dopisaću ;)
 
Nazad
Vrh Dno