Ubuntu Server Cluster mit Parallels (Teil 1/2)
Das Ziel dieser Anleitung ist die Erstellung eines simplen Big Data Clusters bestehend aus 5 vernetzten virtuellen Maschinen (Ubuntu Server) gehostet in Parallels. Die 5 VMs sollen miteinander sicher kommunizieren können und vom Host-System (hier ein MacBook Air 2020 M1) über SSH erreichbar und steuerbar sein.
In der Folge sollen auf diesen virtuellen Maschinen Tools wie Hadoop, Spark, Kubernetes o.Ä. installiert, vernetzt und getestet werden können.
Voraussetzungen
- MacBook Air 2020 M1 (minimum 16 GB RAM, Internetverbindung und minimum 100 GB freier Speicher)
- Parallels Desktop Pro Lizenz (Download)
- Ubuntu Server ARM 64-bit Version 20.04.3 LTS (Download)
- SFTP Tool (z.B. FileZilla)
WICHTIG
Diese Anleitung beschreibt einfach die Erstellung und Konfiguration einer einzelnen Ubuntu Server VM und der Netzwerkvorbereitungen für den Cluster. Theoretisch kann man mit Parallels die VM nach der erfolgreichen Konfiguration einfach klonen, allerdings ergaben sich so spezielle Effekte (z.B. unterschiedliche MAC Adressen, gleiche IPs), die den Zeitgewinn durch das Klonen wieder zunichte machten. Ich rate daher dazu, die Konfigurationen einfach schnell 5x mal zu wiederholen und alle “von Hand” zu erstellen. Mit der Zeit findet man sich auch viel schneller in Parallels zurecht und versteht besser, was man eigentlich am konfigurieren ist.
Ubuntu Server VM erstellen
Die nachfolgende Diashow führt durch den Erstellungsprozess einer virtuellen Maschine (VM) in Parallels Desktop Pro durch. Beim erstmaligen Start von Parallels wird sofort die Installation einer Windows 11 VM vorgeschlagen. Dieser Schritt kann übersprungen werden, sodass in der Folge das Ubuntu Server ARM 64-bit *.iso Image ausgewählt und installiert werden kann.
- Neu erstellen durch “Windows oder ein anderes OS von DVD oder Imagedatei installieren”
- Ubuntu Server arm64 (Download-Link zuoberst unter “Voraussetzungen”) auswählen
- Als Name für die erste VM wählen wir “bd-1”
- Systemsprache Englisch
- Für die Einstellung des korrekten Tastaturlayouts wählen wir “Identify keyboard”. In der Folge wird man gebeten einige vorgegebene Tasten zu drücken. So wird schlussendlich “Switzerland” erkannt.
- Die Storage Konfiguration übernehmen wir as-is
- Für das Linux Profile wählen wir folgende Angaben:
- Name: bd-1
- Server Name: bd-1
- Username: ubuntu
- Password: gut merken!
- Fürs erste installieren wir keine Zusatzpakete wie SSH Server o.Ä.
- Die Installation startet dann und dauert ungefähr 2-3 Minuten
- Nach der Installation ist ein Reboot der VM nötig
Nach dem Neustart kann man sich ganz einfach mit dem gewählten Nutzernamen “ubuntu” und dem persönlichen Passwort an der VM einloggen.
Konfiguration der VM
Für die spätere Installation von Big Data Tools auf der virtuellen Maschine, die Netzwerkanforderungen und eine komfortablere Nutzung sind noch einige Konfigurationen zu erledigen.
Hadoop Nutzer
# Neue Gruppe "hadoop" einrichten
sudo groupadd hadoop
# Neuen User "hduser" einrichten und der Gruppe "hadoop" zuweisen
sudo adduser --ingroup hadoop hduser
# Passwort: hd
# Alle Fragen mit Enter beantworten und somit die Default Werte übernehmen
Nun müssen wir dem neu erstellten User auch noch die Möglichkeit geben sich zum sudoer zu machen.
# nano Editor öffnen um das visudo File zu editieren
sudo visudo
# am Ende die folgende Zeile einfügen: hduser ALL=(ALL) ALL
# File speichern mit Command + "X" und Bestätigung mit "y"
Netzwerk
Genauere Informationen zu den Netzwerkeinstellungen bzw. Standard-Netzwerk-Arten von Parallels findet man auf der Seite des Herstellers: https://kb.parallels.com/4948
Das Ziel ist schlussendlich die 5 virtuellen Ubuntu Server in einem gemeinsamen “bigdata” Netzwerk zu haben, welches keine Verbindung zum Internet hat. Innerhalb dieses Netzwerks können die virtuellen Maschinen sicher kommunizieren. Zusätzlich sind die virtuellen Maschinen im Shared Network, welches Verbindungen ins Internet zulässt (z.B. für die Installation von Packages). Damit man am Schluss dann vom lokalen MacBook Terminal per SSH auf die einzelnen virtuellen Maschinen verbinden kann, soll ein Port Forwarding eingerichtet werden (unten rot dargestellt).
Dieses Forwarding leitet Anfragen jeweils von z.B. Port 14201 für VM bd-1 weiter an die IP Adresse von der VM bd-1 und an Port 22 (SSH-Port). Für bd-2 wird der Port 14202 weitergeleitet an die IP Adresse von der VM bd-2 und Port 22. Dies wird analog für alle 5 VMs eingerichtet.
Schlussendlich wird man sich dann mit folgendem Befehl verbinden können:
# Verbindung auf Port 14201 der weitergeleitet wird an bd-1 und Port 22
ssh -v -p 14201 ubuntu@127.0.0.1
Bevor wir aber irgendwas konfigurieren können, müssen wir die virtuelle Maschine herunterfahren.
# VM herunterfahren
sudo shutdown -h now
Shared Network (Parallels Default) als Netzwerk 1
Der Parallels “Gold-Standard” der ohne weitere Konfiguration gleich funktionsfähig sein sollte. Parallels Desktop agiert so als virtueller Router für die virtuelle Maschine.
- Parallels Desktop erstellt ein eigenes virtuelles Subnetz mit eigenem IP Range und DHCP Server auf dem macOS.
- Einer virtuellen Maschine die dieses Netzwerk zugewiesen hat, wird automatisch eine eigene IP aus dem IP Range des Shared-Network zugewiesen.
- Die virtuelle Maschine ist per se nicht sichtbar für das MacBook wo Parallels installiert ist (anderes Subnetz!)
- Die virtuelle Maschine hat vollen Internet-Zugang
Damit der Host Rechner (also das MacBook Air) schlussendlich über eine SSH Terminal Verbindung und das Shared Network auf die virtuellen Maschinen zugreifen kann, müssen wir das Port Forwarding, wie es zu Beginn dieses Abschnittes beschrieben wurde, einrichten.
- In den Parallels Einstellungen zum Reiter “Netzwerk” wechseln.
- Links in der Navigationsleiste das “Shared” Netzwerk auswählen
- Unter den IPv4 Einstellungen unten mit dem “+” eine Regel für die Port-Weiterleitung hinzufügen:
- Protokoll: TCP
- Quellport: 14201 (frei wählbar – Achtung: keinen der schon besetzt ist!)
- Weiterleiten an: bd-1 (Parallels VM)
- Zielport: 22 (SSH Port)
Jetzt müssen wir noch sicherstellen, dass die virtuelle Maschine auch wirklich in diesem Netzwerk angehängt ist.
Internes Netzwerk “bigdata” als Netzwerk 2
Damit die einzelnen virtuellen Maschinen untereinander in einem geschlossenen Netzwerk kommunizieren können, erstellen wir ein neues Netzwerk namens “bigdata”.
Die IP Angaben werden alle automatisch befüllt.
Auch hier müssen wir nach der Konfiguration wieder sicherstellen, dass die virtuelle Maschine auch wirklich in diesem Netzwerk angehängt ist. Dazu muss im Kontroll-Center von Parallels bei der entsprechenden virtuellen Maschine das Konfigurationsfenster (Zahnrad-Symbol) geöffnet werden.
Danach navigiert man zu “Hardware” und kann dann unten links im Fenster mit dem “+” Symbol ein neues Netzwerk hinzufügen, und danach das vorherig erstellte “bigdata” Netzwerk auswählen.
Dynamische IP Adressen vs. Statische IP Adressen
Wenn man sich jetzt wieder einloggt auf die virtuelle Maschine, kann man die gemachten Konfigurationen prüfen.
ip a
Das Bild zeigt, dass für das bigdata Netzwerk irgendwas noch nicht funktioniert wird. Anscheinend wurde da gar keine IP vergeben. Die IP Vergabe lässt sich allerdings mit folgendem Befehl forcieren:
sudo dhclient
Jetzt kann man die Konfigurationen erneut prüfen:
ip a
Nun ist auch die IP für das bigdata Netzwerk vorhanden. Ohne weitere Konfiguration ist es möglich, dass ein Gerät plötzlich eine andere IP Adresse zugewiesen bekommt. Damit man später nicht unangenehm überrascht wird, werden wir daher statische IP Adressen definieren.
SSH Zugriff
Da wir die virtuelle Maschine im vorhergehenden Schritt heruntergefahren haben, müssen wir sie nun erst wieder starten. Dies kann man ganz einfach im Parallels Kontroll-Center machen:
Installation von OpenSSH-Server
Für den Moment soll der SSH Zugriff noch ohne Key File funktionieren. Ziel ist, dass man vom lokalen MacBook Terminal per SSH und Login (“ubuntu”) / Passwort auf die Ubuntu Server VM in Parallels verbinden kann. Dazu installieren wir erstmal openssh-server:
# Pakete updaten und Installation von openssh-server
sudo apt update
sudo apt install openssh-server
# Prüfe ob der OpenSSH Server läuft (Erwarteter Output - Active: active (running))
sudo systemctl status ssh
# Falls die Firewall aktiviert ist, dann muss SSH dort noch freigeschalten werden
sudo ufw allow ssh
Login mit Passwort erlauben (temporär)
Nun konfigurieren wir SSH temporär so, dass man mit Nutzername und Passwort zugreifen kann. Später werden wir auf allen Nodes des Clusters dasselbe SSH Public/Private Key Paar installieren und Verbindungen nur noch über den Key zulassen.
# sshd_config anpassen ("PasswordAuthentication yes" auskommentieren -> # entfernen)
sudo nano /etc/ssh/sshd_config
Jetzt kann man vom Host (MacBook Air) über das Terminal auf die virtuelle Maschine verbinden, mit dem folgenden Command. Das ganze muss man noch mit “yes” bestätigen und natürlich das Passwort eingeben.
# Verbindung auf Port 14201 der weitergeleitet wird an bd-1 und Port 22
ssh -v -p 14201 ubuntu@127.0.0.1
Super!
Fortsetzung
Die weiteren Schritte werden in einer Fortsetzung dieser Anleitung beschrieben:
- DHCP Server Autostart
- Statische IP Adressen konfigurieren
- Virtuelle Maschinen vernetzen
- SSH User/Passwortzugriff ersetzen durch SSH Keys
[…] Der Prozessor des Laptops muss Virtualisierung ermöglichen. Gerade in kostengünstigeren Laptops können Prozessoren verbaut sein, die Virtualisierung nicht unterstützen. Diese Seiten können weiter helfen, je nach Hersteller des Prozessors: Intel-Prozessoren oder AMD-Prozessoren. VirtualBox funktioniert mit Intel-Prozessoren. Der neue Mac mit seinem M1-Prozessor unterstützt VirtualBox nicht. In diesem Fall ist Parallels eine gute Alternative – ein entsprechendes Tutorial befindet sich hier. […]
[…] Der Prozessor des Laptops muss Virtualisierung ermöglichen. Gerade in kostengünstigeren Laptops können Prozessoren verbaut sein, die Virtualisierung nicht unterstützen. Diese Seiten können weiter helfen, je nach Hersteller des Prozessors: Intel-Prozessoren oder AMD-Prozessoren. VirtualBox funktioniert mit Intel-Prozessoren. Der neue Mac mit seinem M1-Prozessor unterstützt VirtualBox nicht. In diesem Fall ist Parallels eine gute Alternative – ein entsprechendes Tutorial befindet sich hier. […]