[LINUX] Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 2: PiServer-Analyse und alternatives Systemdesign)

Einführung

  1. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 1: Zusammenfassung der Verfügbarkeit von plattenlosen Clients nach Modell)
  2. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 2: PiServer-Analyse und alternatives Systemdesign)
  3. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 3: Installieren und Konfigurieren von dnsmasq)
  4. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 4: Erstellen eines NFS-Servers und Importieren eines Betriebssystems für Clients)
  5. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 5: Anpassen des Raspberry PI-Betriebssystems für Clusterknoten (1))
  6. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 6: Anpassen des Raspberry PI-Betriebssystems für Clusterknoten (2))
  7. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (7: Einstellung der TFTP-Route und Starttest für jeden Raspetorte)

Dieser Artikel ist eine Fortsetzung von Teil 1. Raspberry PI Hier geht es darum, ein alternatives System mit PiServer zu erstellen, einer Software, die sicher mit vielen Menschen in Kontakt kommt, die Versuch und Irrtum haben, ein plattenloser Client zu werden. Wenn Sie das Problem haben, dass Ihr Raspeltorte von PiServer nicht erkannt wird, lesen Sie bitte Teil 1.

Einführung in PiServer

Offizielle Ankündigung ist hier (Englisch). Wenn Sie einen PC mit Raspberry PI Desktop verwenden, können Sie Raspberry 3B oder höher plattenlos machen.

Da der Raspeltorte ursprünglich zu Bildungszwecken hergestellt wurde, verwendeten die Schüler im Klassenzimmer eine große Anzahl von scheibenlosen Raspeltorten. Es scheint, dass der Lehrer in einer Umgebung erstellt wurde, in der derselbe Bildschirm auf einem PC angezeigt wird.

Berühren wir also Raspberry PI Desktop

Überprüfen Sie die Funktionen und Implementierungsmethoden von PiServer

1. Ermittlung des Raspeye-Clients
Empfängt die DHCP-Übertragung von Raspeye und registriert die MAC-Adresse als Verwaltungsziel. Die DHCP-Funktion von dnsmasq verknüpft die empfangene Anforderung. Bereiten Sie eine TFTP-Route vor, die der registrierten MAC-Adresse zugeordnet ist (symbolisieren Sie das Startverzeichnis des verwalteten Betriebssystems)
2. Importieren Sie das Betriebssystem-Image für den Client Realisiert mit
Bash-Skript. Ich habe den Inhalt der Image-Datei auf meine lokale Festplatte kopiert und einen Eintrag zu / etc / export hinzugefügt. Übrigens habe ich unnötige Dateien für den plattenlosen Client gelöscht und die Gebietsschema-Beziehungen auf dieselben Werte umgeschrieben wie auf dem Computer, auf dem Raspberry PI Desktop ausgeführt wird. Es ist auch ein Sneak Rewrite von / etc / fstab, das die lokale Festplatte mounten soll
3. TFTP-Serverfunktion Es wird von
dnsmaq realisiert. Ich bastele an der dnsmasq-Konfigurationsdatei von der GUI
4. DNS-Cache-Server / ddns-Funktion Es wird von
dnsmasq realisiert. Wenn Sie bereits einen anderen DNS-Server haben oder diese Funktion nicht benötigen, weil Sie sie nur in / etc / hosts verwalten möchten, müssen Sie die Portnummer in der Datei /etc/dnsmasq.conf als 0 angeben >
5. DHCP-Serverfunktion Realisiert mit
dnsmasq. Wenn bereits ein anderer DHCP-Server vorhanden ist, fungiert dieser auch als Proxy-DHCP und gibt nur die Adresse des TFTP-Servers zurück, um die beim Booten erforderlichen Dateien auf den Client herunterzuladen.
6. NFS-Serverfunktion
Verwenden Sie den von Anfang an im Kernel integrierten NFS-Server (Version 3). Bietet ein Root-Dateisystem für Clients. Selbst plattenlose Clients möchten möglicherweise ihre Daten speichern, sodass sie auch einen beschreibbaren freigegebenen Ordner bereitstellen, der während des Startvorgangs bereitgestellt werden kann, sobald das Root-Dateisystem bereitgestellt wurde.
7. Ändern Sie das Client-Betriebssystem
Verwalten Sie, welches Betriebssystem-Image dem registrierten Raspetorte zugewiesen wird. Schreiben Sie einfach die TFTP-Route für jede MAC-Adresse mit einem symbolischen Link neu
8. Benutzerkontenverwaltung auf Raspai
Ich habe nicht im Detail nachgesehen, da es keinen Grund gibt, es zu verwenden, aber es scheint, dass es von OpeLDAP realisiert wird
9. Ändern Sie das Betriebssystem-Image für den verwalteten Client Ich führe chroot nur mit dem Befehl
qemu-arm-static aus. Da es sich bei glibc um die i386-Version handelt, ist der Befehl qemu-aarch64-static nicht installiert, sodass die 64-Bit-Versionsverteilung nicht verwaltet werden kann.

Benötigen Sie wirklich eine Raspberry PI Desktop-Umgebung?

Als ich die im GitHub Piserver Repository veröffentlichte Quelle überprüfte, fand ich die C ++ - Quelle der Verwaltungs-GUI und verschiedene Bash-Skripte. Der GUI-Teil konnte auf der x86_64-Version von ArchLinux kompiliert und ausgeführt werden, sodass sich herausstellte, dass Raspberry PI Desktop nicht verwendet werden musste. Sobald das im PiServer-Repository veröffentlichte Bash-Skript portiert wurde, können alle verbleibenden Funktionen mit nur dnsmasq + OpenLDAP + qemu-user-static realisiert werden.

  • Ich brauche keine GUI, die nur die dnsmasq-Konfigurationsdatei neu schreibt.
  • PiServer ist doch Scheiße (endgültige Entscheidung).

So erstellen Sie ein alternatives PiServer-System

Erst neulich kündigte der offizielle Raspberry [Make Raspberry PI OS 64bit] an (https://www.raspberrypi.org/forums/viewtopic.php?f=117&t=275370) und verwaltete die 64-Bit-Distribution. Wenn Sie PiServer nicht können, müssen Sie aufgeben. Denken wir also über eine Methode zum Aufbau eines alternativen Systems nach.

Voraussetzung: Allgemeines plattenloses Clientverhalten (IPv4 PXE-Start)

Was der Client + Server mit dem PXE-Start macht (Sequenz)

(Referenz: https://japan.zdnet.com/article/20089685/)

  1. Ein Client, der keine IP auf der Festplatte hat, sendet eine Übertragung und versucht, eine IP vom DHCP-Server abzurufen.
  2. Der DHCP-Server bestimmt anhand der MAC-Adresse des Clients usw., ob der Anforderer ein registrierter plattenloser Client ist.
  3. Wenn festgestellt wird, dass es sich nicht um einen plattenlosen Client handelt, wird er durch Angabe einer IP usw. beendet. Wenn festgestellt wird, dass es sich um einen registrierten plattenlosen Client handelt, gibt der DHCP-Server dem anfordernden Client eine IP und anschließend tftp zum nächsten Besuch. Sagen Sie mir, dass die IP des Servers und die Rolle des DHCP-Servers beendet sind.
  4. Ein Client mit seiner eigenen IP-Adresse greift auf den gelernten TFTP-Server zu und lädt den Kernel und die zugehörigen Dateien herunter, die zum Booten erforderlich sind. Wenn alle für den Start erforderlichen Dateien heruntergeladen wurden, ist die Rolle des TFTP-Servers beendet.
  5. Die von tftp heruntergeladene Datei sollte immer den Speicherort des NFS-Servers enthalten, der das Root-Dateisystem und den Namen des freigegebenen Verzeichnisses bereitstellt, damit der Client das angegebene freigegebene Verzeichnis als schreibgeschütztes Root-Dateisystem bereitstellt. Versuchen.
  6. Das Root-Dateisystem wird gemountet und der eigentliche Start des Betriebssystems wird gestartet.

Infrastruktur-Server erforderlich, um den PXE-Start zu realisieren

Um das obige Verfahren zu realisieren, ist es daher erforderlich, mindestens die folgende Umgebung vorzubereiten, und ein Server mit diesen drei Funktionen wird manchmal als "PXE-Server" bezeichnet.

  • DHCP-Server
  • TFTP-Server
  • Dateiserver wie NFS

Ursprünglich werden plattenlose Clients normalerweise für Anwendungen verwendet, in denen viele Benutzer dieselbe Umgebung verwenden, z. B. Studententerminals in Bildungseinrichtungen und Business-Terminals für die Dateneingabe.

  • DNS-Server (automatische Registrierung des Client-Hostnamens)
  • Interner Authentifizierungsserver wie LDAP / NIS
  • Gateway / Firewall

Da der letztendliche Zweck dieses Artikels darin besteht, eine persönliche verteilte Verarbeitungsumgebung zu erstellen, werden die Inhalte der folgenden drei Server nicht beschrieben. DNS ist übrigens erforderlich, wenn die Anzahl der Clients 100 überschreitet. Wenn die Anzahl der Clients jedoch weniger als 10 beträgt, ist die Namensauflösung durch die Datei / etc / hosts ausreichend, und diese Datei kann auf dem NFS-Server freigegeben werden. Du brauchst es nicht. Übrigens benötigen Sie in einer verteilten Umgebung, die nur Sie verwenden, keinen Authentifizierungsserver, und Sie benötigen ihn nicht, da Sie die Datei / etc / passwd freigeben können.

Realisierungsmethode 1: Erstellen Sie tftp / DHCP / DNS gemeinsam mit dnsmasq, einer Software zum Erstellen von PXE-Servern.

Das Erstellen eines DHCP-, TFTP- oder DNS-Servers mit individueller Software wie dhcpd, atftpd oder bind ist umständlich und zeitaufwändig. Daher wird eine Software namens dnsmasq eingeführt, die auch in PiServer verwendet wird. Ursprünglich begann diese Software mit der Entwicklung als DNS-Cache-Server, aber es ist keine Übertreibung zu sagen, dass es sich um eine Software handelt, die auf den Aufbau eines PXE-Servers spezialisiert ist, da sie die Funktionen des TFTP-Servers und des DHCP-Servers integriert hat, bevor ich es wusste. Machen wir das. Natürlich werde ich diese Software verwenden. Verwenden Sie jedoch nicht DNS, da dies der ursprüngliche Zweck ist.

Von nun an wird der x86_64-Computer, auf dem dnsmasq ausgeführt wird, als "PXE-Server" bezeichnet.

Realisierung 2: Die NFS-Serverfunktion sollte vom PXE-Server getrennt werden.

In PiServer wurden alle Funktionen gepackt, um "komplett mit einem PC" zu verkaufen. Aus Sicherheitsgründen ist es jedoch besser, die NFS-Serverfunktion in einen anderen Computer zu unterteilen. Dies liegt daran, dass die folgenden Situationen auftreten können, wenn der PXE-Server gleichzeitig als NFS-Server fungiert.

  1. Wenn ich den PXE-Server neu starte / herunterfahre, geht das Root-Dateisystem des laufenden Raspai verloren. Um dies zu vermeiden, sollten alle Rasppies vor dem Neustart des PXE-Servers heruntergefahren werden.
  2. Noch schlimmer, wenn auf dem PXE-Server ein Festplattenfehler auftritt.

Wenn Sie bereits einen Dateiserver haben, der NFS unterstützt, ist dieses System robuster, da es mit RAID, GlusterFS usw. redundant ist. Es gibt kein Problem, wenn die von tftp verteilten Boot-bezogenen Dateien auch NFS vom PXE-Server gemountet werden. Ich denke jedoch, dass es besser ist, einen Computer mit schnellem Festplattenzugriff zu verwenden.

Im Folgenden wird eine Maschine mit NFS-Funktion als "NFS-Server" bezeichnet.

[^ Grund]: Wenn Sie einen vorhandenen Dateiserver haben, ist dieser mit RAID, GlusterFS usw. redundant.

Realisierung 3: Import aus der Image-Datei der Betriebssysteminstallation auf den NFS-Server

Sie können dies manuell tun. Möglicherweise kann es jedoch automatisiert werden, indem das auf GitHub von PiServer veröffentlichte Bash-Skript für den Betriebssystemimport geändert wird.

Realisierung 4: Armhf / Aarch64-Emulator erforderlich, um das Client-Betriebssystem zu aktualisieren

Festplattenlose Clients stellen das Root-Dateisystem schreibgeschützt bereit, sodass Sie das Betriebssystem nicht von der Clientseite aus aktualisieren können. Sie müssen das Betriebssystem auf der PXE- oder NFS-Serverseite aktualisieren. Die Umgebung, die Sie dieses Mal erstellen möchten, sollte jedoch ein ARM auf der Clientseite und ein x86_64-Computer auf der Serverseite sein. Dort brauchen Sie einen Emulator.

Diese Methode ist auch in PiServer implementiert, aber der Emulator qemu (Benutzermodus statisch), die binfmt-Unterstützung und chroot erleichtern die Steuerung des an Clients verteilten Betriebssystems. Weitere Informationen finden Sie hier [http://blog.kmckk.com/archives/2342452.html].

Auf Debian-Systemen müssen Sie nur das qemu-user-static-Paket installieren, und unter ArchLinux müssen Sie es selbst mit AUR kompilieren.

Realisierung 5: Client-MAC-Adressverwaltung

Wenn Sie 10 oder weniger Raspeltorten haben, ist es keine große Sache, diese einzeln mit der in Mein vorheriger Artikel beschriebenen Methode zu überprüfen.

Realisierungsmethode 6: DNS / Benutzerverwaltungsfunktion

Da es sich um eine Gruppe von Clients handelt, die nur ich verwende, muss ich sie nicht verwalten, daher werde ich sie weglassen.

--Benutzerverwaltung von / etc / passwd + / etc / shadow mit NFS-Freigabe --Dnqmasqs DHCP-Funktion löst + / etc / hosts auf, die jedem Raspetorte eine feste IP mit einer NFS-Freigabe zuweisen

Alles wird dadurch gelöst.

Finale Form

Der Autor beschließt, eine solche Umgebung zu erstellen. Der PXE-Server, der NFS-Server und der Controller können zu einer Einheit zusammengefasst werden, oder die Subnetze dürfen nicht getrennt werden. RaspiCloudSystem.png

Das war's für diese Zeit. Nächstes Mal möchte dnsmasq tatsächlich auf dem x86_64-Linux-Computer installieren und konfigurieren.

Recommended Posts