Zum Inhalt springen

Architektur von OpenNebula

Auftrag

«Bevor du installierst, will ich verstehen, was wir da betreiben», schreibt Simone Wyss. «Was läuft wo und wer redet mit wem? Wenn nachts etwas ausfällt, muss das Plattform-Team das wissen.»

Lernziele

Nach diesem Kapitel kannst du:

  • Die Bausteine von OpenNebula nennen und Front-end oder Knoten zuordnen
  • Erklären, wie ein Auftrag von der Weboberfläche bis zur laufenden VM gelangt
  • Die Objekte von OpenNebula unterscheiden
  • Die drei Wege nennen, über die du OpenNebula bedienst

OpenNebula besteht aus einem Front-end und aus Knoten. Das Front-end verwaltet die Cloud, auf den Knoten laufen die VMs. Einen eigenen Dienst von OpenNebula brauchen die Knoten nicht, das Front-end steuert sie über SSH und kleine Treiberprogramme.

Die Bausteine von OpenNebula Die Bausteine von OpenNebula in drei Bereichen übereinander. Oben greifen Sunstone, die CLI und OpenTofu über die API auf Port 2633 auf oned zu. In der Mitte verwaltet oned auf dem Front-end alle Objekte, speichert sie in MariaDB, lässt den Scheduler Knoten wählen und erhält Zustände von onemonitord. Die Treiber für Hosts, VMs, Transfer, Netze und Datastores führen die Aufträge aus. Unten arbeiten die beiden Knoten mit libvirt und KVM. Ihr Datastore 0 hält die Disks laufender VMs. Achte darauf, dass auf den Knoten kein Dienst von OpenNebula läuft. Die Treiber erreichen sie über SSH. ZUGANG FRONT-END KNOTEN 1 KNOTEN 2 API 2633 SSH Sunstone Port 2616 CLI onevm, onehost OpenTofu ab Teil 4 oned verwaltet alle Objekte MariaDB Datenbank Scheduler wählt Knoten Monitoring onemonitord Treiber IM, VMM, TM, VNM, DS libvirt VMs mit KVM Datastore 0 Disks laufender VMs libvirt VMs mit KVM Datastore 0 Disks laufender VMs

Der Kern ist der Dienst oned. Er nimmt alle Aufträge über seine API entgegen, verwaltet den Zustand jedes Objekts und speichert ihn in einer Datenbank, im Kurs MariaDB. Der Scheduler ist ein Treiber von oned und wählt für jede neue VM einen Knoten mit genug freier Kapazität. onemonitord fragt regelmässig den Zustand der Knoten und VMs ab.

Die eigentliche Arbeit erledigen Treiber, die oned für jede Art von Aufgabe aufruft:

TreiberAufgabeIm Lab
IM (Information Manager)Zustand und Kapazität der Hosts erfassenKVM-Knoten
VMM (Virtual Machine Manager)VMs starten, stoppen und verschiebenlibvirt mit KVM
TM (Transfer Manager)Disks zum Knoten bringen und zurückssh, kopiert über SSH
VNM (Virtual Network Manager)Netze auf den Knoten einrichtenvxlan ab Kapitel 2.3
DS (Datastore)Images speichern und verwaltenfs auf dem Front-end

Startest du in Sunstone eine VM, schickt Sunstone den Auftrag an die API von oned. oned legt die VM in der Datenbank an und der Scheduler wählt einen Knoten. Der TM-Treiber kopiert das Image über SSH in den Datastore auf diesem Knoten, der VNM-Treiber richtet dort das Netz ein. Zuletzt lässt der VMM-Treiber libvirt die VM mit KVM starten. Von da an meldet onemonitord laufend ihren Zustand. Welche Dienste und Ports dazu auf dem Front-end laufen, zeigt Kapitel 2.2.

In OpenNebula arbeitest du mit Objekten. Jedes hat eine Nummer, einen Namen, einen Besitzer, eine Gruppe und Rechte.

ObjektBedeutungCLI
Hostein Knoten, auf dem VMs laufenonehost
Clustereine Gruppe von Hosts mit ihren Netzen und Datastoresonecluster
Datastoreein Speicherort für Images oder für die Disks laufender VMsonedatastore
Imageeine Disk, aus der VMs startenoneimage
Virtuelles Netzein Netz mit Adressbereich für die VMsonevnet
Vorlagedie Beschreibung einer VM, aus der du VMs startestonetemplate
VMeine laufende oder gestoppte virtuelle Maschineonevm
Benutzer und Gruppewer etwas darf und wem es gehörtoneuser, onegroup

Auf OpenNebula greifst du auf drei Wegen zu. Alle drei sprechen mit derselben API von oned. Die Weboberfläche Sunstone eignet sich zum Erkunden und für die Mitglieder. Die CLI auf dem Front-end ist der schnellste Weg für das Plattform-Team und für Skripte. Die API selbst nutzen Werkzeuge wie OpenTofu, mit dem du ab Teil 4 VMs aus Code anlegst.

Aufgabe Einordnen

Ordne die Bausteine oned, onemonitord, KVM, MariaDB, Scheduler, libvirt, Sunstone und den Datastore 0 mit den Disks laufender VMs dem Front-end oder den Knoten zu.

Lösung

Auf dem Front-end laufen oned, MariaDB, der Scheduler, Sunstone und onemonitord. Auf den Knoten laufen KVM und libvirt. Dort liegt auch der Datastore 0 mit den Disks der laufenden VMs, weil der Transfertreiber ssh sie dorthin kopiert.

Aufgabe Der Weg einer VM

Beschreibe in fünf Schritten, was zwischen dem Klick auf «Erstellen» in Sunstone und der laufenden VM geschieht. Nenne bei jedem Schritt den beteiligten Baustein.

Lösung
  1. Sunstone schickt den Auftrag an die API von oned.
  2. oned legt die VM in MariaDB an.
  3. Der Scheduler wählt einen Knoten mit genug Kapazität.
  4. Der TM-Treiber kopiert das Image auf den Knoten, der VNM-Treiber richtet das Netz ein.
  5. Der VMM-Treiber lässt libvirt die VM mit KVM starten, onemonitord meldet den Zustand.

Texte und Abbildungen stehen unter CC BY-SA 4.0 und der Code unter der MIT-Lizenz. Die Quellen liegen auf GitHub.