Klaster – mit ili istina – šta je to klaster?

Radeći kao MySQL Cluster inženjer često se srećem sa različitim interpretacijama značenja reči klaster. Imam jednog drugara koji već jedno godinu dana ne može da prihvati da “klaster” nije “mnogo mašina koje se vide kao jedna”… to je nekada neko tako predstavio ovde na ovim našim Balkanskim prostorima i vrlo je teško osloboditi se te pogrešne postavke koju ljudi imaju onog trenutka kada čuju reč klaster.

Dakle, klaster nije “nekoliko računara koji se vide kao jedan”.

Šta je onda klaster?

Klaster: grupa istih ili sličnih elemenata grupisanih blizu jedni drugih – gomila.

To kaže rečnik, ako primenimo to na računarsku tehniku, klaster je skup umreženih računara koji rade zajedno na istom poslu.

Šta to sad u stvari znači, ja imam moj php server i moj rdbms server i oni rade na istom poslu (serviraju moj blog), jel to sad klaster – nije. Ali oni su grupa, i rade jedan posao? Gde je greška? Greška je u “jedan posao”, ne rade ga, oni zajedno prikazuju blog, ali rade dva posla, opsluzuju korisnike i generisu html sa jedne i cuvaju podake sa druge strane.

Drugi setup … imam 2 mysql servera u cirkularnoj replikaciji + web server – i opet, sve to zajedno servira moj blog – da li je to klaster? Da i ne :D … ona 2 servera u cirkularnoj replikaciji – to je klaster. Ta dva servera čine klaster mysql servera (obrati pažnju to nije proizvod MySQL Cluster – to je klaster mysql servera) i oni zajedno odradjuju posao čivanja podataka. Šta je još primer za klaster, load balancer + 2 web servera. Te tri mašine zajedno čine klaster… Dakle, nekoliko računara koji rade zajedno isti posao + poneki računar koji ih kontroliše (na primer onaj load balancer u drugom primeru) čine klaster.

Kakvi sve onda klasteri postoje? Realno – klaster je preširok pojam da bi imao neku kvalitetnu klasifikaciju ali možemo, ako malo zažmurimo na jedno oko, da ih podelimo na:

Ovo su neke najopštije grupe ali opet postoje razni preseci tako da je teško definisati tačno svaki scenario. Na primer ako imamo sistem:

masina1:  MySQL
masina2: Apache+PHP
masina3: Apache+PHP

masina9: Apache+PHP
masina10: load balancer

to bi bio LB klaster. Šta će se desiti ako crknu mašine 5,6,7,8,9? Ništa strašno, klaster će da izgubi na performansama pošto će load balancer da shvati da tih mašina više nema i neće im slati “poslove”. Ali ako crkne mašina1 – ceo klaster pada u vodu, pošte svi ovi ostali serveri zavise od tog jednog da bi pravilno radili.

Zamislimo sada drugi scenario:

masina1: MySQL master
masina2: MySQL slave
masina3: Apache+PHP
masina4: Apache+PHP
masina5: load balancer

Mašina 1 i mašina 2 su u replikaciji, ako mašina1 rikne mašina2 se promoviše u mastera. Load balancer i dalje šalje upite i na 3 i na 4. Dakle ovo je sada i LB i HA klaster pošto imamo failover na database serveru i load balancing na apache-u. Na žalost ovde imamo “single point of failure” a to je load balancer koji ako rikne klijenti ne mogu prići serveru, no to bi lako rešili tako što bi stavili dva load balancera i dodali oba u dns no to je priča za neki drugi put. Ovo možemo gledati i kao 2 klastera koji čine sistem (i to je realno pravilnije ali nije baš uobičajeno) gde prvi klaster (HA) čine 2 mysql servera a drugi 2 apache servera sa load balancerom.

Ono što je značajno za klastere je klaster management sistem koji svaki klaster mora da ima. U slučaju HA klastera, taj management sistem brine o failover-u kada jedan nod više nije u funkciji i raznim drugim problemima koji se javljaju u klaster okruženju. Na unix sistemu trenutno su Heartbeat/Pacemaker ekipa najpopularniji, tu su naravno i mnogi drugi, opet jedne gura RedHat, druge gura Novell .. izgleda podele nisu samo na Balkanu. Vezano za load balancing klastere, load balancera ima mnogo i obično su vezani za servis koji klaster treba da pruži.

Neki dan pisah o MySQL Cluster-u. Bitno je primetiti da je to proizvod koji u svom imenu ima reč klaster. MySQL Cluster uopšte ne mora da bude klaster – ceo može da sedi na jednoj jedinoj mašini. Dakle to je proizvod koji nudi high availability i high reliability i high performance ali je i dalje proizvod i različit je od “klasra mysql servera”, pošto MySQL ima više od jednog HA rešenja i svako može da se zove “klaster”.

VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

October 13, 2009 • Tags: , • Posted in: Razno, Support

4 Responses to “Klaster – mit ili istina – šta je to klaster?”

  1. momsab - October 13, 2009

    ovako kontam klaster (vidm i da ne gresim): kao grozd :)

    lepo si obajsnio, jos da si ubacio slicice bilo bi savrseno :D

    VA:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.22_1171]
    Rating: -1 (from 1 vote)
  2. Bogdan Kecman - October 15, 2009

    kakve bre slicice? mogao sam da stavljam slike grozdja ili tako nekih bobica, ili nekog cveca ili jos gore slike rekova sa serverima … ne vidim da bi to bilo sta “pojasnilo” .. ko ne razume tekst – slikovnica mu nece mnogo pomoci :( .. a sto se tice “vizualnog dela” – ja se ponosim sto nisam dizajner :D

    VN:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  3. momsab - October 17, 2009

    u DIA izaberes nekoliko kompova, pvoezes ih, das im nazive i sve je ljudima jasno (bez citanja :D ) :)

    uradicu ja cim nadjem malo vremena

    VA:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  4. Bogdan Kecman - October 17, 2009

    ma jok … nema potrebe, ko ne konta reci necu da mu crtam… :)

    a slicice ce da idu uz jedan od sledecih postova (HA resenja sa mysql-om)

    VN:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

Leave a Reply