
Hallo zusammen. Dieser Artikel ist fĂŒr diejenigen geschrieben, die noch zwischen den Virtualisierungsplattformen schwanken und nach dem Lesen eines Artikels aus der Reihe âWir haben Proxmox installiert und alles lĂ€uft prima, 6 Jahre ohne Ausfallâ auf die Frage stoĂen: Wie kann ich das hier anpassen und hier, um das Monitoring verstĂ€ndlicher zu machen, oder hier, um die Backups zu steuern.... Und dann kommt der Zeitpunkt, an dem man merkt, dass man etwas Funktionaleres möchte, oder dass man möchte, dass alles in seinem System klar ist und nicht wie eine schwarze Box erscheint, oder dass man etwas mehr als nur einen Hypervisor und eine Menge virtueller Maschinen nutzen möchte. In diesem Artikel wird es einige Ăberlegungen und praktische Erfahrungen mit der Plattform OpenNebula geben â ich habe sie gewĂ€hlt, weil sie ressourcenschonend ist und die Architektur nicht so kompliziert ist.
Wie wir sehen, arbeiten viele Cloud-Anbieter mit KVM und erstellen externe Bindings zur Verwaltung von Maschinen. Es ist klar, dass groĂe Hostanbieter ihre eigenen Bindungen fĂŒr die Cloud-Infrastruktur schreiben, wie zum Beispiel YANDEX. Manche nutzen OpenStack und erstellen darauf basierende Bindungen â SELECTEL, MAIL.RU. Aber wenn Sie Ihre eigene Hardware und ein kleines Team von Spezialisten haben, wĂ€hlen Sie normalerweise etwas Fertiges â VMWARE, HYPER-V, es gibt kostenlose und kostenpflichtige Lizenzen, aber darum geht es jetzt nicht. Sprechen wir ĂŒber Enthusiasten â das sind diejenigen, die keine Angst haben, Neues anzubieten und auszuprobieren, obwohl die Firma eindeutig angedeutet hat: âWer wird das nach dir warten?â, âWird das wirklich in die Produktion gehen? Das macht Angst.â Aber man kann solche Lösungen zunĂ€chst in einer Testumgebung anwenden, und wenn es allen gefĂ€llt, kann man das Thema einer weiteren Entwicklung und Nutzung in ernsthafteren Umgebungen ansprechen.
Hier ist der Link zur PrÀsentation von einem aktiven Teilnehmer an der Entwicklung dieser Plattform.
In diesem Artikel könnte es möglicherweise ĂŒberflĂŒssige Informationen geben, die bereits fĂŒr erfahrene Spezialisten verstĂ€ndlich sind, wĂ€hrend ich in einigen FĂ€llen nicht alle Details beschreiben werde, da Ă€hnliche Befehle und Beschreibungen im Internet verfĂŒgbar sind. Hier teile ich nur meine Erfahrungen mit dieser Plattform. Ich hoffe, dass die aktiven Teilnehmer in den Kommentaren ergĂ€nzen, was verbessert werden kann und welche Fehler ich gemacht habe. Alle Aktionen fanden unter den Bedingungen eines Heimstandards mit 3 PCs mit unterschiedlichen Spezifikationen statt. Ich habe absichtlich darauf verzichtet, die Funktionsweise dieser Software und die Installation zu beschreiben. Nein, es geht nur um meine Administrierungserfahrungen und die Probleme, mit denen ich konfrontiert war. Möglicherweise wird dies jemandem bei seiner Entscheidung nĂŒtzlich sein.
Also, beginnen wir. FĂŒr mich als Systemadministrator sind die folgenden Punkte wichtig, ohne die ich diese Lösung wahrscheinlich nicht nutzen werde.
1. Wiederholbarkeit der Installation
Es gibt viele Anleitungen zur Installation von OpenNebula, es sollte keine Probleme geben. Von Version zu Version kommen neue Funktionen hinzu, die bei einem Upgrade nicht immer funktionieren.
2. Ăberwachung
Wir werden die Node, KVM und OpenNebula selbst ĂŒberwachen. Zum GlĂŒck gibt es bereits Lösungen dafĂŒr. Es gibt viele Optionen fĂŒr die Ăberwachung von Linux-Hosts, beispielsweise Zabbix oder Node Exporter â je nach Vorliebe. Im Moment definiere ich die Ăberwachung der Systemmetriken (Temperatur, wo messbar, Konsistenz des Speicher-Arrays) ĂŒber Zabbix, wĂ€hrend ich fĂŒr die Anwendungen den Exporter in Prometheus verwende. FĂŒr die KVM-Ăberwachung könnte man beispielsweise dieses Projekt verwenden: und es ĂŒber Systemd starten, funktioniert ganz gut und zeigt KVM-Metriken an. Es gibt auch ein fertiges Dashboard: .
Zum Beispiel, hier ist meine Datei:
/etc/systemd/system/libvirtd_exporter.service
[Unit]
Description=Node Exporter
[Service]
User=node_exporter
ExecStart=/usr/sbin/prometheus-libvirt-exporter --web.listen-address=":9101"
[Install]
WantedBy=multi-user.targetUnd so haben wir 1 Exporter, wir benötigen einen zweiten zur Ăberwachung von OpenNebula, ich habe diesen verwendet:
Das kann man einfach hinzufĂŒgen, um die SystemĂŒberwachung Folgendes zu machen.
Im Datei fĂŒr Node Exporter Ă€ndern wir den Start wie folgt:
ExecStart=/usr/sbin/node_exporter --web.listen-address=":9102" --collector.textfile.directory=/var/lib/opennebula_exporter/textfile_collectorErstellen Sie das Verzeichnis mkdir -p /var/lib/opennebula_exporter
Das obige Bash-Skript testen wir zunĂ€chst ĂŒber die Konsole; wenn es das zeigt, was es soll (bei Fehlern installieren wir xmlstarlet), kopieren wir es nach /usr/local/bin/opennebula_exporter.sh
FĂŒgen Sie einen Cron-Job hinzu, der jede Minute lĂ€uft:
*\/1 * * * * (/usr/local/bin/opennebula_exporter.sh > /var/lib/opennebula_exporter/textfile_collector/opennebula.prom)Die Metriken sind verfĂŒgbar, man kann sie mit Prometheus abrufen und Diagramme erstellen sowie Alarme einrichten. In Grafana kann man beispielsweise ein einfaches Dashboard zeichnen.

(Man sieht, dass ich hier overcommit fĂŒr CPU und RAM gemacht habe)
FĂŒr diejenigen, die Zabbix mögen und nutzen, gibt es
Das ist alles zur Ăberwachung, das Wichtigste ist, dass es vorhanden ist. NatĂŒrlich kann man zusĂ€tzlich die integrierten Ăberwachungsfunktionen der virtuellen Maschinen nutzen und Daten in die Abrechnung exportieren; hier hat jeder seine eigene Sichtweise, ich habe mich damit bisher nicht intensiver beschĂ€ftigt.
Zum Logging habe ich bisher nicht viel gemacht. Die einfachste Option ist, td-agent zum Parsen des Verzeichnisses /var/lib/one mit regulĂ€ren AusdrĂŒcken hinzuzufĂŒgen. Zum Beispiel passt die Datei sunstone.log zu regexp nginx und anderen Dateien, die die Historie der Plattformzugriffe zeigen â was ist der Vorteil? Nun, wir können eindeutig die Anzahl der âError, errorâ verfolgen und schneller herausfinden, wo und auf welcher Ebene es ein Problem gibt.
3. Backups
Es gibt auch kostenpflichtige, angepasste Projekte â zum Beispiel sep :OpenNebula_Backup. Hier mĂŒssen wir verstehen, dass es nicht ausreicht, nur das Image der Maschine zu sichern, denn unsere virtuellen Maschinen mĂŒssen mit voller Integration arbeiten (dieselbe Kontextdatei, in der die Netzwerkeinstellungen, der Name der VM und benutzerdefinierte Einstellungen fĂŒr Ihre Anwendungen beschrieben sind). Daher mĂŒssen wir festlegen, was und wie wir sichern wollen. In einigen FĂ€llen ist es besser, Kopien von dem zu machen, was sich in der VM selbst befindet. Und vielleicht mĂŒssen wir nur eine Festplatte von dieser Maschine sichern.
Zum Beispiel haben wir festgelegt, dass alle Maschinen mit persistenten Images gestartet werden, also haben wir gelesen
Das bedeutet, dass wir zuerst das Image von unserer VM exportieren können:
onevm disk-saveas 74 3 prom.qcow2
Image ID: 77
Wir schauen, unter welchem Namen es gespeichert wurde
oneimage show 77
/var/lib/one//datastores/100/f9503161fe180658125a9b32433bf6e8
Und dann kopieren wir es dorthin, wo es benötigt wird. NatĂŒrlich ist das nicht der beste Weg. Ich wollte nur zeigen, dass man mit den Werkzeugen von OpenNebula solche Lösungen erstellen kann.AuĂerdem habe ich im Internet gefunden und es gibt noch , aber hier nur fĂŒr qcow2-Speichersysteme.
Wie wir alle wissen, kommt irgendwann der Moment, an dem man inkrementelle Backups möchte. Hier wird es komplizierter, und möglicherweise wird das Management Geld fĂŒr eine kostenpflichtige Lösung bereitstellen. Alternativ kann man den Weg gehen und verstehen, dass wir hier nur Ressourcen abbauen, wĂ€hrend das Backup auf Anwendungsebene erfolgt und man die Anzahl neuer Knoten und virtueller Maschinen erhöht. Ich sage, dass man die Cloud rein fĂŒr den Start von Anwendungsclustern nutzen sollte, wĂ€hrend man die Datenbanken auf einer anderen Plattform betreibt oder eine fertige Lösung vom Anbieter verwendet, wenn dies möglich ist.
4. Benutzerfreundlichkeit
In diesem Punkt werde ich die Probleme beschreiben, mit denen ich konfrontiert war. Zum Beispiel gibt es bei Images, wie wir wissen, den Typ persistent â wenn dieses Image an eine VM angebunden wird, werden alle Daten in dieses Image geschrieben. Bei non-persistent wird das Image auf den Speicher kopiert und die Daten werden in das kopierte Original-Image geschrieben â so funktionieren die Templates. Ich habe mir selbst mehrmals Probleme gemacht, indem ich vergessen habe, persistent anzugeben, und 200 GB des Images wurden kopiert. Das Problem ist, dass man diesen Vorgang wahrscheinlich nicht abbrechen kann; man muss zur Node gehen und den aktuellen Prozess âcpâ stoppen.
Ein wichtiger Nachteil ist, dass man Aktionen nicht einfach ĂŒber die GUI abbrechen kann. Oder besser gesagt, man wird sie abbrechen und sehen, dass nichts passiert, dann wieder starten, abbrechen und letztendlich gibt es dann zwei cp-Prozesse, die das Image kopieren.
Und hier versteht man, warum OpenNebula jedem neuen Instanz eine neue ID zuweist. Zum Beispiel habe ich in Proxmox eine VM mit der ID 101 erstellt, sie gelöscht und dann wieder erstellt, jedoch hatte sie erneut die ID 101. In OpenNebula wird das nicht der Fall sein; jede neue Instanz wird mit einer neuen ID erstellt, und darin liegt eine Logik â zum Beispiel die Bereinigung alter Daten oder missratener Installationen.
Das Gleiche gilt fĂŒr den Speicher; diese Plattform ist vor allem auf zentralisierten Speicher ausgerichtet. Es gibt Add-Ons fĂŒr die Nutzung lokalen Speichers, aber darum geht es hier nicht. Ich denke, dass in Zukunft jemand einen Artikel darĂŒber schreiben wird, wie es gelungen ist, lokalen Speicher auf Nodes zu nutzen und erfolgreich in der Produktion anzuwenden.
5. Maximale Einfachheit
NatĂŒrlich, je weiter man geht, desto weniger Menschen wird es geben, die dich verstehen.
In meinem Setup â 3 Knoten mit NFS-Speicher â funktioniert alles einwandfrei. Aber wenn man Experimente mit der Energieabschaltung durchfĂŒhrt, dann bleibt zum Beispiel beim Starten eines Snapshots und dem Ausschalten der Stromzufuhr der Eintrag in der Datenbank bestehen, dass ein Snapshot existiert, tatsĂ€chlich gibt es jedoch keinen (wir wissen ja, dass dieser Vorgang ursprĂŒnglich in die SQL-Datenbank eingetragen wurde, aber die Operation war nicht erfolgreich). Der Vorteil ist, dass bei der Erstellung eines Snapshots eine separate Datei generiert wird und es einen âElternteilâ gibt; im Falle von Problemen, auch wenn es ĂŒber die GUI nicht funktioniert, können wir die QCOW2-Datei abrufen und separat wiederherstellen.
Bei Netzwerken ist leider nicht alles so einfach. Nun, zumindest einfacher als in OpenStack. Ich habe nur VLAN (802.1Q) verwendet â funktioniert ganz gut, aber wenn Sie Ănderungen an den Einstellungen in der Template-Netzwerk vornehmen, werden diese Einstellungen nicht auf bereits laufende Maschinen angewendet, d. h. Sie mĂŒssen die Netzwerkkarte entfernen und erneut hinzufĂŒgen, dann werden die neuen Einstellungen angewendet.
Wenn man OpenStack weiter vergleichen möchte, kann man sagen, dass es in OpenNebula keine klare Definition gibt, welche Technologien zur Speicherung von Daten, zur Netzwerk- und Ressourcenverwaltung verwendet werden sollten â jeder Administrator entscheidet selbst, wie es fĂŒr ihn am besten ist.
6. ZusÀtzliche Plugins und Installationen
Denn wie wir wissen, kann die Cloud-Plattform nicht nur KVM, sondern auch VMware ESXi verwalten. Leider hatte ich keinen Pool mit VCenter, wenn jemand es ausprobiert hat, schreiben Sie bitte.
In der UnterstĂŒtzung anderer Cloud-Anbieter wurde angegeben,
AWS, AZURE.
Ich habe auch versucht, VMware Cloud von Selectel anzuschlieĂen, aber es hat nichts funktioniert â insgesamt habe ich aufgegeben, da es viele Faktoren gibt, und es macht keinen Sinn, beim Hosting-Anbieter den technischen Support zu kontaktieren.
AuĂerdem gibt es jetzt in der neuen Version Firecracker â das ist der Start von MicroVMs, eine Art KVM-Wrapper ĂŒber Docker, was zusĂ€tzlich mehr Vielseitigkeit, Sicherheit und Leistung bietet, da keine Ressourcen fĂŒr die Emulation von Hardware verschwendet werden. Ich sehe nur den Vorteil gegenĂŒber Docker darin, dass es keine zusĂ€tzlichen Prozesse benötigt und keine besetzten Sockets bei der Verwendung dieser Emulation gibt, d. h. es kann durchaus als Lastenausgleich verwendet werden (aber darĂŒber sollte man vielleicht einen separaten Artikel schreiben, da ich bisher nicht alle Tests vollstĂ€ndig durchgefĂŒhrt habe).
7. Positive Erfahrungen und Debugging von Fehlern
Ich wollte meine Beobachtungen zur Funktionsweise teilen, einen Teil habe ich oben beschrieben, und ich möchte mehr schreiben. TatsĂ€chlich bin ich wahrscheinlich nicht der Einzige, der anfangs denkt, dass dies nicht das richtige System ist und dass hier alles etwas hacky ist â wie funktioniert man hier ĂŒberhaupt? Aber dann kommt das VerstĂ€ndnis, dass alles ganz logisch ist. NatĂŒrlich kann man es nicht allen recht machen und einige Aspekte erfordern Nachbesserungen.
Zum Beispiel eine einfache Operation zum Kopieren eines Disk-Images von einem Datastore auf einen anderen. In meinem Fall gibt es 2 Knoten mit NFS, ich sende das Image â das Kopieren erfolgt ĂŒber das Frontend von OpenNebula, obwohl wir es gewohnt sind, dass die Daten direkt zwischen den Hosts kopiert werden â genauso wie bei VMware oder Hyper-V, dort sind wir es gewohnt, aber hier ist es anders. Hier gibt es einen anderen Ansatz und eine andere Ideologie, und in Version 5.12 wurde die SchaltflĂ€che âmigrate to datastoreâ entfernt â es wird nur die Maschine selbst verschoben, aber nicht der Speicher, da ein zentrales Speicher verwendetes wird.
Dann gibt es den hĂ€ufigen Fehler mit verschiedenen Ursachen âFehler beim Bereitstellen der virtuellen Maschine: Konnte Domain nicht aus /var/lib/one//datastores/103/10/deployment.5 erstellenâ. Weiter unten wird die Liste bereitgestellt, was man ansehen sollte.
- Berechtigungen fĂŒr das Image fĂŒr den Benutzer oneadmin;
- Berechtigungen fĂŒr den Benutzer oneadmin zum Starten von libvirtd;
- Ist der Datastore richtig gemountet? Geh und ĂŒberprĂŒfe den Pfad am Knoten selbst, möglicherweise ist etwas abgebrochen;
- Falsch konfigurierte Netzwerke, genauer gesagt, in den Netzwerkeinstellungen des Frontends steht, dass br0 als primĂ€res Interface fĂŒr VLAN verwendet wird, wĂ€hrend am Knoten bridge0 eingetragen ist â es sollte gleich sein.
Der system datastore speichert Metadaten fĂŒr Ihre VM. Wenn Sie die VM mit einem persistenten Image starten, muss die VM auf die ursprĂŒnglich erstellte Konfiguration auf dem Datastore zugreifen, auf dem Sie die VM erstellt haben â das ist sehr wichtig. Daher sollten bei der Ăbertragung der VM auf einen anderen Datastore alle ĂberprĂŒfungen vorgenommen werden.
8. Dokumentation, Community. Weitere Entwicklung
Und das andere, gute Dokumentation, eine Community und vor allem, dass das Projekt weiterhin lebendig bleibt.
Insgesamt ist hier alles ziemlich gut dokumentiert, und selbst bei der offiziellen Quelle wird es keine Probleme geben, die Installation durchzufĂŒhren und Antworten auf Fragen zu finden.
Eine aktive Gemeinschaft. Sie veröffentlicht viele fertige Lösungen, die Sie in Ihren Installationen verwenden können.
Momentan haben sich mit 5.12 einige Richtlinien im Unternehmen geĂ€ndert. Es wird interessant sein zu erfahren, wie sich das Projekt entwickeln wird. Zu Beginn habe ich absichtlich einige Anbieter aufgefĂŒhrt, die ihre eigenen Lösungen verwenden und was die Industrie anbietet. Eine klare Antwort darauf, was Sie verwenden sollten, gibt es natĂŒrlich nicht. Aber fĂŒr kleine Organisationen kann die UnterstĂŒtzung ihrer eigenen kleinen privaten Cloud vielleicht weniger kostspielig sein als gedacht. Das Wichtigste ist, genau zu wissen, dass Sie dies benötigen.
Zusammenfassend lÀsst sich sagen, dass Sie, unabhÀngig davon, welches Cloud-System Sie gewÀhlt haben, nicht bei einem Produkt stehen bleiben sollten. Wenn Sie Zeit haben, sollten Sie sich auch andere offenere Lösungen ansehen.
Es gibt einen guten Chat. Sie helfen aktiv und schicken nicht zum Suchen von Problemlösungen zu Google. Treten Sie bei.
Quelle: habr.com
