Ako radite u većoj organizaciji, ona vjerojatno ima nekoliko desetaka računala koja nisu potpuno iskorištena. U mom primjeru, to su bila računala koja su obavljala funkciju web kioska.
Što možemo učiniti s njima? Pretpostavimo da možemo podijeliti podatke u dijelove (shards), staviti svaki dio u memoriju jednog računala i pokrenuti komadić koda preko njih... Zvuči pomalo kao Google map/reduce , ali kako to implementirati?
Za taj zadatak implementirao sam Sack - http://blog.rot13.org/sack/ koji podatke iz različitih izbora sprema u memoriju i izvršava paralelne upite preko njih. Pogledati ćemo kako ga napuniti podacima i iskoristiti za obrade koje su prevelike ili prespore za jedno računalo.
Upravljanje računalima koja su dio našeg clustera je poseban izazov. Za rješenje tog problema odlučio sam implementirati PXElator - http://blog.rot13.org/pxelator/ koji nam omogućava jednostavno podizanje računala preko mreže, nadzor i administraciju.
Temu ćemo zaokružiti još jednim zanimljivim projektom koji nam omogućava distribuirani fork: Gearman - http://gearman.org/. Tako naše obrade podataka možemo podjeliti na manje dijelove pisane u različitim jezicima (perl, php, python, C, shell, Java) i sve to skupa integrirati s relacijskom bazom podataka u pretraživač web stranica Narada - https://launchpad.net/narada
Korištenjem ovih dijelova dobili smo distribuiranu memoriju, distribuirano pokretanje obrada podataka i jednostavnu administraciju: naš vlastiti Google :-)
1. Kako napraviti Google od
zgrade s računalima?
Dobrica Pavlinušić
http://www.rot13.org/~dpavlin/
HULK, Knjižnica Filozofskog fakulteta u Zagrebu
DORS/CLUC, Zagreb, 7. svibnja 2010.
2. Zašto?
Imate neka računala koja nisu
sasvim iskorištena,
a troše struju
Uvijek ste htjeli imati svoj cluster!
3. Sadržaj
● Računala
– Web kiosci za pretraživanje kataloga
● Network boot i monitoring
– PXElator
● Distribute data
– Sack
● Distribute computing
– Gearman, Narada
● Dokumentacija
– Sysadmin Cookbook, bak-git
4. Nađite računala
● Web kiosci za
pretraživanje kataloga
knjižnice
● Dell Optiplex755
– 2Gb RAM
– Core2 Duo E7200 @
2.53GHz
– 80Gb Hitachi disk
● 5 katova+prizemlje
– 24 Gb RAM
– 30.36 Ghz CPU
– 960 Gb disk
5. Pretraživanje kataloga
● Koha – knjižnični software s web sučeljem
● Webconverger
– Debian Live distribucija
– Firefox, skrivanje URL-a
– Boot s mreže bez korištenja diska
● Svaki ormar ima 100Mb/s switch (sigh!) zbog
manjska mrežnih utičnica
● http://webconverger.com/
6. PXElator
● Replace system administration with perl
script
● Protocol soup:
– DHCP, TFTP, HTTP, DNS, syslog, WOL,
AMT, DRAC5
● Store audit data in MongoDB
● Configuration in files/perl code
● Provision netboot, KVM, nfsroot
● Additional toos: nmap, wireshark
● http://blog.rot13.org/pxelator/
8. Sack
● Distribuirani memorija sa ad-hoc upitima u
obliku perl funkcija
● Svi ostali pristupi su prespori ili
prekomplicirani za korištenje
– CouchDB
– MongoDB
– HyperTable
● Shard-nothing pristup
– Cluster, multi-core
● http://blog.rot13.org/sack/
9. Kako napuniti vreću?
● pure-perl client
● configure (hosts+ssh config/keys)
● deployment over ssh/cpio on startup
– ssh compression for network speedup
● source data for shards from CouchDB,
MongoDB, WebPAC, text files...
● Edit perl ad-hoc query in vi
● Web interface
– query execution and overview
– with gnuplot graphs for time data
10. Cijeli sustav
● PXElator
– boot nodes
– audit data
● Sack
– shard data
– distribute
– ad-hoc query
● Fun and profit!
11. Gearman
“The way I like to think of Gearman is as
a massively distributed, massively
fault tolerant fork mechanism.”
- Joe Stump, Digg
18. Sysadmin Cookbook
● Dokumentation for me, two years later
● Fast and easy deployment
● Convention over documentation
– number.name
– magic names
● sh, append, replace
– symlinks to keep original locations
– commit messages for documentation
● http://sysadmin-cookbook.rot13.org/
19. bak-git centralni SCM
● System configuration management
● Centralni git repozitorij
– Poznate git komande (s/git/bak/)
● Jednostavan deployment
– ssh, rsync, netcat, shell (bak)
● Audit log svih promjena (security!)
● Svako računalo ima svoj direktorij
– Uspoređivanje konfiguracija
● Web sučelje: gitweb
● http://blog.rot13.org/bak-git/
20. O čemu smo pričali?
● Nađite neiskorištenja računala
● Pojednostavite upravljanje
– PXElator, netboot
● Podjelite podatke po njima
– Sack, ad-hoc query
● Paralelizirajte obrade podataka
– Gearman
● Dokumentirajte učinjeno
– Ne postoji bez dokumentacije