Klaster (infotehnoloogia)

Ajalugu

Teema kohta, kes ja millal lõi esimese klasterarvuti, leidub vastakaid arvamusi. Üks esimestest kohtadest, kus kasutati midagi klastrisarnast, on IBM ja MIT poolt 1950. aastatel ehitatud SAGE õhukaitsesüsteem USA õhujõudude jaoks. SAGE-s kasutatud arvutite ülesandeks oli võrrelda teadaolevate lendude trajektoore radaritelt saadud informatsiooniga, et varakult tuvastada võimalikke vaenlase lennukeid. Selleks kasutati igas SAGE baasis kaht omavahel ühendatud arvutit. Ühe riknemisel sai teine arvuti kohe esimese ülesanded üle võtta.
Läbimurre sobivate riist- ja tarkvaratehnoloogiate väljakujunemisel toimus 1970ndate lõpus: võeti kasutusele esimesed mikroprotsessorid. Hakati laiatarbeliselt tootma personaalarvuteid ja tööjaamu. Valmis etherneti kohtvõrgu standard, mis oli ka hinna poolest võrdlemisi soodne.
80ndatel hakkas tõusma huvi klastrite potentsiaali vastu. NSA kasutas 160 Apollo tööjaama klastrina teatud arvutuste läbiviimiseks. DEC arendas välja süsteemi, mis koosnes mitmest omavahel ühendatud AX11/750-st, ja võttis ka esimesena kasutusele termini "klaster". Sellel perioodil hakkas teaduslik kogukond laialdaselt uurima paralleelarvutuste võimaluste rakendamist. Töötati välja ka sõnumiedastusmudel, mis domineerib tänapäeva klasterarvutamist.
Väga oluline muutus oli 1989. aastal loodud PVM, mille ülesandeks oli andmeedastuse koordineerimine klastrisse kuuluvate arvutite vahel. See oli esimene hajus tarkvarasüsteem, mida sai rakendada paljudel platvormidel.
UC Berkley projekti NOW raames loodi 1993. aastal esimene klaster, mis pääses TOP 500 maailma kõige võimsama arvuti nimekirja. Samal aastal toodi turule ka Myrinet, võrgutehnoloogia, mis oli oluliselt kiirem kui samal ajal kasutuses olnud kiire Ethernet.
Esimese Beowulf-tüüpi PC-arvutite klastri töötas välja NASA 1994. aastal, rakendades varajasi Linuxi versioone ja PVM-i. Kasutati 16 Inteli 100 MHz 80486 protsessoriga PC-arvutit, mis olid omavahel ühendatud 10 Mbit Etherneti abil. Samal aastal arendati välja ühtne sõnumiedastussüsteem MPI. MPI on tänapäeval peamine klastrite teekide standard.
1996. aastal Los Alamos National Laboratory ja CalTEC koostöös NASA-ga suudeti luua 1 GigaFlopsise Beowulf süsteem, mis maksis vaid 50 000 dollarit. Selle eest teenisid nad ka Gordon Belli hinna/jõudluse preemia.
Sajandi lõpuks oli TOP 500-sse jõudnud 28 klastrit, millest parima sooritus oli 500 GigaFlopsi. 2000. aastate alguseks ületati kiiresti ka ühe TeraFlopsi piir.

Klassifikatsioon

Üks võimalikest klastrite liigitusviisidest on nende jagamine tööülesandeks ehk funktsiooniks järgi. Tasub mainida, et igat klastrit ei saa tihti üheselt kindlasse gruppi liigitada. Näiteks on tüüpiline, et arvutusklaster on samal ajal ka töökindlusklaster.

Töökindlusklaster (inglise High Availability cluster)

Klastrid, mille puhul on tähtis, et süsteem oleks alati töökorras. Tüüpiline töökindlusklaster jaguneb primaarseks sõlmeks, mis täidab mingit ülesannet, ja tagavarasõlmedeks, mis on kuulavas režiimis. Primaarse sõlme riknemisel võtab mõni teine klastri sõlm selle tööülesanded üle. Sedasorti klastreid kasutatakse eelkõige serverite jaoks, mis peavad pidevalt olema võimelised oma teenust pakkuma. Nendeks võivad olla näiteks kriitilise tähtsusega andmebaasid, failide jagamine, äri- ja klienditeenindusrakendused.
Tavaliselt kasutatakse kahest sõlmest koosnevaid HA klastreid, kuid on olemas ka tunduvalt suuremaid. HA klastri sõlmed peavad omama alati ühtesi ja samu andmeid. Selleks kasutatakse kas ühiseid või eraldiseisvaid salvestusseadmeid. Eraldatud salvestusseadmete korral peavad tagavarasõlmed pidevalt enda andmekandjatele primaarse sõlme andmeid ümber kopeerima.
Oluline omadus HA tarkvara puhul on see, et kui kõikide sõlmede vahel peaks korraga ühendus katkema, ei tohi arvutitel tekkida arusaam, et nad kõik peaksid hakkama primaararvutiks. Selline olukord võib kiiresti viia andmete riknemiseni.

Koormuse jagamise klastrid (inglise Load balancing cluster)

Koormuse jagamise klaster, tuntud ka kui serverfarm, on omamoodi hübriid töökindlusklastrist ja arvutusklastrist. Töökoormus tasakaalustatakse sõlmede vahel, et suurendada läbilaske võimet, vähendada viiteaegu ja vältida ülekoormatust. Samas ühe sõlme riknemise korral on võimalik koormus teistele arvutitele üle kanda nagu HA klastris. Koormuse jagamise klastreid kasutatakse peamiselt veebiteenuste puhul.

Komponendid

Laialt võttes võib iga klastri jagada kolmeks komponendiks: arvutiteks ehk sõlmedeks (node), võrguks, mis sõlmi ühendab ja tarkvaraks, mis oskab paralleelsust ära kasutada.

Mängukonsoolid

Sõlmed klastris ei pea olema ilmtingimata tavalised arvutid. Arvutusklastreid on ehitatud ka PlayStation 2, PlayStation 3 ja Xboxi mängukonsoolidest.
Üks PlayStation 3 klaster on kasutuses ka Tartu Ülikooli matemaatika-informaatikateaduskonnas.

Võrgud

Klastersüsteemides kasutatavad võrgutehnoloogiad peavad olema suure ribalaiusega ja väikese latentsusega, et sõlmed saaksid omavahel kiiresti andmeid vahetada. Suur ribalaius on tähtis eelkõige suurte andmehulkade vahetamisel. Reaalajas toimivatele rakendustele või rakendustele, mis vahetavad tihedalt sõlmede vahel andmeid, on eriti tähtis madal latentsus.
Üks levinud lahendus on Gigabit Etherneti kasutamine, kuna see on üks soodsamaid tehnoloogiaid ja pakub piisavat jõudlust enamiku toimingute jaoks.
Suuremate kiiruste saavutamiseks on ka kasutusel spetsiaalselt suure arvutusjõudluse jaoks loodud Myrinet ja Infiniband.
Infiniband on Gigabit Etherneti järel praegu TOP 500 superarvutite seas kasutatavuselt teisel kohal. Infinibandi arhitektuuri spetsifikatsioon defineerib ühendused protsessorite ja suure jõudlusega sisend-/väljundseadmete vahel. Infinibandi omadustest on silmapaistvad suur läbilaskevõime, madal latentsus, QoS(inglise Quality of Service) ja skaleeritavus. Kasutatakse nii vask- kui ka valguskaableid.
Myrinet on firma Myricom loodud kohtvõrgusüsteem, mis on loodud spetsiaalselt klastrite jaoks. Myrinetil on Ethernetiiga võrreldes palju väiksem protokollipaketti juhtiva ja kontrolliva informatsiooni hulk. Tänu sellele on Myrinetil suurem läbilaskevõime ja väiksem latentsus. Myrinetti kasutatakse tihti olukordades, kus programm suhtleb otse võrguga, jättes OS poole pöördumata. Füüsilisel tasemel kasutatakse kaht optilist kaablit, üles- ja allavool, mis on ühendatud ühe ja sama pistiku külge.

Tarkvara

Levinuimad on Linuxi-põhised operatsioonisüsteemid. Väiksemates klastrites tehakse reeglina sõlmede operatsioonisüsteemide paigaldus manuaalselt, suuremates aga kasutatakse selleks kloonimissüsteemi. Kloonimissüsteem paigaldab operatsioonisüsteemi ja muu vajaliku tarkvara klastri sõlmedele. Sellega tegeleb tavaliselt eraldi serverarvuti.
Omavahel ühendatud arvutid seotakse ühiseks arvutussüsteemiks tarkvaraga, mida kutsutakse vahevaraks. Vahevara on tarkvara kiht, mis aktiivselt tegutseb operatsioonisüsteemi ja kasutaja rakenduste vahel. Vahevara seob sõlmed omavahel sõnumiedastustega, protsesside liigutamisega ning ülesannete jälgimise ja sünkroonimisega sõlmede vahel.
Levinumad teegid paralleelprogrammeerimise jaoks on PVI (inglise Parallel Virtual Machine) ja MPI (inglise Message Passing Interface). Traditsiooniliselt toetavad paralleelprogrammeerimise teegid keeli C, C++ ja Fortran.
Kogu klastri jaoks vajaliku tarkvara ülesseadmiseks on loodud ka tarkvarakomplekte, mille paigaldamisel on võimalik saada klaster kiiresti tööle. Teatud komplektide, näiteks ROCKS, puhul kaasneb ka operatsioonisüsteem. Selline viis lihtsustab küll oluliselt klastrite tarkvara paigaldust, kuid sellega võivad kaasneda teatud puudused. Näiteks teatud paketiga võib tulla kaasa tarkvara, mida ei ole klastril parasjagu vaja ja mis teeb klastri haldamise keerukamaks. Levinumad tarkvarapaketid Linuxile on NPACI Rocks, OSCAR ja Scyld Beowulf. Lisaks on olemas ka võimalusi, kus kogu vajaliku tarkvara saab buutida CD-ROM’lt või mälupulgalt igale arvutile klastris ja otseselt paigaldamist ei olegi vaja.
Arvutusklastrite rakendamine ei ole sobiv kõikide arvutuste jaoks. Selleks, et klaster ennast ära tasuks, peab olema võimalik rakendatav ülesanne jagada paralleelseteks osadeks, mida iga sõlm eraldi saaks lahendada. Amdhali seadus ütleb, et programmi lõpetamiseks kuluv aeg on mitmeprotsessorilistes süsteemides piiratud sellega, kui palju aega kulub kõige aeglasema mitteparalleelseks muudetava osa töötlemise peale. Olukorras, kus programm ei ole hästi paralleelseteks osadeks muudetav, on tõhusam kasutada üht kiiret arvutit kui paljusi paralleelseid arvuteid. Tüüpiliselt osa koodist, mis on paralleelseks muudetav ülesande suurenemisel, kasvab kiiremini kui see osa, mis seda ei ole. Järelikult Amdhali seadusest tulenev probleem ka enamikul juhtudel ülesande suurenedes tegelikult väheneb.