Python Kommunikation von Linxurechnern konfigurieren

XHotSniperX

Lt. Junior Grade
Registriert
Jan. 2008
Beiträge
474
Hallo zusammen

Ich möchte ein Skript erstellen, womit ich die Netzwerktopologie von Linuxrechnern automatisch konfigurieren kann. Also sagen wir mal, ich bau mir einen kleinen Cluster aus 4 Raspberry Pis und verbinde sie alle per Lan mit einem Switch (das hab ich jetzt so Zuhause gemacht). Sie sind also alle miteinander physikalisch verbunden. Jetzt möchte ich aber genau dies ändern, wobei zB die 4 Knoten ringartig verbunden sind und nur so kommunizieren können. Kurz: Ich möchte mit dem Skript ganz einfach die Netzwerktopologie des Clusters umkonfigurieren können.

Ich habe bisschen rumgeschaut und weiss, dass ich nichts im Kernel ändern muss. Gibt es dafür Konfigurationsdateien, die ich genauer anschauen soll? Linux ist mir zwar schon bekannt, aber ich bin leider kein Experte. Würde mich sehr über Tipps freuen.
 
Wenn ich dich richtig verstanden habe sind zur Zeit 4 Raspberry Pis per LAN an einem Switch verbunden. Hierbei funktioniert die Kommunikation über ARP.

Und du willst jetzt die physische Konfiguration so ändern, dass alle Raspberry Pis ringartig (also 1 -> 2, 2 -> 3, 3 -> 4 und 4 -> 1) miteinander verbunden sind?
 
Ganz genau. Dabei möchte ich jedoch nicht die physische tatsächlich ändern (die fass ich nicht an), sondern nur per Konfiguration, damit sie so Kommunizieren müssen (dann darf zB 1 nicht direkt etwas an 3 schicken sondern über 2 beispielsweise). Physisch bleiben sie komplett verbunden.
Das mit dem Ring wäre nur eine Möglichkeit. Dann könnte ich mir zB auch noch eine Sternkonfiguration vorstellen, wo ein Pi mit allen anderen kommunizieren kann und so weiter.
 
Ich denke du musst:
* packet forwarding in /etc/sysctl.conf aktivieren
* statische Routen setzen
* mit iptables NATen/FORWARDen

Für ein erstes Probieren kannst du das ja händisch machen. Spätestens nach Gelingen würde ich das mit ansible machen. Spart etwas Arbeit, bringt Reproduzierbarkeit, Nachvollziehbarkeit und schnelles Umschalten. Relevante Module wären:
* http://docs.ansible.com/ansible/latest/net_static_route_module.html
* http://docs.ansible.com/ansible/latest/sysctl_module.html
* http://docs.ansible.com/ansible/latest/iptables_module.html

Solltest du selbst scripten wollen, bist du wohl mit bash deutlich schneller und einfacher unterwegs, als wenn du das low-level selbst mit Python bastelst. Es sei denn, du willst nur subprocess-calls nutzen, aber dann hast du kaum Vorteil gegenüber bash und am Ende wird es doch deutlich aufgeblasener.
 
Zuletzt bearbeitet:
Danke Tumbleweed, das kommt meiner Idee sehr nahe. Ich möchte als Erstes, wie du sagst, manuell den kleinen cluster konfigurieren und einfach mal sehen, wie es funktioniert. Das mit dem forwarden und routen ist genau das, was ich mir auch überlegt habe und möchte. Also am besten würde ich gerne bei allen 4 nodes eigene Einträge in die Routingtabelle einfügen, wo dann beispielsweise node x ein kommendes Paket an den nächsten node weiterleiten muss, je nach Paketinformationen und Routingtabelle. So könnte ich die Einträge dann so machen, dass bei einer Ringtopologie node 1 ein Paket zu erst an node 2 sendet und dieser dann an node 3, falls 1 an 3 senden wollte. Somit wäre dann also ein zusätzlicher hop dazwischen, was ja genau das ist, was ich möchte bei einem Ring.

Ich versuche jetzt mal die benötigten Konfigurationsdateien zu finden und konfigurieren :)
 
Zurück
Oben