I sidste uge brugte jeg alle de Raspberry Pi, jeg havde, til at bygge en HexaPi-computerklynge med seks knudepunkter.
Siden da er jeg blevet spurgt en række gange: Hvad er den god til? Så jeg vil tage et kig på den sidste del af Raspberry Pi Projects – Build an OctaPi, og tilføje et simpelt eksempel af min egen også.
Oh, og jeg tilføjede endnu en Raspberry Pi-server til klyngen, mens jeg stadig respekterer min regel om “ingen to servere ens”, så det er faktisk nu en HeptaPi-klynge med syv servere. I slutningen af dette indlæg vil jeg tilføje en beskrivelse af noget af det nye hardware, som jeg har anskaffet og brugt til dette projekt.
Først, hvad er det godt for? Jeg har et simpelt eksempel fra min egen erfaring. Jeg rejser ret meget, jeg kan lide at tage en masse billeder med et digitalt spejlreflekskamera, og jeg tager ofte panoramabilleder med flere billeder (de schweiziske alper er særligt gode motiver for denne form for fotografering). Når jeg kommer hjem, bruger jeg hugin panorama photo stitcher til at sammenføje disse partier af individuelle billeder til meget større panoramabilleder.
Hvis jeg foretager denne panoramabehandling på en enkelt computer, skal jeg selv foretage “planlægningen” – det vil sige, at jeg skal holde øje med det, og når et panorama er færdigt, skal jeg begynde på det næste.
Hvis jeg bliver lidt mere ambitiøs, kan jeg opsætte et batchstyringsprogram og derefter sætte de grupper af billeder, der skal slås sammen, i kø, men de bliver stadig kun lavet et efter et. Hvis jeg har flere computere til rådighed til opgaven, skal jeg så selv stå for fordelingen af billeder og gendannelse af panoramaer, og igen skal jeg selv stå for “planlægningen” på hver computer. Uanset hvad er det en relativt kedelig og tidskrævende proces, og desværre oplever jeg ofte, at jeg løber tør for tid (eller tålmodighed), før alle mine billeder er blevet behandlet.
Med HeptaPi-klyngen kunne jeg opsætte en batch-processor baseret på et af de Python-eksempler, der er inkluderet i OctaPi-klyngeprojektet, og derefter installere hugin på hver af klyngeserverne. Derefter kunne jeg fodre grupper af billeder til batch-processoren, som ville distribuere dem til klyngeservere til behandling, og ville modtage det færdige panoramabillede som retur.
Min investering i dette ville være at skrive det applikationsspecifikke batch-kontrolprogram og derefter identificere de grupper af billeder, der skal behandles sammen. Når det var gjort, ville den faktiske tid, der skulle bruges, indtil jeg havde alle mine dejlige panoramabilleder, blive reduceret drastisk – og jeg kunne reducere den yderligere ved blot at tilføje flere Raspberry Pi-systemer til klyngen når som helst!
Et mere generelt svar på spørgsmålet om, hvad Pi Cluster er god til, er: alle slags jobs eller opgaver, der kan opdeles i en række uafhængige stykker. Bemærk, at det kun er selve opgaverne, der skal være uafhængige — resultaterne kan også være det, som i tilfældet med mine panoramafotografier, men det kan også være, at resultatet af hver opgave bidrager til et eller andet større resultat. I så fald kan resultaterne samles på klientsystemet og derefter behandles yderligere (måske endda ved at sende dem ud igen som en ny opgave) for at producere et endeligt output.
Det er naturligvis ikke den eneste anvendelse for klyngecomputere. Der er ting som redundans og fejltolerance, der er baseret på det faktum, at din klient sender arbejde ud til det antal servere, der er til rådighed; hvis en server tages ud til vedligeholdelse (eller går ned eller andet), kan din behandling stadig fortsætte på de resterende servere i klyngen.
Dette er alle begreber, der typisk anvendes på meget større, mere sofistikerede klyngesystemer – endda op til hele datacentre for cloud-tjenester. Men min pointe her er, at du kan bygge en simpel klynge ved hjælp af meget billige Raspberry Pi-systemer og ikke kun få meget nyttig viden og erfaring ved at gøre det, men også ende op med en nyttig ressource, når du er færdig.
Nu går vi videre til den hardware, som jeg brugte til dette projekt. Jeg nævnte, at jeg har tilføjet endnu en server til klyngen, siden jeg postede den oprindelige skrivning. Det skete, fordi jeg surfede rundt på Pi-Shop.ch-webstedet og bemærkede Raspberry Pi 2 v1.2.
De overordnede specifikationer er de samme som den oprindelige Pi 2, men den nye model bruger den samme CPU som Pi 3 (men med en lavere clockhastighed). Ikke noget særligt, og nok heller ikke særlig interessant for de fleste mennesker, da Pi 3 alligevel er langt mere populær nu. Men det var nok til at motivere mig til at anskaffe mig en og tilføje den til klyngen.
Den vigtige ting at bemærke om denne tilføjelse var, at jeg ikke behøvede at gøre noget ved klientsystemet (controllersystemet) eller ved nogen af de andre servere. Jeg forberedte simpelthen den nye Pi 2 på nøjagtig samme måde, som jeg havde forberedt de andre, og tilsluttede den derefter til det dedikerede trådløse Pi Cluster-netværk. Næste gang jeg startede et job på klienten, bemærkede den, at den nye server var tilgængelig og begyndte at bruge den sammen med alle de andre.
Jeg nævnte også i det oprindelige projekt, at jeg ikke havde nok USB-wi-fi-adaptere til at forbinde alle mine Pi-systemer, og tilføjelsen af den nye Pi 2 betød selvfølgelig, at jeg også havde brug for en adapter til den. Pi-Shop har et par nye adaptere på listen, så jeg tænkte, at dette var en god mulighed for at afprøve dem.
Det vigtigste kriterium at huske på, når man køber en USB wi-fi-adapter til en Raspberry Pi, er, at man vil være sikker på, at den fungerer korrekt ud af æsken.
Jeg ved godt, at det måske lyder fjollet, men det er det stik modsatte af den tilgang, jeg har, når jeg køber sådanne perifere enheder til resten af mine bærbare og stationære Linux-pc’er. Jeg går ud fra, at de fleste mennesker køber og bruger Raspberry Pi-systemer til et bestemt formål – uanset om det er uddannelse, hobbyarbejde eller til et bestemt projekt eller brug af enheden. Det er naturligvis muligt at få stort set alle USB-adaptere til at fungere med stort set alle Linux-distributioner, men medmindre du vil risikere at skulle bruge en betydelig del af din skole/hobby/arbejdstid på at få sat drivere op, så tag den nemme løsning og sørg for at købe en adapter, som allerede er testet og virker.
Den enkleste måde at være sikker på dette er at købe fra en autoriseret Raspberry Pi-distributør og sikre sig, at der står på deres hjemmeside, at den adapter, du køber, er blevet verificeret til at fungere med Pi.
Den første, jeg prøvede, var Miniature WiFi (802.11b/g/n) 150Mbps-enheden. Jeg tror, at det faktisk er Adafruit Miniature WiFi Module, selv om billederne ikke ser ens ud — måske er det specialindpakning eller noget lignende. I hvert fald ligner den, jeg fik, det billede, der er vist her, og den virkede faktisk lige ud af æsken, som annonceret. Den kostede kun CHF 9,90 (ca. €8,99/£8,00/$10,50).
Den er baseret på en Realtek RTL5370-chip, og den har en blå strøm/link/status-LED.
Da jeg var i “prøv nye ting af”-tilstand, og jeg bemærkede, at der blev tilbudt en anden USB wi-fi-adapter med højere gennemløb på Pi-Shop, besluttede jeg at give den også en chance. Den hedder ganske enkelt “USB WiFi Adapter for Raspberry Pi (300Mbps)”, og den ser ud som på billedet til højre.
Den er betydeligt dyrere med 23,90 CHF (ca. 21,70 €/£19,40/$25), så det er nok værd at tænke sig om, før du køber den frem for den ovenfor. Husk, at det er Raspberry Pi-systemer, vi taler om, og de er ikke kendt for hastigheden og effektiviteten af deres USB-forbindelser. Så forskellen i hastighed, som stort set er den eneste fordel ved denne adapter, er måske ikke væsentlig i din reelle brug af enheden.
Denne enhed er baseret på Realtek 8192SU-chippen, og den har også en strøm/link/status-LED.
Det sidste nye stykke hardware til dette projekt er det, som jeg tror, vil vise sig at være mest almindeligt anvendeligt – TP-Link TL WR802N Wireless N Nano Router.
Denne billige enhed (ca. 30 CHF/€27/£24/$32) er meget lille og let, og den indeholder en række foruddefinerede og forudkonfigurerede tilstande til almindelige anvendelsesformål. Jeg brugte den til at oprette et isoleret WLAN uden internetforbindelse (Router Mode), men den kan naturligvis levere internetforbindelse enten via sit RJ45-kabelnetværksstik (Access Point Mode) eller via en trådløs WISP-forbindelse (Hotspot Mode).
Den kan også bruges til at supplere et eksisterende wi-fi-netværk (Range Extender Mode) eller som en wi-fi-adapter til en enhed, som kun har en kabelbaseret netværksforbindelse (Client Mode).
WR802N leveres med sin egen strømadapter, men den kan også forsynes med strøm fra en Raspberry Pi strømadapter (eller en anden MicroUSB-smartphoneoplader), eller endda ved at tilslutte den til en USB-port på en computer.
Mine første indtryk af denne enhed har været meget positive, og jeg forventer, at den vil være meget nyttig både derhjemme og når jeg er ude at rejse.
Da jeg besluttede mig for at bygge Pi Cluster, forventede jeg, at det ville være en gee-whiz-agtig interessant ting at gøre, men jeg gik også ud fra, at jeg ville skille den ad igen inden alt for længe. Nu hvor den er oppe at køre, finder jeg ud af, at jeg tænker på andre interessante måder at bruge den på og forbedre den på.
Husk, du behøver ikke at have et stort antal Raspberry Pi-systemer for at sætte et op – to servere og en klient er nok til at starte med. Men pas på, når du først har fået det til at køre, vil du måske opdage, at det er en god undskyldning for at købe flere og bedre stumper og dele til at udvide det.
- Raspberry Pi: Sådan byggede jeg en OctaPi-agtig computerklynge
- Raspberry Pi: Sådan byggede jeg en OctaPi-agtig computerklynge
- Raspberry Pi: Hands-on med Fedora 26
- Raspbian GNU/Linux: Ny udgivelse indeholder installerbart x86-image
- Raspberry Pi Zero W, hands-on: Et meget velkomment nyt medlem af familien
- Hands-On: Raspberry Pi 7-tommer Touch Display og etui