Virtualizációs kérdés

 ( sipiatti | 2018. február 17., szombat - 18:18 )

Sziasztok!

Előre bocsátom, hogy virtualizációban a virtualbox felhasználói alkalmazásának szintjéig jutottam. Egy barátom azzal fordult hozzám, hogy erős gép kellene neki ipari adatgyűjtéshez, de nem igazán szeretne/tudna egy ipari árú hardvert vásárolni, ezért arra gondolt, hogy biztos van olyan lehetőség a mai világban, hogy kvázi normál pc-ket összefogva clusterbe, azon így egy brutál teljesítményű virtuálgépet lehetne futtatni linux guest-tel, pl.debian.
A szoftvere főleg pythonban íródott, és a postgres az adattárolója.

Próbáltam ilyesmiről valamit találni, de biztos rossz keresőkulcsokat próbálok. Amit én találtam, az a linuxos clusterek témája master node + computing node-ok, amit Beowulf cluster típusnak mondanak, és a High Performance Computing célra használnak, azaz számítási kapacitás növelésére. Ezek olyan szoftvereket tudnak hatékonyan futtatni, amiket felkészítettek párhuzamos futásra. Na most egy vm és egy guest os nem ilyenek szerintem.

Létezik ilyen megoldás? Ha igen, hogy keressem, hogy többet tudjak meg róla?

Köszönöm a jószándékú segítséget előre is!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Nem. Egy vm csak egy fizikai gépen tud csak futni.

A skalazodast másik rétegben kell megoldási.

A felhasználás szerintem erősen db io igényes így a PostgreSQL cluster irányába indulva ezt a réteget leemelnem a kód mellől.

A kódot meg kell vizsgálni hogy hogyan lehet szetbonrani pl collector, escalator, process részekre és külön gépekre tenném ha már egy kevés neki. A db alá viszont mindenképpen ssd-t tegyél. Szerintem.

Ha mindenképpen 1 db vm akkor csak egy nagy gép segíthet, ami komolyan pénz kérdése de az AMD processzorai most új ár-teljesitmeny szintet ütötték meg.

Pár dolgot azért tiszázni kellene!
Mit takarnak ezek a fogalmak:
- ipari adatgyűjtés?
-- ipari?
-- adatgyűjtés?
- erős gép?
Segíségképp érdekes lehet az adatforrások
- száma
- sávszélessége
- frekvenciája
Esetleg ezeknek a trendje, ha van ilyen.

Szerintem adatgyűjtéshez ritkább esetben kell nagy teljesítmény.

Elasticsearch cluster

Többet kéne tudni, mennyire érzékenyek az adatok, a gyűjtés vagy a feldolgozás erőforrásigényes-e, mennyire darabolható illetve megszakítható a munka, na meg mennyi pénz van rá. Ennek függvényében a megoldások széles skálán mozognak, pl olcsó vm-eken vagy FaaS-on futó adatgyűjő kód és jóárasoított (https://aws.amazon.com/ec2/spot/) vm-eken időszakosan futó feldolgozástól odáig, hogy megveszi az AWS-en elérhető legerősebb instanceot.

Alapozó: https://gist.github.com/jboner/2841832

Ha több gépet összekötsz hálózatban, még ha össze is lehetne fogni őket egy virtuális gépbe, nem hogy gyorsabb, inkább nagyságrendekkel lassabb lenne, mint gondolnád, és ezért nem is létezik ilyen megoldás.

Illetve olvass utána, mi az a horizontális és vertikális skálázódás.

Ezek után nagyon pontosan definiálni kellene, milyen erőforrásból (RAM, HDD, SSD, CPU, GPU, fizikai portok...) mennyi kellene.

Tényleg adatgyűjtésről van szó, vagy gyűjtés-előszűrés-tárolás feladatáról?

HA az adatbázisát elég gyorssá tudja tenni (már ez is sokparaméteres egyenlet, de általában utánaolvasással nagyságrendnyi tempóváltozás érhető el az ad hoc CREATE TABLE-hez képest), akkor "csak" a jelenleg monolit/nem párhuzamos (ha jól értem) kódját kell szétdarabolnia több funkcióra, ezáltal több gépre, és az adatbázist mint adatbuszt felhasználhatja közöttük.

DE, ahogy a kolléga említette is, tisztázni kéne, mit jelent az ipari, mert pl. ha azt, amit a szó jelent, akkor érdekes feladatból a rendelkezésreállást és az adat biztonságát is tartalmazó idegesítő problémává.

Köszönöm a válaszokat.
Ipari, mert gyártó üzem automata gyártógépeiről származó adatokról van szó, és természetesen nem csak gyűjteni kell az adatokat, hanem a kapott adatokból dolgozni is kell, esetleg a folyamatokba is beavatkozni. Ez a beavatkozás esetenként több folyamatot triggerel, amik hirtelen nagy tömegű adatfeldolgozást is igényelnek. Az adatgyűjtő pontok száma több száz is lehet, minthogy a másodpercenkénti adatok számai is elérheti akár a több százat is gyűjtőpontonként, ez mindig az adott üzem/folyamat aktuális követelményeitől függ. Többet nem tudok róla, és még kísérleti fázisban van a projekt, ezért merült fel a clusterezés (ahol több gyártógép van, ott több node-ból álló feldolgozó működne).
Marad a feladatok több gépre osztása és a db clusterezése, oké, ez járható út.

Egy dologra még kíváncsi lennék, az amazon és hasonló szolgáltatók milyen hardverekkel szolgáltatják a virtuál instance-jaikat? Én majdnem biztosra vettem, hogy valami clusterezett cucc, hasonlóan amit a topiknyitóban kifejtettem...

---
Why use Windows, if you have open doors… to Linux

Ott sem nőhet egy instance az alatta futó HW méretein túl.
--

"After successfully ignoring Google, FAQ's, the board search and leaving a undecipherable post in the wrong sub-forum don't expect an intelligent reply."

már AiRLAC is leírta, de akkor még egyszer: (virtuális gép erőfforrása) < (alatta lévő vas maximális erőforrása) ennek mindig teljesülnie kell, a virtualizáció nem tud olyan "magic"-et amit elképzeltél.

egy gondolat az eredeti problémához:
Ha a projektje egyelőre pilot jellegű, akkor induljon el egy akármilyen géppel és első körben gyűjtse össze/ dolgozza fel csak az adatok egy részét. Ha kicsiben működik, illetve van értelme akkor pedig nem szabad, hogy anyagi gond legyen egy nagyobb vas beszerzése egy olyan helyen ahol "több gyártósorról jönne többszáz adat".

Nem biztos, hogy ezt megéri a nulláról kezdeni, több nagy cég is készít ipari iot megoldásokat, cloud alapokon.

Jaja. Ez siman menne amazonon kinesis+elastic(ELK) komboval szerintem.

Nem akarok cégeket mondani, mert az egyiken dolgoztam is (azt mondjuk pont nem ajánlanám :D), de ennél konkrétabb megoldások is vannak, ahol ha nagyon kényelmesek akarnak lenni, elég egy agentet berakni a gépek mellé, de saját adatküldés is megoldható api-n keresztül, a rendszerben meg már vannak beépített analitikák, persze kiegészíthető sajáttal vagy third party-val.

ize...hat ez a aws kinesis mondjuk, amit leirtal :D

De ugye ezer masik felhoszolgaltatonak is van ilyen rendszere es ezer mas modon is meg lehet csinalni amit kellene, ha tudnank pontosan mit kellene. :D

Annak van sok mondja, hogy az eroforrasokat elmaszatoljuk egy nagy egysegbe, de az nem a virtualizacio. Az arra valo, hogy szetaprozd az eroforrasokat. Mas az irany.

De persze lehet a virtualizalt gepekbol egy pool-t epiteni. A valaszok amiket keresel a distributed systems alatt vannak.
Van distributed computing, meg distributed storage, meg ezek kevereke.

Az amazonnak csomo szolgaltatasa a VM felett mukodo disstributed system-ekbol all. A BigData gyujto alatt lehet szep szammal talalni ilyet.

AZ az igazsag, hogy ha nem ert az ember ezekhez a dolgokhoz, akkor bizony kell egy architect, mert ahogy mindig mondom: a megfelelo eszkozt keressuk a problemara es nem rafeszitunk valamit.

Tehat lehet kalapaccsal tortat szeletelni, csak nem lesznek szepek a szeletek, nem lesz elvezheto az izuk, stb. stb. Javaslom inkabb a tortalapatot.
A problema, hogy nem csak Te, hanem mi sem tudjuk, hogy egylatalan tortat kell e szeletelni, vagy sertesoldalast, vagy csak hengerfejet kell cserelni. Mert nem mindegy, hogy ebben az esetben mit javaslunk a szeleteleshez: tortalapatot, hentesbardot, emelo+kerekkulcs kombot.

Ha sok az IO, akkor vinyó helyett SSD, élesben persze SSD-kből RAID10+ spare.
Illetve ha - viszonylag - függetlenek egymástól az adatok, akkor lehet akár 10-20 adatgyűjtő pontonként egy gépet beállítani, de ez nem feltétlenül lesz olcsóbb, mint egy nagyobb vas. (A "bedobom a 10 éves desktop pc-t 512 RAM-mal és valami cerkával, úgyse jó másra" dolgot el kell felejteni, hacsak nem hobbyproject az egész.)