Offener Nebel. Kurze Notizen

Offener Nebel. Kurze Notizen

Hallo zusammen. Dieser Artikel wurde für diejenigen geschrieben, die immer noch hin- und hergerissen sind zwischen der Auswahl von Virtualisierungsplattformen und dem Lesen des Artikels aus der Serie „Wir haben Proxmox installiert und im Allgemeinen ist alles in Ordnung, 6 Jahre Betriebszeit ohne eine einzige Unterbrechung.“ Doch nach der Installation der einen oder anderen Out-of-the-Box-Lösung stellt sich die Frage: Wie kann ich das hier korrigieren, damit das Monitoring verständlicher wird, und hier, um Backups zu steuern…. Und dann kommt die Zeit und Ihnen wird klar, dass Sie etwas Funktionelleres wollen oder dass alles in Ihrem System klar sein soll und nicht diese Blackbox, oder dass Sie etwas mehr als einen Hypervisor und eine Reihe virtueller Maschinen verwenden möchten. Dieser Artikel enthält einige Gedanken und Übungen basierend auf der Opennebula-Plattform – ich habe sie gewählt, weil. Es beansprucht keine Ressourcen und die Architektur ist nicht so komplex.

Und so arbeiten, wie wir sehen, viele Cloud-Anbieter mit KVM und stellen externe Verbindungen her, um Maschinen zu steuern. Es ist klar, dass große Hoster ihre eigenen Frameworks für die Cloud-Infrastruktur schreiben, zum Beispiel das gleiche YANDEX. Jemand verwendet OpenStack und stellt auf dieser Basis eine Verbindung her - SELECTEL, MAIL.RU. Wenn Sie jedoch über eigene Hardware und einen kleinen Stab an Spezialisten verfügen, entscheiden Sie sich normalerweise für etwas Fertiges – VMWARE, HYPER-V, es gibt kostenlose und kostenpflichtige Lizenzen, aber darüber reden wir jetzt nicht. Sprechen wir über Enthusiasten – das sind diejenigen, die keine Angst davor haben, etwas Neues anzubieten und auszuprobieren, obwohl das Unternehmen klar klargestellt hat: „Wer wird das nach Ihnen warten?“ „Werden wir das später in die Produktion einführen?“ ? Beängstigend." Aber man kann diese Lösungen zunächst in einem Prüfstand anwenden, und wenn es allen gefällt, dann kann man die Frage nach der Weiterentwicklung und dem Einsatz in ernsteren Umgebungen stellen.

Hier ist auch ein Link zum Bericht www.youtube.com/watch?v=47Mht_uoX3A von einem aktiven Teilnehmer an der Entwicklung dieser Plattform.

Vielleicht ist in diesem Artikel etwas überflüssig und für einen erfahrenen Fachmann bereits verständlich, und in manchen Fällen werde ich nicht alles beschreiben, weil ähnliche Befehle und Beschreibungen im Internet verfügbar sind. Dies ist nur meine Erfahrung mit dieser Plattform. Ich hoffe, dass aktive Teilnehmer in den Kommentaren ergänzen, was man besser machen könnte und welche Fehler ich gemacht habe. Alle Aktionen fanden in einem Heimstand bestehend aus 3 PCs mit unterschiedlichen Eigenschaften statt. Außerdem habe ich nicht ausdrücklich darauf hingewiesen, wie diese Software funktioniert und wie sie installiert wird. Nein, nur Verwaltungserfahrung und die Probleme, auf die ich gestoßen bin. Vielleicht ist dies für jemanden in seiner Wahl nützlich.

Also lasst uns anfangen. Als Systemadministrator sind mir folgende 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 erscheinen neue Funktionen, die beim Wechsel von Version zu Version nicht immer funktionieren.

2. Überwachung

Wir werden den Knoten selbst, KVM und OpenNebula überwachen. Zum Glück ist es schon fertig. Es gibt viele Optionen zur Überwachung von Linux-Hosts, dem gleichen Zabbix oder Node-Exporter – wem auch immer was besser gefällt – im Moment definiere ich es als Überwachung von Systemmetriken (Temperatur, wo sie gemessen werden kann, Konsistenz des Festplatten-Arrays) über Zabbix und für Anwendungen über den Prometheus-Exporteur. Für die KVM-Überwachung können Sie beispielsweise das Projekt verwenden github.com/zhangjianweibj/prometheus-libvirt-exporter.git und stellen Sie es so ein, dass es über systemd ausgeführt wird. Es funktioniert recht gut und zeigt KVM-Metriken an. Es gibt auch ein vorgefertigtes Dashboard grafana.com/grafana/dashboards/12538.

Hier ist zum Beispiel 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.target

Und da wir einen Exporter haben, brauchen wir einen zweiten, um opennebula selbst zu überwachen. Ich habe diesen verwendet github.com/kvaps/opennebula-exporter/blob/master/opennebula_exporter

Kann zum Normalen hinzugefügt werden node_exporter um das System wie folgt zu überwachen.

In der Datei node_exporter ändern wir den Anfang wie folgt:

ExecStart=/usr/sbin/node_exporter --web.listen-address=":9102" --collector.textfile.directory=/var/lib/opennebula_exporter/textfile_collector

Erstellen Sie ein Verzeichnis mkdir -p /var/lib/opennebula_exporter

Wenn das oben dargestellte Bash-Skript angezeigt wird, überprüfen wir zunächst die Arbeit über die Konsole. Wenn es anzeigt, was wir benötigen (wenn es einen Fehler anzeigt, installieren Sie xmlstarlet), kopieren Sie es nach /usr/local/bin/opennebula_exporter.sh

Fügen Sie für jede Minute eine Cron-Aufgabe hinzu:

*/1 * * * * (/usr/local/bin/opennebula_exporter.sh > /var/lib/opennebula_exporter/textfile_collector/opennebula.prom)

Es tauchten Metriken auf, man kann sie wie einen Prometheus nehmen, Diagramme erstellen und Warnungen auslösen. In Grafana kann man beispielsweise so ein einfaches Dashboard zeichnen.

Offener Nebel. Kurze Notizen

(Es ist klar, dass ich hier CPU und RAM überlaste)

Für diejenigen, die Zabbix lieben und nutzen, gibt es das github.com/OpenNebula/addon-zabbix

Was die Überwachung angeht, kommt es vor allem darauf an, dass sie vorhanden ist. Natürlich können Sie zusätzlich die integrierten Tools zur Überwachung virtueller Maschinen nutzen und Daten in die Abrechnung hochladen, hier hat jeder seine eigene Vision, ich habe noch nicht begonnen, mich näher damit zu befassen.

Ich habe noch nicht wirklich mit dem Loggen begonnen. Die einfachste Option besteht darin, td-agent hinzuzufügen, um das Verzeichnis /var/lib/one mit regulären Ausdrücken zu analysieren. Beispielsweise stimmt die Datei sunstone.log mit dem regulären Nginx-Ausdruck und anderen Dateien überein, die den Verlauf des Zugriffs auf die Plattform anzeigen – was ist der Vorteil davon? Nun können wir zum Beispiel die Anzahl der „Fehler, Fehler“ explizit nachverfolgen und schnell erkennen, wo und auf welcher Ebene eine Störung vorliegt.

3. Backups

Es gibt auch bezahlte abgeschlossene Projekte – zum Beispiel sep wiki.sepsoftware.com/wiki/index.php/4_4_3_Tigon:OpenNebula_Backup. Hier müssen wir verstehen, dass das einfache Sichern eines Maschinen-Images in diesem Fall überhaupt nicht dasselbe ist, da unsere virtuellen Maschinen mit vollständiger Integration funktionieren müssen (dieselbe Kontextdatei, die die Netzwerkeinstellungen, den VM-Namen und die benutzerdefinierten Einstellungen für Ihre Anwendungen beschreibt). . Deshalb entscheiden wir hier, was und wie wir sichern. In manchen Fällen ist es besser, Kopien von dem zu erstellen, was in der VM selbst enthalten ist. Und vielleicht müssen Sie nur eine Festplatte von einem bestimmten Computer sichern.

Wir haben beispielsweise festgestellt, dass alle Maschinen nach dem Lesen mit persistenten Bildern beginnen docs.opennebula.io/5.12/operation/vm_management/img_guide.html

Das bedeutet, dass wir zunächst das Bild von unserer VM hochladen können:

onevm disk-saveas 74 3 prom.qcow2
Image ID: 77

Смотрим, под каким именем он сохранился

oneimage show 77
/var/lib/one//datastores/100/f9503161fe180658125a9b32433bf6e8
   
И далее копируем куда нам необходимо. Конечно, так себе способ. Просто хотел показать, что используя инструменты opennebula можно строить подобные решения.

Habe ich auch im Internet gefunden interessanter Bericht und es gibt noch mehr so ein offenes Projekt, aber es gibt nur Speicher für qcow2.

Aber wie wir alle wissen, kommt früher oder später der Zeitpunkt, an dem Sie inkrementelle Backups wünschen. Hier ist es schwieriger, und vielleicht stellt das Management Geld für eine kostenpflichtige Lösung bereit oder geht in die andere Richtung und versteht, dass wir hier nur Ressourcen kürzen. und Backups auf Anwendungsebene erstellen und eine Reihe neuer Knoten und virtueller Maschinen hinzufügen – ja, hier meine ich, dass ich die Cloud nur zum Starten von Anwendungsclustern verwende und die Datenbank auf einer anderen Plattform starte oder eine fertige Plattform verwende wenn möglich beim Lieferanten.

4. Benutzerfreundlichkeit

In diesem Absatz werde ich die Probleme beschreiben, auf die ich gestoßen bin. Wie wir wissen, gibt es beispielsweise Bilder, die dauerhaft sind. Wenn dieses Bild auf einer VM gemountet wird, werden alle Daten in dieses Bild geschrieben. Und wenn es nicht persistent ist, wird das Bild in den Speicher kopiert und die Daten werden in das geschrieben, was aus dem Quellbild kopiert wurde – so funktionieren Vorlagenvorlagen. Ich habe mir immer wieder Probleme bereitet, indem ich vergessen habe, persistent anzugeben und das 200-GB-Image kopiert wurde. Das Problem ist, dass dieser Vorgang sicherlich nicht abgebrochen werden kann, man muss zum Knoten gehen und den aktuellen „cp“-Prozess beenden.

Einer der großen Nachteile besteht darin, dass Sie Aktionen nicht einfach über die GUI abbrechen können. Oder besser gesagt, Sie werden sie abbrechen und sehen, dass nichts passiert, und Sie werden sie erneut starten, abbrechen und tatsächlich werden es bereits 2 CP-Prozesse sein, die das Bild kopieren.

Und dann geht es darum zu verstehen, warum OpenNebula jede neue Instanz mit einer neuen ID nummeriert, zum Beispiel hat Proxmox im selben Proxmox eine VM mit der ID 101 erstellt, sie gelöscht, dann erstellt man sie erneut und mit der ID 101. In OpenNebula wird das nicht passieren, Jede neue Instanz wird mit einer neuen ID erstellt und diese hat ihre eigene Logik – zum Beispiel das Löschen alter Daten oder fehlgeschlagene Installationen.

Das Gleiche gilt für die Speicherung; diese Plattform zielt vor allem auf die zentrale Speicherung ab. Es gibt Add-ons für die Verwendung von Local, aber darüber reden wir in diesem Fall nicht. Ich denke, dass in Zukunft jemand einen Artikel darüber schreiben wird, wie es ihm gelungen ist, lokalen Speicher auf Knoten zu nutzen und ihn erfolgreich in der Produktion einzusetzen.

5. Maximale Einfachheit

Je weiter Sie gehen, desto weniger Menschen werden Sie verstehen.

Unter den Bedingungen meines Standes - 3 Knoten mit NFS-Speicher - funktioniert alles einwandfrei. Aber wenn wir Experimente mit einem Stromausfall durchführen, zum Beispiel wenn wir einen Snapshot ausführen und die Stromversorgung des Knotens ausschalten, speichern wir die Einstellungen in der Datenbank, dass es einen Snapshot gibt, aber tatsächlich gibt es keinen (naja, das verstehen wir alle). Ich habe die Datenbank zunächst in SQL über diese Aktion geschrieben, aber die Operation selbst war nicht erfolgreich. Der Vorteil besteht darin, dass beim Erstellen eines Snapshots eine separate Datei erstellt wird und es eine „übergeordnete Datei“ gibt. Daher können wir bei Problemen und auch wenn es nicht über die GUI funktioniert, die qcow2-Datei abrufen und separat wiederherstellen docs.opennebula.io/5.8/operation/vm_management/vm_instances.html

Bei Netzwerken ist leider nicht alles so einfach. Nun, zumindest ist es einfacher als in OpenStack, ich habe nur VLAN (802.1Q) verwendet - es funktioniert ganz gut, aber wenn Sie Änderungen an den Einstellungen aus der Netzwerkvorlage vornehmen, werden diese Einstellungen nicht auf bereits laufende Maschinen angewendet, d. h. Sie müssen eine Netzwerkkarte löschen und hinzufügen, dann werden die neuen Einstellungen übernommen.

Wenn Sie es auch mit OpenStack vergleichen möchten, können Sie Folgendes sagen: In OpenNebula gibt es keine klare Definition, welche Technologien zur Speicherung von Daten, Verwaltung des Netzwerks und Ressourcen verwendet werden sollen – jeder Administrator entscheidet selbst, was für ihn bequemer ist.

6. Zusätzliche Plugins und Installationen

Denn nach unserem Verständnis kann die Cloud-Plattform nicht nur KVM, sondern auch VMware ESXI verwalten. Leider hatte ich keinen Pool mit Vcenter, falls jemand es versucht hat, bitte schreiben.

Die Unterstützung anderer Cloud-Anbieter wird angegeben docs.opennebula.io/5.12/advanced_components/cloud_bursting/index.html
AWS, AZUR.

Ich habe auch versucht, Vmware Cloud von Selectel zu verbinden, aber nichts hat funktioniert – im Allgemeinen wurde es blockiert, weil es viele Faktoren gibt und es keinen Sinn macht, an den technischen Support des Hosting-Anbieters zu schreiben.

Außerdem gibt es in der neuen Version jetzt ein Kracher: Dies ist die Einführung von MicroVM, einer Art KVM-Kabelbaum über Docker, der noch mehr Vielseitigkeit, Sicherheit und höhere Produktivität bietet, da keine Ressourcen für die Emulation von Geräten verschwendet werden müssen. Der einzige Vorteil, den ich gegenüber Docker sehe, ist, dass es bei Verwendung dieser Emulation keine zusätzlichen Prozesse in Anspruch nimmt und keine belegten Sockets entstehen, d. h. Es ist durchaus möglich, es als Load Balancer zu verwenden (aber es lohnt sich wahrscheinlich, einen separaten Artikel darüber zu schreiben, bis ich alle Tests vollständig durchgeführt habe).

7. Positive Erfahrungen bei der Nutzung und Fehlerbehebung

Ich wollte meine Beobachtungen zu der Arbeit mitteilen, einiges davon habe ich oben beschrieben, ich würde gerne mehr schreiben. In der Tat bin ich wahrscheinlich nicht der Einzige, der zunächst denkt, dass dies nicht das richtige System ist und im Allgemeinen alles hier eine Krücke ist – wie funktionieren die überhaupt damit? Aber dann kommt die Erkenntnis, dass alles ganz logisch ist. Natürlich kann man es nicht jedem recht machen und einige Aspekte bedürfen einer Verbesserung.

Zum Beispiel ein einfacher Vorgang, bei dem ein Disk-Image von einem Datenspeicher in einen anderen kopiert wird. In meinem Fall gibt es 2 Knoten mit NFS, ich sende das Bild - das Kopieren erfolgt über das OpenNebula-Frontend, obwohl wir alle daran gewöhnt sind, dass Daten direkt zwischen Hosts kopiert werden sollten - wir befinden uns in derselben VMware, Hyper-V daran gewöhnt, aber hier zu einem anderen. Es gibt einen anderen Ansatz und eine andere Ideologie, und in Version 5.12 wurde die Schaltfläche „Zum Datenspeicher migrieren“ entfernt – nur die Maschine selbst wird übertragen, nicht jedoch der Speicher bedeutet zentralisierte Speicherung.

Als nächstes folgt ein beliebter Fehler aus verschiedenen Gründen: „Fehler beim Bereitstellen der virtuellen Maschine: Die Domäne konnte nicht aus /var/lib/one//datastores/103/10/deployment.5 erstellt werden.“ Nachfolgend finden Sie das Wichtigste, was Sie sich ansehen sollten.

  • Bildrechte für den oneadmin-Benutzer;
  • Berechtigungen für den oneadmin-Benutzer zum Ausführen von libvirtd;
  • Ist der Datenspeicher korrekt gemountet? Gehen Sie und überprüfen Sie den Pfad am Knoten selbst, vielleicht ist etwas abgefallen;
  • Falsch konfiguriertes Netzwerk, oder besser gesagt, im Frontend ist in den Netzwerkeinstellungen die Hauptschnittstelle für VLAN br0, aber auf dem Knoten wird es als Bridge0 geschrieben – es muss dasselbe sein.

Der Systemdatenspeicher speichert Metadaten für Ihre VM. Wenn Sie die VM mit einem dauerhaften Image ausführen, muss die VM Zugriff auf die ursprünglich erstellte Konfiguration auf dem Speicher haben, in dem Sie die VM erstellt haben – das ist sehr wichtig. Daher müssen Sie beim Übertragen einer VM in einen anderen Datenspeicher alles noch einmal überprüfen.

8. Dokumentation, Community. Weitere Entwicklung

Und der Rest, gute Dokumentation, Community und Hauptsache, das Projekt lebt auch in Zukunft weiter.

Im Allgemeinen ist alles recht gut dokumentiert und selbst wenn man eine offizielle Quelle verwendet, wird es kein Problem sein, es zu installieren und Antworten auf Fragen zu finden.

Gemeinschaftlich, aktiv. Veröffentlicht viele vorgefertigte Lösungen, die Sie in Ihren Installationen verwenden können.

Derzeit haben sich einige Richtlinien im Unternehmen seit 5.12 geändert forum.opennebula.io/t/towards-a-stronger-opennebula-community/8506/14 Es wird interessant sein zu sehen, wie sich das Projekt entwickelt. Zu Beginn habe ich gezielt auf einige Anbieter hingewiesen, die ihre Lösungen nutzen, und auf die Angebote der Branche. Natürlich gibt es keine klare Antwort darauf, was man verwenden soll. Für kleinere Unternehmen ist die Wartung ihrer kleinen privaten Cloud jedoch möglicherweise nicht so teuer, wie es scheint. Die Hauptsache ist, genau zu wissen, was Sie brauchen.

Unabhängig davon, welches Cloud-System Sie wählen, sollten Sie sich daher nicht auf ein Produkt beschränken. Wenn Sie Zeit haben, lohnt es sich, einen Blick auf andere, offenere Lösungen zu werfen.

Es lässt sich gut unterhalten t.me/opennebula Sie helfen aktiv und schicken Sie nicht dazu, bei Google nach einer Lösung für das Problem zu suchen. Begleiten Sie uns.

Source: habr.com

Kommentar hinzufügen