Discutam intr-una din zile cu un amic, coleg de breasla, despre un proiect de a crea un cluster highly available de webservere.
Datele problemei sunt cam asa:
- 2 masini pe care ruleaza aceeasi varianta de sistem de operare
- 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
- capacitatea de stocare pe fiecare masina este de aproximativ 1TB
Cerinta e simpla, ambele servere trebuie sa serveasca acelasi continut intrucat se foloseste round-robin dns pentru a distribui cererile pe cele 2 masini.
Astept ceva comentarii si propuneri de la voi, mai tarzium am sa revin si cu solutiile propuse de mine, inca nu stiu pe ce solutie a mers amicul meu.
Poi daca folosesti algoritmul ala, inseamna ca mai exista o masina care decide cine serveste ce cerere.
Eu as face asa:
svn/cvs pe serverul ce face si load balancing.
Cei doi clienti, cu un script in cron, fac din 5 in 5 minute svn/cvs up de la serverul ala pentru content.
Nu cred ca este un server care face load balancing ci se foloseste round robin de catre serverul dns pentru a repartiza cererile. Trebuie gasita o solutie real-time -- cron nu este o solutie. Si anyway cand e vorba de date identice in locatii diferite se foloseste rsync, nu cvs/svn.
Am niste idei... voi posta cand ajung acasa...
Hmm, ... poate trebuie sa evidentiez cumva partea cu 1 TB spatiu de stocare. Pe asemenea cantitate de data protocoale gen rsync nu sunt o solutie utila, un rsync pe dimensiunea aia de date are nevoie de mult mai mult decat 5 minute.
Noah, alte solutii? Acum sunt curios :D
Quote from: ccc on 06 December 2006, 16:23
Noah, alte solutii? Acum sunt curios :D
Pai eu ma gandisem la un global filesystem, gen gfs2 sau ocfs2, problema cu aceste sisteme de fisiere este ca sunt dependente de un mediu de stocare shared, ceea ce e imposibil deoarece masinile sunt in locatii diferite.
O solutie experimentala de care mi-a pomenit amicul meu este Network Block Device (http://nbd.sf.net/) doar ca nu m-am atins de ea pana acuma deci am 0 experienta.
Oricum, solutia temporara aleasa e rsync, pana ce o sa inceapa sa se umple disc-urile si rsync-ul nu va mai fi o optiune viabila.
Quote from: kman on 06 December 2006, 21:24
Pai eu ma gandisem la un global filesystem, gen gfs2 sau ocfs2, problema cu aceste sisteme de fisiere este ca sunt dependente de un mediu de stocare shared, ceea ce e imposibil deoarece masinile sunt in locatii diferite
Nu e imposibil; poti folosi GFS2 cu locatii diferite si tot o sa ai global locking, eventual VPN. GNBD installation (http://gfs.wikidev.net/GNBD_installation)