(Nieuwe pagina aangemaakt met '{{Project |Naam=ARM Cluster |Eigenaar=Cooper |Status=Uitvoer |Skills=Hout bewerken, 3D printen, computer assemblage |Samenvatting=Bouwen van een compacte cluster co...') |
|||
Regel 61: | Regel 61: | ||
18-08-2015 Lid geworden van Hack42 :-) .<br /> | 18-08-2015 Lid geworden van Hack42 :-) .<br /> | ||
20-08-2015 Bestelling 15 Orange Pi Mini 2s, USB3.0 GbE adapter en PSU.<br /> | 20-08-2015 Bestelling 15 Orange Pi Mini 2s, USB3.0 GbE adapter en PSU.<br /> | ||
+ | 22-08-2015 [https://hack42.nl/wiki/Bestand:ARM_Cluster_Picture.jpg Derde mock-up], op schaal. 4 pixels = 1 mm. | ||
<br /> | <br /> | ||
~ 09-2015 Ontvangst Orange Pi Mini 2s. Begin slede design.<br /> | ~ 09-2015 Ontvangst Orange Pi Mini 2s. Begin slede design.<br /> |
Versie van 22 aug 2015 12:29
Project: ARM Cluster | |
---|---|
Naam | ARM Cluster |
Door | Cooper |
Status | Uitvoer |
Madskillz | Hout bewerken, 3D printen, computer assemblage |
Doel / Omschrijving | |
Bouwen van een compacte cluster computer op basis van 15 Orange Pi's | |
Alle Projecten - Project Toevoegen |
Waarom?
Ik wil mijzelf verdiepen in de wondere wereld der schaalbaarheid.
Tot op heden zijn alle software performance problemen waar ik mee geconfronteerd ben geweest opgelost door middel van efficiëntere algoritmen dan wel door plaatsing van steviger ijzer. Dat blijkt op zich effectief, maar wat doe je wanneer dat simpelweg niet meer kan? Wanneer je een eigen Facebook/Twitter/Youtube/Google bedacht hebt en het opeens ook echt storm gaat lopen? Je kunt, zoals 1 van de klanten op mijn werk, alles in een Superdome draaien, maar op een gegeven moment is de rek er toch echt uit. Een High Performance cluster kan dan een oplossing zijn.
En wat wanneer de instelling waar je software draait het zich simpelweg niet kan permitteren dat je applicatie niet thuis geeft? Hardware kan opeens stuk gaan, een beheerder kan per abuis je machine uitgezet hebben, een update vereist een reboot. Sommige zaken kan je plannen maar het komt toch altijd ongelegen. Een High Availability cluster kan hier de oplossing zijn.
En natuurlijk kan je de twee combineren. Maar elke oplossing komt met z'n eigen randvoorwaarden en mijn plan is om te gaan kijken hoe ik welke soort toepassing optimaal kan laten lopen in een dergelijke configuratie.
Is dit nieuw of anders?
Nieuw zeker niet. Een van de eersten die dit idee ten uitvoer brachten is de universiteit van Southampton met hun 64-node Raspberry Pi cluster, gemaakt met onder andere Lego. En zijn andere, kleinere clusters gemaakt van Raspberry Pi's.
Mijn cluster idee wijkt af van de andere in dat dit cluster aanzienlijk compacter is: 15 compute nodes, 1 controlling node, 16-poort switch, voeding en opslag in een doos van ongeveer 40x20x12cm. Daarnaast lopen er maar 2 kabels naar die machine: stroom en netwerk.
Welke componenten en waarom juist die
- Compute Node (15x): Orange Pi 2 Mini
Deze bordjes combineren enkele zeer aangename eigenschappen:
- Goedkoop. Minder dan 25 euro per stuk vanuit productieland China.
- Zuinig. Compact betekent weinig ventilatie. Veel stroom = veel hitte en ik wil liever niet actief koelen.
- Passief. Gerelateerd aan het voorgaande, maar wanneer de boel aanstaat wil ik me niet storen aan excessieve herrie.
- Krachtig. De CPU, een hagelnieuwe AllWinner H3, is een quad-core A7 processor.
- Goede support. Weliswaar niet zozeer vanuit de maker, maar de linux-sunxi groep die bordjes zoals deze in Linux supporten is erg actief.
- Veel geheugen. Voor een java programmeur is geheugen altijd welkom en deze bordjes hebben 1GB DDR3 aan boord.
- Control Node (1x): MinnowBoard Max
Belangrijk voor mijn controlling node was 2xGbE en 1x SATA of USB3.0 voor opslag. Ik had het liefst alles op ARM laten lopen, maar die specifieke combinatie is op dit moment niet beschikbaar in de ARM wereld voor een enigszins schappelijk prijsje dus kwam ik uit op de MinnowBoard Max, een bordje opgebouwd rondom een zuinige Intel Atom. Deze heeft 1xGbE, 1xSATA3.0 en 1xUSB3.0. Middels een USB3.0 gigabit ethernet adapter heb ik precies wat ik zoek. Bijkomend voordeel is dat dit bordje, net als de Orange Pi's, draait op een 5v voeding.
- 16-poort Gigabit switch: Netgear GS116
Mijn compute nodes ondersteunen maximaal 100MBit netwerk en met een beperkt krachtige gigabit switch kan ik het gros concurrent bedienen zolang mijn control node maar gigabit doet. Deze specifieke switch was mijn eerste keuze omdat deze van de 16-poort gigabit switchen de meest compacte en 1 van de zuinigere is. Het enige nadeel is dat deze switch op 12 volt draait.
- Opslag main: SSD
Ik denk dat ik simpelweg een 256 GB Samsung Evo koop. Kost tegenwoordig ook allemaal niet zo veel meer.
- Opslag per-node: 128 MB MicroSD
Spotgoedkoop en waarschijnlijk onbetrouwbaar. Ik heb er 40 en het idee is dat het kaartje enkel de bootloader en een minimale kernel bevat. De taak is om netwerk in de lucht te krijgen, MAC adres te assignen (want dat zit niet in de chipset) en verder te booten over het netwerk. Dit ga ik uitbuiten door de control node een andere root directory uit te laten leveren op basis van het MAC adres, dus om van een reken node een database node te maken vereist slechts het verwisselen van een SD kaartje.
- Voeding 200W 5V 40A DC PSU
Ik ben hier gegaan voor een noname stuk Chinees ijzer. Uiteindelijk zijn ze dat allemaal, maar de voeding die ik gekozen heb is, op papier ten minste, ruim 85% efficient, maar 3cm hoog, passief. Er zijn 2 5v rails en omdat voor elke Orange Pi ongeveer 2A gerekend moet worden, 3A voor het MinnowBoard, 1A voor de SSD en 3A voor de switch zal ik 'm redelijk stevig gaan belasten. Ongeveer 90% van wat hij op papier moet kunnen wanneer alles vol staat te stampen. Uiteindelijk verwacht ik dat het allemaal mee zal vallen want die getallen zijn gebaseerd op het idee dat de op de core ingebakken GPU meewerkt, maar voor mijn toepassing staat dat spul niks te doen.
Alles in een blok hout met wat houten scheidings-wandjes... Het wijst zichzelf.
Ik heb wat bijzondere ideeën over hoe ik 5v bij de bordjes laat komen en hoe ik een tray met een bordje in de kast zet, dusdanig dat hij triviaal verwisselbaar is (zodat ik een database node in 3 seconden om kan zetten naar een webserver node bijvoorbeeld).
Tijdslijn
25-03-2014 Eerste idee: Mini-ITX control node + 12 Odroid U3's.
15-04-2014 Aanschaf switch. Marktplaats had er een 2e hands dus dat kon ik niet laten schieten.
21-04-2014 Eerste mock-up.
07-05-2014 Ontvangst SD kaartjes.
07-05-2014 Tweede mock-up.
22-08-2014 Project pauze om financiele redenen. Verwachte doorstart: medio juli 2015.
10-12-2014 Hardkernel released de Odroid-C1 - aanmerkelijk goedkoper dan de U3 dus dat gaat 'm worden.
31-01-2015 Aanschaf eerste Odroid-C1.
02-02-2015 De Raspberry Pi 2 komt uit. Blijf bij de C1 want aanmerkelijk betere prestaties en lager verbruik voor marginaal hogere prijs.
05-03-2015 Conclusie getrokken dat ik hopeloos ben in het zelf in elkaar knutselen van een slede voor 1 bordje, laat staan 15 en derhalve een 3D printer nodig ga hebben.
25-03-2015 Ontdekking van de Orange Pi Mini 2. Krachtiger dan de C1, goedkoper en betere Linux support dus dat gaat 'm worden.
05-05-2015 Ontdekking van de MinnowBoard Max. De control node is gevonden.
23-06-2015 Ontvangst 2x MinnowBoard Max (andere wordt mijn router).
18-08-2015 Lid geworden van Hack42 :-) .
20-08-2015 Bestelling 15 Orange Pi Mini 2s, USB3.0 GbE adapter en PSU.
22-08-2015 Derde mock-up, op schaal. 4 pixels = 1 mm.
~ 09-2015 Ontvangst Orange Pi Mini 2s. Begin slede design.
~ 10-2015 Slede af, begin constructie kast.
~ 11-2015 Installatie voedings rails en ijzeren strip voor magnetische aanhechting slede.
~ 12-2015 Af. Tijd voor de software.