Ich werde in den nächsten Wochen ein paar Videos veröffentlichen, die sich mit dem Thema Cluster Computing mit dem Raspberry Pi befassen, und ich werde das Video + Transkript in meinem Blog veröffentlichen, so dass man auch mitverfolgen kann, wenn man sich nicht gerne ein Video ansieht 🙂
Dies ist ein Raspberry Pi Compute Module.
Und dies ist ein Stapel von 7 Raspberry Pi Compute Modules.
Es ist dasselbe wie ein Raspberry Pi Modell B, aber es lässt alle IO-Ports weg, um einen flexibleren Formfaktor zu haben, der laut der Rasbperry Pi Foundation „für industrielle Anwendungen geeignet“ ist. Aber in meinem Fall bin ich daran interessiert, es für den Aufbau eines Clusters von Raspberry Pis zu verwenden.
Ich werde das Konzept des Cluster-Computings unter Verwendung von Raspberry Pis erforschen, und ich freue mich, dass ich im Besitz eines bahnbrechenden Raspberry-Pi-basierten Cluster-Boards bin, dem Turing Pi.
Ich werde mich bald mit dem Turing Pi beschäftigen, aber in dieser ersten Folge möchte ich darauf eingehen, warum ich Raspberry Pis gerne für Cluster verwende.
Aber zuerst, was ist ein Cluster?
Cluster Computing
Viele Leute versuchen, komplexe Probleme mit Computern zu lösen. Manchmal tun sie Dinge wie das Bereitstellen einer Webseite für eine große Anzahl von Besuchern. Dies erfordert eine große Bandbreite und viele „Backend“-Computer, um jede der Millionen von Anfragen zu bearbeiten. Manche Leute, wie z. B. Wettervorhersager, müssen die Ergebnisse von Milliarden kleiner Berechnungen ermitteln.
Es gibt zwei Möglichkeiten, diese Art von Operationen zu beschleunigen:
- Durch vertikale Skalierung, bei der man einen einzelnen Server hat und eine schnellere CPU, mehr RAM und schnellere Verbindungen einsetzt.
- Durch horizontale Skalierung, bei der die Aufgaben aufgeteilt werden und mehrere Computer zum Einsatz kommen.
Systeme wie die Supercomputer von Cray trieben die vertikale Skalierung früh auf die Spitze. Ein riesiger Computer, der Millionen von Dollar kostete, war eine Zeit lang der schnellste Computer. Aber dieser Ansatz hat seine Grenzen, und wenn man alles in eine Maschine investiert, bedeutet das Ausfallzeiten, wenn sie gewartet werden muss, und begrenzte (oft schmerzhaft teure) Upgrades.
In den meisten Fällen ist es günstiger – und manchmal auch die einzige Möglichkeit -, horizontal zu skalieren, indem man viele Computer verwendet, um große Berechnungen oder viel Webverkehr zu bewältigen.
Das Clustering ist mit dem Aufkommen von Clustern im Stil von Beowulf in den 90er Jahren und neuerer Software wie Kubernetes einfacher geworden, die Anwendungen nahtlos auf viele Computer verteilt, anstatt sie manuell auf verschiedenen Computern zu platzieren.
Selbst mit dieser Software gibt es zwei große Probleme bei der horizontalen Skalierung – vor allem, wenn Sie nur ein kleines Budget haben:
- Jeder Computer kostet etwas Geld und erfordert individuelle Stromversorgung und Vernetzung. Bei ein paar Computern ist das kein großes Problem, aber ab fünf oder mehr Computern wird es schwierig, Ordnung und Kühlung zu halten.
- Die Verwaltung der Computer, oder „Nodes“ in der Cluster-Sprache, ist einfach, wenn es ein oder zwei sind. Aber wenn es fünf oder zehn sind, ist selbst für einfache Dinge wie das Neustarten von Servern oder das Starten eines neuen Jobs eine Software erforderlich, die alles koordiniert.
Der Raspberry Pi Dramble
Im Jahr 2015 beschloss ich, meinen ersten „Bramble“ einzurichten. Ein Bramble ist ein Cluster von Raspberry Pi Servern. „Warum heißt es „Bramble“?“, werden Sie sich fragen. Nun, weil eine natürliche Ansammlung von Himbeeren, die man essen kann, als „Bramble“ bezeichnet wird.
So begann ich mit dem Aufbau eines Bramble, indem ich eine Software namens Ansible verwendete, um einen gemeinsamen Software-Stack auf den Servern zu installieren und Drupal auszuführen. Ich richtete Linux, Apache, MySQL und PHP ein, was allgemein als „LAMP“-Stack bekannt ist.
Da mein Bramble mit Drupal lief, erfand ich das Portmanteau „Dramble“, und so war der Raspberry Pi Dramble geboren.
Die erste Version des Clusters hatte sechs Knoten, und ich hatte einen Haufen Micro-USB-Kabel, die an ein USB-Netzteil angeschlossen waren, sowie einen Haufen Ethernet-Kabel, die an einen 8-Port-Ethernet-Switch angeschlossen waren.
Als das Raspberry Pi Modell 3 auf den Markt kam, reduzierte ich es auf 5 Knoten.
Als dann das Raspberry Pi Zero auf den Markt kam, das so groß wie ein Kaugummi ist, kaufte ich fünf davon und baute einen winzigen Cluster mit USB-WiFi-Adaptern, merkte aber schnell, dass der alte Prozessor des Zero extrem leistungsschwach war, und gab den Cluster auf.
Im Jahr 2017 entschied ich mich, Kubernetes zu verwenden, um Drupal und den LAMP-Stack zu verwalten, obwohl ich immer noch Ansible verwendete, um die einzelnen Pis zu konfigurieren und Kubernetes auf ihnen zu installieren.
Und das heutige Dramble, das aus vier Raspberry Pi Model 4-Boards besteht, verwendet das offizielle Power-over-Ethernet (PoE)-Board, mit dem ich auf das Gewirr von USB-Stromkabeln verzichten konnte, das aber einen teureren PoE-Switch erfordert.
Das Pi Dramble ist allerdings nicht ganz ernst gemeint. Ich hatte etwas Spaß damit, einschließlich einer Hommage an einen alten Film, der mir gefallen hat:
Im Laufe dieser ganzen Erfahrung habe ich jeden Aspekt des Baus dokumentiert, einschließlich aller Ansible-Playbooks, als Open-Source-Projekt, das von pidramble.com aus verlinkt ist, und viele andere haben diese Pläne befolgt und den Pi Dramble selbst gebaut!
Warum Raspberry Pi?
Ich habe viel Zeit damit verbracht, einen Cluster von Raspberry Pis zu verwalten, und die erste Frage, die mir normalerweise gestellt wird, lautet: „Warum haben Sie Raspberry Pis für Ihren Cluster gewählt?“
Das ist eine sehr gute Frage.
Ein einzelner Raspberry Pi ist nicht so schnell wie die meisten modernen Computer. Und er hat einen begrenzten Arbeitsspeicher (selbst das neueste Pi-Modell 4 hat höchstens 4 GB RAM). Und er ist auch nicht für einen schnellen oder zuverlässigen Festplattenzugriff geeignet.
Es ist etwas kostengünstiger und in der Regel auch energieeffizienter, einen kleinen NUC („Next Unit of Computing“) zu bauen oder zu kaufen, der über mehr CPU-Leistung, mehr RAM, eine schnelle SSD und mehr Erweiterungsmöglichkeiten verfügt.
Aber macht es Spaß, einige VMs zu bauen, um einen Cluster auf einem NUC zu simulieren?
Ich würde sagen: „Nein.“
Und die Verwaltung von „Bare Metal“-Servern anstelle von virtuellen Maschinen erfordert auch mehr Disziplin bei der Bereitstellung, Vernetzung und Orchestrierung. Diese drei Fähigkeiten sind in vielen modernen IT-Jobs sehr hilfreich!
Auch wenn Sie vielleicht die reine Leistung optimieren möchten, gibt es Zeiten, wie beim Aufbau von Kubernetes-Clustern, in denen Sie die Anzahl der CPU-Kerne optimieren möchten. Wenn Sie einen einzelnen Computer mit 32 CPU-Kernen bauen möchten, könnten Sie den AMD ThreadRipper 3970x in Betracht ziehen, der über 32 Kerne verfügt. Das Problem ist, dass der Prozessor fast 2.000 $ kostet, und das ist nur der Prozessor – der Rest der Computerkomponenten würde Sie auf über 3.000 $ für dieses System bringen.
Beim Raspberry Pi hat jedes Compute Board eine 4-Kern-CPU, und wenn man 7 Pis zusammensetzt, erhält man 28 Kerne. Das ist fast die gleiche Anzahl von Kernen, kostet aber insgesamt weniger als 300 $. Selbst mit den zusätzlichen Kosten für einen Turing Pi und ein Netzteil ist das die gleiche Anzahl von CPU-Kernen für 1/4 der Kosten!
Ja, ich weiß, 1 ThreadRipper-Kern ≠ 1 Pi CM-Kern; aber in vielen K8s-Anwendungen ist ein Kern ein Kern, und je mehr, desto besser. Nicht alle Operationen sind CPU-gebunden und würden von einem 4-8x schnelleren Rohdurchsatz profitieren, oder von den vielen anderen kleinen Feinheiten, die der ThreadRipper bietet (wie mehr Cache).
Eine der wichtigsten Lektionen, die ich bei der Arbeit mit Arduinos und Raspberry Pis gelernt habe, ist die folgende: Wenn man mit begrenzten Ressourcen wie begrenztem RAM oder langsamen IO arbeitet, werden Ineffizienzen im Code auf eine Art und Weise hervorgehoben, die man nie bemerken würde, wenn man immer auf der neuesten Core i9- oder ThreadRipper-CPU mit Unmengen von RAM und Hunderttausenden von IOPS arbeitet!
Wenn Sie etwas nicht auf einem Raspberry Pi zum Laufen bringen können, bedenken Sie Folgendes: Viele Smartphones und Low-End-Computer haben ähnliche Einschränkungen, und Menschen, die diese Geräte benutzen, machen die gleiche Erfahrung.
Außerdem werden Sie selbst bei schnellen Cloud-Computing-Instanzen von Zeit zu Zeit auf Netzwerk- und IO-Engpässe stoßen, und wenn Ihre Anwendung in solchen Situationen fehlschlägt, könnte das für Sie sehr schmerzhaft sein. Wenn Sie sie auf einem Raspberry Pi zum Laufen bringen, können Sie diese Probleme schnell erkennen.
Warum Turing Pi?
Und nun zurück zum Turing Pi: Was macht ihn besser als einen Cluster aus Standard-Raspberry Pis, wie z. B. den Pi Dramble?
Abonnieren Sie meinen YouTube-Kanal – in meinem nächsten Video erfahren Sie, was den Turing Pi ausmacht und wie Sie einen neuen Cluster einrichten! Wenn dir dieser Inhalt gefallen hat und du mehr sehen willst, kannst du mich auf GitHub oder Patreon unterstützen.