Hallo. Dieser Artikel wurde für diejenigen geschrieben, die immer noch zwischen der Auswahl der Virtualisierungsplattformen und dem Lesen eines Artikels aus der Serie "Wir haben Proxmox installiert und alles ist in Ordnung, 6 Jahre Betriebszeit sind keine einzige Lücke." Aber nach der Installation der einen oder anderen Boxed-Lösung stellt sich die Frage, wie ich sie hier korrigieren kann, damit die Überwachung verständlicher ist und hier, um Backups zu steuern. Und dann kommt die Zeit und Sie verstehen, dass Sie etwas Funktionaleres wollen, oder dass alles in Ihrem System klar wird und nicht diese Black Box, oder Sie möchten etwas mehr als einen Hypervisor und eine Reihe von virtuellen Maschinen verwenden. In diesem Artikel wird ein wenig über die Opennebula-Plattform nachgedacht und geübt - ich habe sie ausgewählt. Ressourcen nicht zu fordern und die Architektur ist nicht so kompliziert.
Wie wir sehen können, arbeiten viele Cloud-Anbieter mit kvm und stellen externe Verbindungen zur Steuerung von Maschinen her. Es ist klar, dass große Hoster ihre Verbindungen für die Cloud-Infrastruktur schreiben, zum Beispiel YANDEX. Jemand verwendet Openstack und macht auf dieser Basis eine Bindung - SELECTEL, MAIL.RU. Aber wenn Sie Ihre eigene Hardware und ein kleines Team von Spezialisten haben, wählen Sie normalerweise etwas aus dem Fertigen - VMWARE, HYPER-V, es gibt kostenlose und kostenpflichtige Lizenzen, aber jetzt geht es nicht darum. Lassen Sie uns über Enthusiasten sprechen - dies sind diejenigen, die keine Angst haben, etwas Neues anzubieten und auszuprobieren, obwohl das Unternehmen deutlich gemacht hat: „Wer wird das nach Ihnen bedienen?“ „Werden wir es dann in die Produktion einführen? Unheimlich." Aber Sie können diese Lösungen zuerst auf einem Prüfstand anwenden und wenn es allen gefällt,dann kann die Frage der Weiterentwicklung und Verwendung in ernsteren Umgebungen aufgeworfen werden.
Hier ist auch ein Link zum Bericht www.youtube.com/watch?v=47Mht_uoX3A eines aktiven Teilnehmers an der Entwicklung dieser Plattform.
Vielleicht gibt es in diesem Artikel etwas Überflüssiges und bereits klares für einen erfahrenen Spezialisten, und in einigen Fällen werde ich nicht alles beschreiben, da sich solche Befehle und Beschreibungen im Netzwerk befinden. Hier ist nur meine Erfahrung mit dieser Plattform. Ich hoffe, dass aktive Teilnehmer in den Kommentaren hinzufügen, was besser gemacht werden kann und welche Fehler ich gemacht habe. Alle Aktionen fanden in einem Heimstand statt, der aus 3 PCs mit unterschiedlichen Eigenschaften bestand. Außerdem habe ich nicht speziell angegeben, wie diese Software funktioniert und wie sie installiert wird. Nein, nur die Erfahrung in der Verwaltung und die Probleme, auf die ich gestoßen bin. Vielleicht findet es jemand nützlich bei der Auswahl.
Und so fangen wir an. Als Systemadministrator sind mir folgende Punkte wichtig, ohne die ich diese Lösung kaum nutzen werde.
1. Wiederholbarkeit der Installation
Es gibt unzählige Anweisungen zur Installation der Opennebula, daher sollte es kein Problem geben. Von Version zu Version werden neue Funktionen angezeigt, die beim Wechsel von Version zu Version möglicherweise nicht immer verdient werden.
2. Überwachung
Wir werden den Knoten selbst, kvm und opennebula überwachen. Das Gute ist schon da. Es gibt viele Optionen für die Überwachung von Linux-Hosts, von demselben Zabbix oder Node-Exporter - wer auch immer was mag - im Moment definiere ich es so, dass die Überwachung von Systemmetriken (Temperatur, bei der sie gemessen werden können, Konsistenz des Festplatten-Arrays) über Zabbix, aber wie für Anträge über den Exporteur an prometheus. Zum Überwachen von kvm können Sie beispielsweise das Projekt github.com/zhangjianweibj/prometheus-libvirt-exporter.git verwenden und den Start über systemd durchführen. 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 so haben wir 1 Exporteur, wir brauchen einen zweiten, um die Opennebula selbst zu überwachen. Ich habe diesen github.com/kvaps/opennebula-exporter/blob/master/opennebula_exporter verwendet.
Sie können einem regulären node_exporter Folgendes hinzufügen , um das System zu überwachen.
Ändern Sie in der Datei für node_exporter den Start folgendermaßen:
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
Bash - Skript oben präsentierte zuerst die Arbeit über die Konsole überprüfen, wenn es zeigt , was benötigt wird (wenn es einen Fehler gibt, dann setzen xmlstarlet), kopieren Sie sie in /usr/local/bin/opennebula_exporter.sh
In den CZK-Aufgabe für jede Minute:
*/1 * * * * (/usr/local/bin/opennebula_exporter.sh > /var/lib/opennebula_exporter/textfile_collector/opennebula.prom)
Es wurden Metriken angezeigt. Sie können sie mit einem Prometheus abrufen, Diagramme erstellen und Warnungen erstellen. Zum Beispiel können Sie ein so einfaches Dashboard in Grafan zeichnen.
(Sie können sehen, dass ich hier CPU, RAM überbeansprucht habe)
Für diejenigen, die Zabbiks lieben und benutzen, gibt es github.com/OpenNebula/addon-zabbix.
Alles überwachen, Hauptsache ist es. Natürlich können Sie auch die integrierten Überwachungstools für virtuelle Maschinen verwenden und Daten in die Abrechnung hochladen. Hier hat jeder seine eigene Vision, bis er sich näher damit befasst.
Ich habe noch nicht mit der Protokollierung begonnen. Am einfachsten ist es, td-agent hinzuzufügen, um das Verzeichnis / var / lib / one mit regulären Ausdrücken zu analysieren. Zum Beispiel stimmt die Datei sunstone.log mit dem regulären Ausdruck nginx und anderen Dateien überein, die den Verlauf der Aufrufe der Plattform anzeigen - was ist das Plus? Nun, zum Beispiel können wir die Anzahl der "Fehler, Fehler" klar verfolgen und schnell verfolgen, wo und auf welcher Ebene eine Fehlfunktion vorliegt.
3. Backups
Es gibt auch kostenpflichtige dotierte Projekte - zum Beispiel sep wiki.sepsoftware.com/wiki/index.php/4_4_3_Tigon: OpenNebula_Backup. Hier müssen wir verstehen, dass das Sichern des Images der Maschine in diesem Fall überhaupt nicht gleich ist, da unsere virtuellen Maschinen mit vollständiger Integration arbeiten müssen (der gleiche Dateikontext, der die Netzwerkeinstellungen, den VM-Namen und die benutzerdefinierten Einstellungen für Ihre Anwendungen beschreibt). Daher entscheiden wir hier, was und wie wir sichern. In einigen Fällen ist es besser, Kopien von dem zu erstellen, was sich in der VM selbst befindet. Und vielleicht müssen Sie nur eine Festplatte von diesem Computer sichern.
Zum Beispiel haben wir beschlossen, dass alle Maschinen mit persistenten Images gestartet werden. Nachdem
wir docs.opennebula.io/5.12/operation/vm_management/img_guide.html gelesen haben, können wir das Image zuerst von unserer VM entladen:
onevm disk-saveas 74 3 prom.qcow2
Image ID: 77
,
oneimage show 77
/var/lib/one//datastores/100/f9503161fe180658125a9b32433bf6e8
. , . , opennebula .
Auch in der Weite des Netzwerks habe ich einen interessanten Bericht gefunden und es gibt auch ein so offenes Projekt , aber hier nur für qcow2-Speicher.
Wie wir alle wissen, ist es früher oder später schwieriger, inkrementelle Backups zu erstellen. Vielleicht wird das Management hier Geld für eine kostenpflichtige Lösung bereitstellen oder in die andere Richtung gehen und verstehen, dass wir hier nur Ressourcen sägen und Redundanz auf Anwendungsebene und Hinzufügen einer Reihe neuer Knoten und virtueller Maschinen - ja, hier sage ich, dass die Verwendung der Cloud lediglich dazu dient, Anwendungscluster zu starten und die Datenbank auf einer anderen Plattform auszuführen oder wenn möglich eine vorgefertigte vom Lieferanten zu übernehmen.
4. Benutzerfreundlichkeit
In diesem Abschnitt werde ich die Probleme beschreiben, auf die ich gestoßen bin. Zum Beispiel durch Bilder, wie wir wissen, gibt es beständig - wenn dieses Bild auf 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 vom Originalbild kopiert wurde - so funktionieren Vorlagenvorlagen. Wiederholt machte er sich Probleme, die er vergessen hatte, persistent anzugeben, und das 200-GB-Image wurde kopiert. Das Problem ist, dass dieser Vorgang sicher nicht abgebrochen werden kann. Sie müssen zum Knoten gehen und den aktuellen "cp" -Prozess festnageln.
Einer der Hauptnachteile ist, dass Sie Aktionen nicht einfach mit der GUI rückgängig machen können. Stattdessen werden Sie sie abbrechen und sehen, dass nichts passiert, und erneut starten, abbrechen und tatsächlich gibt es bereits 2 cp-Prozesse, die das Bild kopieren.
Und dann wird verstanden, warum opennebula jede neue Instanz eine neue ID nummeriert, z. B. in derselben Proxmox eine VM mit der ID 101 erstellt, diese gelöscht und dann die ID 101 erneut erstellt hat. In der Opennebula wird dies nicht passieren, jede neue Instanz wird mit einer neuen ID und erstellt Dies hat seine eigene Logik - zum Beispiel das Löschen alter Daten oder erfolglose Installationen.
Gleiches gilt für die Speicherung. Vor allem ist diese Plattform auf die zentrale Speicherung ausgerichtet. Es gibt Addons für die Verwendung von local, aber in diesem Fall nicht. Ich denke, dass in Zukunft jemand einen Artikel darüber schreiben wird, wie es möglich war, lokalen Speicher auf Knoten zu verwenden und ihn erfolgreich in der Produktion einzusetzen.
5. Maximale Einfachheit
Je weiter Sie gehen, desto weniger werden Sie natürlich verstehen.
Unter den Bedingungen meines Standes - 3 Knoten mit NFS-Speicher - funktioniert alles einwandfrei. Wenn wir jedoch Experimente durchführen, um die Stromversorgung auszuschalten, speichern wir beispielsweise beim Starten eines Snapshots und beim Ausschalten der Stromversorgung des Knotens die Einstellungen in der Datenbank, die ein Snapshot ist. Dies ist jedoch nicht der Fall (wir alle verstehen, dass wir die Datenbank ursprünglich über diese Aktion in SQL geschrieben haben) , aber die Operation selbst war nicht erfolgreich). Das Plus ist, dass beim Erstellen eines Snapshots eine separate Datei erstellt wird und es ein "übergeordnetes Element " gibt. Daher können wir bei Problemen und auch wenn dies nicht über die GUI funktioniert , die qcow2-Datei abrufen und separat docs.opennebula.io/5.8/operation/vm_management/vm_instances wiederherstellen .html
Leider ist in Netzwerken nicht alles so einfach. Nun, zumindest ist es einfacher als in Openstack, ich habe nur vlan (802.1Q) verwendet - es funktioniert einwandfrei, aber wenn Sie Änderungen an den Einstellungen des Vorlagennetzwerks vornehmen, werden diese Einstellungen nicht auf bereits ausgeführten Computern angewendet, dh Sie müssen das Netzwerk löschen und hinzufügen Karte, dann werden die neuen Einstellungen angewendet.
Wenn Sie immer noch mit Openstack vergleichen möchten, können wir sagen, dass es in opennebula keine klare Definition gibt, welche Technologien zum Speichern von Daten, Verwalten eines Netzwerks und von Ressourcen verwendet werden sollen - jeder Administrator entscheidet selbst, wie er sich am wohlsten fühlt.
6. Zusätzliche Plugins und Installationen
Nach unserem Verständnis kann die Cloud-Plattform nicht nur kvm, sondern auch vmware esxi verwalten. Leider hatte ich keinen Pool mit Vcenter, wenn jemand versuchte zu schreiben.
Unterstützt von anderen Cloud-Anbietern docs.opennebula.io/5.12/advanced_components/cloud_bursting/index.html
AWS, AZURE.
Ich habe auch versucht, Vmware Cloud aus dem Selektor zu schrauben, aber nichts hat funktioniert - im Allgemeinen habe ich getroffen, weil es viele Faktoren gibt und es keinen Sinn macht, schriftlich an den technischen Support des Hosting-Anbieters zu schreiben.
Außerdem gibt es jetzt in der neuen Version einen Kracher - dies ist der Start eines Mikro-VMs wie KVM-Bindung über Docker, der noch mehr Vielseitigkeit, Sicherheit und höhere Produktivität bietet, da keine Ressourcen für die Hardware-Emulation aufgewendet werden müssen. Ich sehe nur einen Vorteil in Bezug auf Docker darin, dass keine zusätzliche Anzahl von Prozessen erforderlich ist und bei Verwendung dieser Emulation keine belegten Sockets vorhanden sind, 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 Sie alle Tests vollständig abgeschlossen haben).
7. Positive Erfahrungen mit der Verwendung und dem Debuggen von Fehlern
Ich wollte meine Beobachtungen über die Arbeit teilen, ich habe einen Teil oben beschrieben, ich möchte 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 hier alles Krücken sind - wie arbeiten sie im Allgemeinen damit? Aber dann kommt das Verständnis und dass alles ganz logisch ist. Natürlich nicht um alle zufrieden zu stellen und einige Punkte erfordern Verbesserungen.
Zum Beispiel eine einfache Operation zum Kopieren eines Disk-Images von einem Datenspeicher in einen anderen. In meinem Fall gibt es 2 Knoten mit nfs, ich sende das Bild - das Kopieren erfolgt über die Frontend-Opennebula, obwohl wir alle daran gewöhnt sind, dass Daten direkt zwischen Hosts kopiert werden sollten - in derselben VMware, Hyper-V, an die wir gewöhnt sind, aber hier von zum anderen. Hier ist ein anderer Ansatz und eine andere Ideologie, und in Version 5.12 wurde die Schaltfläche "In Datenspeicher migrieren" entfernt - nur der Computer selbst wird übertragen, nicht jedoch der Speicher. bedeutet zentralisierte Speicherung.
Darüber hinaus gibt es einen häufigen Fehler mit verschiedenen Gründen: "Fehler beim Bereitstellen der virtuellen Maschine: Domäne konnte nicht aus /var/lib/one//datastores/103/10/deployment.5 erstellt werden." Nachfolgend finden Sie die oben aufgeführten Punkte.
- Bildrechte für den Benutzer oneadmin;
- Rechte für Benutzer oneadmin zum Ausführen von libvirtd;
- datastore? , ;
- , frontend , vlan br0, — bridge0 — .
Der Systemdatenspeicher speichert Metadaten für Ihre VM. Wenn Sie VM mit einem dauerhaften Image starten, muss VM Zugriff auf die ursprünglich erstellte Konfiguration in dem Speicher haben, in dem Sie die VM erstellt haben. Dies ist sehr wichtig. Daher muss beim Übertragen von VM in einen anderen Datenspeicher alles erneut überprüft werden.
8. Dokumentation, Community. Weiterentwicklung
Und der Rest, gute Dokumentation, Community und vor allem, dass das Projekt auch in Zukunft weiterlebt.
Hier ist im Allgemeinen alles recht gut dokumentiert und selbst nach offiziellen Angaben wird es nicht schwierig sein, Antworten auf Fragen zu finden und zu finden.
Community aktiv. Veröffentlicht viele vorgefertigte Lösungen, die Sie in Ihren Installationen verwenden können.
Derzeit haben sich einige Richtlinien im Unternehmen seit dem 5.12. Geändert.forum.opennebula.io/t/towards-a-stronger-opennebula-community/8506/14 Es wird interessant sein zu wissen, wie sich das Projekt entwickeln wird. Am Anfang habe ich speziell auf einige der Anbieter hingewiesen, die ihre Lösungen verwenden, und auf die Angebote der Branche. Natürlich gibt es keine klare Antwort darauf, was zu verwenden ist. Für kleine Unternehmen ist die Wartung ihrer kleinen privaten Cloud möglicherweise nicht so teuer, wie es sich anhört. Die Hauptsache ist, genau zu wissen, was Sie brauchen.
Unabhängig davon, was Sie als Cloud-System auswählen, sollten Sie daher nicht bei einem Produkt stehen bleiben. Wenn Sie Zeit haben, sollten Sie sich andere Open-Source-Lösungen ansehen.
Es gibt einen guten Chat t.me/opennebula, der aktiv hilft und nicht sendet, um nach einer Lösung für das Problem in Google zu suchen. Begleiten Sie uns.