Skip to content

Setup Cloud Computing (Deutsch)

Simon Sure edited this page Jan 20, 2022 · 2 revisions

Willkommen bem Setup des Cloud Computings!

Dies ist eine Anleitung zum Einrichten einer nutzbaren Arbeitsumgebung in der Cloud. Die folgende Anleitung bezieht sich auf Google's Cloud Platform. Analoge Setups dürften jedoch auch bei anderen Anbeitern möglich sein.

Bitte immer berücksichtigen, dass die Dienste der Google Cloud Platform Geld kosten.

Google Cloud Setup

Gehe zur Websites von Google Cloud und logge dich mit deinem Google Konto ein.

Website von Google Cloud

Nun wirst du aufgefordert werden, mehrere Setup-Schritte durchzuführen. Wenn du sämtiche Schritte erledigt hast gehe auf Google Cloud Console. Ggf. wirst du nach dem Setup auch automatisch dorthin umgeleitet.

Google Cloud Console

Nach dem ersten Einrichten nutzt du automatisch das Google Cloud Free Program. Dieses ermöglicht dir das Testen der Umgebung, ohne dass dir Kosten entstehen.

Allerdings können mit dem Free Program keine GPUs genutzt werden. Dementsprechend muss ein Upgrade auf ein kostenpflichtiges Cloud-Rechnungskonto durchgeführt werden. Das kostenlose Guthaben kann trotzdem weiterhin genutzt werden. (Zumindest beim Verfassen dieser Dokumentation.)

Eine Anleitung zum Upgrade findest du hier.

Google Cloud konfigurieren

GPUs sind eine begrenzt Ressource. Für jeden Nutzer gibt es entsprechend ein begrenztes Kontingent. Dieses muss zunächst erhöht werden. Für die Nutzung eines Servers auf 1.

Über das Burger-Menü auf der Linken seite können die Kontingente eingestellt werden: IAM & Admin > Quotas. (Die deutsche Benennung variiert wahrscheinlich etwas.)

Google Cloud Quota

Beim Filter der verschiedenen Kontingente kann nun "GPU" eingegeben werden. Zum einen muss das Kontingent für alle Regionen auf mindestens 1 erhöht werden. Zum anderen muss das Kontingent für die Region des später ausgewählten Rechenzentrums auf mindestens 1 erhöht werden. Für die Standard-Rechenzentren ist jedoch standardmäßig ein ausreichend hohes Kontingent eingestellt.

Da wir eine Tesla K80 GPU verwendet werden, bitte sicherstellen, dass folgende Kontingente auf mindestens 1 stehen: Google Cloud Quota All Regions Google Cloud Quota US Central 1

Für das erhöhen der Kontingente bitte diesen Guide berücksichtigen.

den Server erstellen

Nun kann der eigentliche Server erstellt werden. Dazu kann diese Anleitung als Leitfaden genutzt werden. Allerdings können nicht alle Schritte aus dieser Anleitung durchgeführt werden. Konkret das Installieren der GPU Treiber hat mit einer alternativen Methode besser funktioniert.

Zunächst muss man über das Bürger-Menü in den Bereich der VM Instanzen. Google Cloud VM Instances

Nun ist die Virtuelle Maschine zu erstellen. Google Cloud create VM Instance

Hier können allgemeine Einstellungen an der VM vorgenommen werden. Name etc. sind natürlich frei wählbar. Google Cloud general VM Configuration

Damit die GPU zur Verfügung steht, sind folgende Einstellungen notwendig. Google Cloud VM Instances

Auch muss noch das Betriebssystem ausgewählt und der Festplattenspeicher erhöht werden. Google Cloud VM Boot Disk Google Cloud VM Boot Disk Details

Alle weiteren Einstellungen können unverändert bleiben.

Die VM kann jetzt über den Button unten auf der Seite erstellt werden.

den Server einrichten

Für das Einrichten des Servers wird nichts außer dem Webbrowser benötigt, da der SSH Zugriff über den Webbrowser erfolgen kann.

Zunächst muss man über das Bürger-Menü in den Bereich der VM Instanzen. Google Cloud VM Instances

Wählt man eine VM an, kann die VM über die drei Punkt gestartet werden. Nach dem Erstellen startet sie automatisch. Fährt man die VM später herunter, muss dies natürlich manuell gemacht werden. Google Cloud VM Instances

Ist die VM gestartet, kann über folgenden Button eine SSH-Verbindung im Webbrowser aufgebaut werden. Dabei ist darauf zu achten, dass der Browser das Pop-Up nicht blockiert. Google Cloud VM Instances

Ein SSH Browserfenster sieht ungefährt so aus. Google Cloud SSH

Vor allen weiteren Schritten sollten notwendige Softwareupdates durchgeführt werden.

sudo apt update
sudo apt upgrade

Vorhaben

  1. Installation der Grafiktreiber
  2. Installation der GUI
  3. Installation von VirtualGL
  4. Installation von TurboVNC
  5. Firewall der Google Cloud konfigurieren

Setup

Installation der Grafiktreiber

Zunächst ist mit dem Befehl sudo apt install ubuntu-drivers-common ein Toll für die Identifizierung des Grafiktreibers zu installieren.

Mit ubuntu-drivers devices kann nun der Treiber identifiziert werden, welcher als recommendedmarkiert ist. Google Cloud Ubuntu Drivers

In obigem Beispiel wäre der Treiber nun mit dem Befehl sudo apt install nvidia-driver-470 zu installieren.

Ist dies geschehen, sollte der Server mit sudo reboot neu gestartet werden.

Nach dem Neustart kann mit dem Befehl nvidia-smi die Installation geprüft werden. Es sollte eine Ausgabe mit Informationen zur GPU angezeigt werden. Unter Umständen auch ein Xorg Server oder Gnome als Prozess angezeigt. Google Cloud Nvidia Smi

Installation der GUI

Damit man mit der Remote Desktop Verbindung eine Desktopoberfläche nutzen kann, muss diese zunächst installiert werden. Bei Ubuntu Server Installationen, wie hier in der Cloud, ist diese standardmäßig nicht installiert.

Dies kann mit sudo apt install ubuntu-desktop erledigt werden. Diese Installation kann selbst auf dem leistungsstarken Server etwas dauern.

Nach erfolgreichem Abschluss der Installation ist der Server mit sudo reboot neu zu starten.

Installation von VirtualGL

VirtualGL ermöglicht die Nutzung der GPU für 3D-Grafikanwendungen über eine Remote Desktop Verbindung. Dieser extra Schritt ist notwendig, da sonst sämtliche 3D-Rechenschritte beim Client und nicht auf dem Server durchgeführt werden. Die Auslagerung von 3D-Rechnungen zum Client ist bei praktisch allen Remote Desktop Protokollen der Fall, weswegen diese spezielle Lösung zu wählen ist.

VirtualGL kann bei Sourceforge über diesen Link gefunden werden. Wähle die neuste Verion (natürlich keine Beta etc.). In dem Ordner finden sich die Installationsdateien für verschiedene Platformen. Suche die passende für den Server. Meistens heißt sie ungefähr virtualgl_3.0_amd64.deb (Version 3.0). Google Cloud VGL Download Area

Auf der Download-Seite klicke auf Problems Downloading?. Google Cloud VGL Problems Downloading

Kopiere nun den direct link. Google Cloud Direct Download Link

In dem SSH-Terimnal des Servers können wir mit wget nun die Installationsdatei herunterladen. Dazu wget gefolgt von einem Leerzeichen und einer gekürzten Version des Links ins Terminal eingeben.

Der Link ist so zu kürzen, dass sämtliches nach und inklusive dem Fragezeichen entfernt wird. Aus

wget https://downloads.sourceforge.net/project/virtualgl/3.0/virtualgl_3.0_arm64.deb?ts=gAAAAABh5vQ1neXP7PiiarMaNotNf7U3_J9bfw_GcTppIDhQLQxirEZ4DZyWiYEUIUSSJOH8uQZ8BQ_TCXMboR-X3RgeHy_USg%3D%3D&r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fvirtualgl%2Ffiles%2F3.0%2Fvirtualgl_3.0_arm64.deb%2Fdownload

wird

wget https://downloads.sourceforge.net/project/virtualgl/3.0/virtualgl_3.0_arm64.deb

Ist der Download erfolgreich kann nun mit ls geprüft werden, dass die Datei wirklich heruntergeladen wurde.

Ist dies der Fall, kann sie nun installiert werden. Dazu wird sudo dpkg -i gefolgt von einem Leerzeichen und dem Dateinamen eingegeben.

Beispielsweise also sudo dpkt -i virtualgl_3.0_arm64.deb.

Nun sollte der Server mit sudo reboot neu gestartet werden.

Im Anschlus ist mir sudo service gdm stop der Displaymanager fürs das Setup zu beenden.

Mit sudo /opt/VirtualGL/bin/vglserver_config muss VirtualGL konfiguriert werden. Dazu ist zunächst Option 1 zu wählen. Alle anderen Abfragen können (und müssen teilweise) mit n abgelehnt werden.

Jetzt kann der Displaymanager mit sudo service gdm start wieder gestartet werden.

Nun kann die Installation mit folgenden beiden Befehlen getestet werden. Beide sollten fehlerfrei eine längliche Ausgabe anzeigen.

xdpyinfo -display :0
/opt/VirtualGL/bin/glxinfo -display :0

Erneut ist der Server mit sudo reboot neu zu starten.

Installation von TurboVNC

Analog zur Installation von VirtualGL wird nun TurboVNC installiert. Dazu werden sämtliche Schritte bis Inklusive des ersten Neustarts durchgeführt. Der Sourceforge Download Link für TurboVNC findet sich hier.

Firewall der Google Cloud konfigurieren

Damit der Cloud Desktop von dem lokalen Client erreichbar ist, müssen die für VNC benötigten Ports in der Firewall freigegeben werden. Dazu sind die folgenden Schritte zu befolgen.

Über das Bürger-Menü sind in der Google Cloud Console die Firewall-Einstellungen zu öffnen. Google Cloud Firewall Menue

Dort ist eine neue Firewall-Regel zu erstellen. Google Cloud Create Firewall Rule

Diese ist beliebig zu benennen. Google Cloud Create Firewall Rule Name

Zudem sind folgende Einstellungen notwendig:

  • Als Ziele/Targest sind bestimmte Tags einzugeben. Diesen werden wir auch auf die VM anwenden, damit die Firewall-Regel für diese gilt. Es wird ein Tag mit einem belibigen Namen benötigt. Z. B. turbovnc, da Freigaben für diese Anwendung gespeichert werden. Dieser Tag wird später noch benötigt.
  • Es ist der Source-Filter zu definieren. Dieser beschreibt welche Rechner grundsätzlich einen Verbindungsaufbau starten können. Mit 0.0.0.0/0 wird dies für sämtliche Clients freigegeben.
  • Damit nicht unnötige Sicherheitsrisiken eingegangen werden, werden nur die benötigten Ports geöffnet. TurboVNC startet die Verbindung immer über den Port 5900 + Displaynummer. Für die Displaynummer 3 würde sich folgender Port ergeben: 5903. Damit nicht für jede VNC Verbindung eine Änderung vorgenommen werden muss, kann hier 5900-5905 eingegeben werden, wodurch direkt mehrere Ports freigegeben werden. Google Cloud Create Firewall Rule Settings

Nachdem nun die Firewall Regel erstellt wurde, muss diese auf die Virtuelle Maschine angewendet werden. Dazu in der VM Übersicht auf den VM Namen klicken. Google Cloud VM Name

In der Detailübersicht oben auf Edit klicken. Google Cloud VM Edit Button

In dem Feld unter dem Titel "Network Tags" (auf Deutsch wahrscheinlich etwas anders) muss bei der Firewall Regel vergebene Tag anagegeben werden. Das genannte Beispiel war turbovnc. Google Cloud VM Edit Network Tag

Nachdem die Änderungen unten auf der Seite gespeichert wurden, ist die Firewall fertig konfiguriert.

den Client einrichten

Um den Server nutzen zu können, muss nun auch TurboVNC auf dem Client installiert werden. Das Vorgehen dazu variiert je nach Platform (Ubuntu, macOS, Windows, ...). In jedem Fall ist erneut dieser Downloadlink zu nutzen. Für Ubuntu kann die Anleitung oben verwendet werden.

VirtualGL ist nicht auf dem Client zu installieren.

Start der Arbeitsumgebung

Die folgenden Schritte sind nach jedem Neustart des Servers durchzuführen. Sie dauern mit Übung nur ca. eine Minute.

Nach dem Start des Cloud Computing Desktops ist zunächst sicher zu stellen, dass der Displaymanager aktivier ist. Dazu einfach sudo service gdm start per SSH ausführen.

Nun kann mit /opt/TurboVNC/bin/vncserver ein VNC-Server gestartet werden. Beim ersten Start wird man aufgefordert ein Passwort einzugeben. Dieses kann man belibig wählen. Es ist bei jedem Verbindungsaufbau zum Server mit VNC notwendig.

Bei der Ausgabe dieses Befehles, muss man sich die Displaynummer merken. In der Zeile

Desktop 'TurboVNC: simulation-server:1 (root)' started on display simulation-server:1

ist die Displaynummer 1.

Natürlich sollte man ebenso das Passwort des eigenen Benutzers kennen. Falls dieses nicht bekannt ist, kann es mit passwd gesetzt werden.

Nun kann auf dem Client der VNC-Viewer gestartet werden. Unter Ubuntu mit /opt/TurboVNC/bin/vncviewer, auf anderen Platformen über die normale Programmauswahl.

In der VM Übersicht der Google Cloud Platform Console findet sich die öffetnliche IP der Virtuellen Maschine. Google Cloud VM Public IP

Diese muss nun in dem sich öffnenden Dialog gefolgt von einem Doppelpunkt und der Displaynummer eingegeben werden. TurboVNC Client IP Prompt Beispielsweise so: TurboVNC Client IP Prompt Filled

Im Anschluss muss das zuvor gesetzte VNC-Passwort eingegeben werden: TurboVNC Client Password Prompt Beispeilsweise so: TurboVNC Client Password Prompt Filled

Nun öffnet sich ein Fenster mit der erfolgreich aufgebauten VNC-Verbindung. TurvboVNC Client Session

Nutzung der Arbeitsumgebung

Die Arbeitsumgebung kann nun wie ein normaler Computer genutzt werden. Befindet sich TurboVNC im Vollbildmodus ist bis auf eine geringe Reaktionsverzögerung kein Unterschied zu einem lokalen Computer feststellbar.

Allerdings gibt es bei der Nutzung eine Besonderheit. Immer wenn eine Grafikanwendung (in diesem Fall Gazebo) gestartet wird, muss vor den eigentlichen Terminalbefehl vglrun geschrieben werden. Dadurch wird VirtualGL gezeigt, dass die Grafikanwendung nicht beim Client gerechnet werden soll. TurboVNC Client VGL Run

Aus gazebo wird z. B. vglrun gazebo. Und aus ros2 launch field_robot simulation.launch.py wird vglrun ros2 launch field_robot simulation.launch.py.

Ist eine Grafikanwendung mit vglrun gestartet kann die Nutzung der GPU mit nvidia-smi überprüft werden. In diesem Fall sollte Gazebo als ein Prozess auf der GPU gelistet sein. TurboVNC Client VGL Run Nvidia SMI

Tips & Hinweise

  • Fahre die Cloud Virtual MAchine immer herunter, wenn du sie nicht nutzt. Ansonsten kann es ziemlich teuer werden.

  • Manchmal wird beim Versuch, die VM zu starten, die Fehlermeldung angezeigt, dass nicht ausreichende Ressourcen zur verfügung stünden. Dies ist eine Notwendigkeit beim Cloud Computing. Es gibt zwei Möglichekeiten: Entweder einen anderen Standort/ein anderes Rechenzentrum einrichten oder warten. Wir empfehlen zu warten, da auch andere Rechenzentren Ressourcenmangel haben.

    Es ist jedoch zu berücksichtigen, dass unterschiedilche Regionen einen unterschiedlichen Ressourcenmangel haben. Am zuverlässigsten sind allgemein die Server in Nordamerika (meist in den USA).

  • Wenn man mit mehreren Personen zusammen arbeitet empfiehlt es sich, auch eine Cloud VM zu teilen. Dazu kann das Google Cloud Platform Projekt mit den anderen Teammitgliedern geteilt werden. Es darf nicht vergessen werden, die notwendigen Berechtigungen zu aktivieren.

To be completed.

Clone this wiki locally