On Tuesday 05 December 2006 14:56, Mihai (Cop) Moldovanu wrote:
> Datele problemei sunt cam asa:
> - 2 masini pe care ruleaza aceeasi varianta linux.
> - Capacitatea de stocare pe fiecare masina este de aproximativ 1TB
> - Sever web configurat identic pe ambele masini sa serveasca continut
> static (adica pagini html si imagini, fara php sau cgi)
> - Continutul este totusi modificat foarte frecvent (odata la 5 minute
> aproximativ)
> - Cele 2 servere se afla in locatii diferite, retele diferite, iar
> datacenterele sunt legate intre ele prin fibra
>
> Cerinta e simpla, ambele servere trebuie sa serveasca acelasi continut
> intrucat se foloseste round-robin dns pentru a distribui cererile pe
> cele 2 masini.
> Practic un fel de raid 0.
>
> Any ideeas ?

Depinde la ce nivel vrei sa o faci (si de ce cerinte sunt asupra sincronizarii 
cat de rapid si cat de "atomic" sa se faca) si de cat de stabil sa fie.

In ordinea inversa a nivelului care (ca prin minune) inseamna si a 
stabilitatii ar fi:
1. rsync periodic
1.a stabilitate: foarte stabil fiind complet in userspace
1.b atomicitate: nici una, el facand rsync la nivelul fisierelor pe care le va 
gasi cand face (la scan si apoi continutul lor la copiere/transfer sau cand 
face md5)
1.c viteza: datorita algoritmului (care intai scaneaza pt a compara) e cam 
lent; daca ai foarte multe fisiere care nu se modifica vs putine care se 
modifica e foarte ineficient; solutia ar fi ca daca modificarile vin prin 
metode controlate strict (de genul acces FTP) atunci poti face cu ajutorul 
acelui server FTP (modul sau script ceva la el) sa tina intr-o lista 
fisierele modificate iar la rsync ii pasezi clar ce sa copie si eviti pasul 
de copiere

2. inhouse userspace solution
2.a/b: ca la rsync in principiu
2.c ca la rsync va trebui sa ai o solutie pt a nu scana tot fs-ul

2. drbd (kernel RAID1 over network)
2.a nu cred sa fie foarte stabil
2.b nici una
2.c se face real-time la orice modificare, dar e sistem master-slave (cum 
probabil ai face si cu rsync)

De fapt, daca tu vrei sincronizare in ambele sensuri (ambele FS-uri sa se 
poata modifica asincron in acelasi timp) atunci problema e MULT mai complexa. 
Gandeste-te de 10 ori inainte sa vrei sigur asta (daca vrei doar sa 
synchronizezi niste date MySQL care tin domeniile tale si sa ai un script 
care sincronizeaza pe disk-ul local informatia din MySQL nu are sens sa te 
complici cu a sincroniza 2 FS-uri ci fa un master/slave de MySQL redirectand 
toate modificarile catre master).

Deci daca vrei sincronizare pt modificari asincrone din oricare din locatii ai 
in primul rand nevoie de un clustered file system (ceva care sa stie sa 
trateze problemele de locking care pot aparea in aceste situatii) sau de un 
network filesystem daca vrei sa accesezi in comun acelasi FS fizic prin retea 
(cu NFS de exemplu).

GFS ar fi un clustered file system GPL, ar mai fi ala de la Oracle, restul 
sunt comerciale (ex. CXFS). Dar din cate stiu eu toate astea CFS-urile se 
bazeaza pe faptul ca la nivel low level (block device) se acceseaza acelasi 
lucru cumva. De exemplu pt 2 sau mai multe servere care acceseaza acelasi 
array de hdd-uri (prin (i)SCSI, fiber channel etc).

Hmm acu daca ma gandesc nu cred ca ti-am oferit o solutie exacta la problema, 
cred ca mai e posibil sa folosesti Intermezzo sau AFS (Andrew File System).

-- 
Mihai RUSU                                      Email: [EMAIL PROTECTED]
GPG : http://dizzy.roedu.net/dizzy-gpg.txt      WWW: http://dizzy.roedu.net
                        "Linux is obsolete" -- AST

_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui