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
