
Für die Bereitstellung des IaaS-Dienstes (Virtual Data Center) verwenden wir bei
Rusonyx das kommerzielle Orchester
Flexiant Cloud Orchestrator (FCO). Diese Lösung hat eine ziemlich einzigartige Architektur, die sie von den in der Öffentlichkeit bekannten Openstack- und CloudStack-Lösungen unterscheidet.
Als Rechenknoten-Hypervisoren werden KVM, VmWare, Xen, Virtuozzo6 / 7 sowie Container von demselben Virtuozzo unterstützt. Von den unterstützten Speichern - lokale, NFS-, Ceph- und Virtuozzo-Speicher.
FCO unterstützt die Erstellung und Verwaltung mehrerer Cluster über eine einzige Schnittstelle. Das heißt, Sie können den Virtuozzo-Cluster und den KVM + Ceph-Cluster verwalten, indem Sie mit der Maus zwischen ihnen wechseln.
Im Wesentlichen ist FCO eine umfassende Lösung für Cloud-Anbieter, die neben der Orchestrierung auch die Abrechnung mit allen Einstellungen, Zahlungs-Plug-Ins, Konten, Benachrichtigungen, Wiederverkäufern, Tarifen usw. umfasst. Der Abrechnungsteil kann jedoch nicht alle russischen Nuancen abdecken, weshalb wir uns geweigert haben, ihn zugunsten einer anderen Lösung zu verwenden.
Das flexible System zur Verteilung von Rechten an alle Cloud-Ressourcen ist sehr ansprechend: Images, Festplatten, Produkte, Server, Firewalls - all dies kann "durchsucht" und Rechte zwischen Benutzern und sogar zwischen Benutzern verschiedener Clients gewährt werden. Jeder Client kann mehrere unabhängige Rechenzentren in seiner Cloud erstellen und diese über ein einziges Control Panel verwalten.

Architektonisch besteht FCO aus mehreren Teilen, von denen jeder seinen eigenen unabhängigen Code hat und einige eine eigene Datenbank haben.
Skyline - Admin und Benutzeroberfläche
Jade - Geschäftslogik, Abrechnung, Aufgabenverwaltung
Tigerlily ist ein Servicekoordinator, der den Informationsaustausch zwischen Geschäftslogik und Clustern verwaltet und koordiniert.
XVPManager - Verwaltung von Clusterelementen: Knoten, Speicher, Netzwerk und virtuelle Maschinen.
XVPAgent - Ein Agent, der auf Knoten installiert ist, um mit XVPManager zu interagieren

Eine detaillierte Geschichte über die Architektur jeder Komponente, die wir in eine Reihe von Artikeln einfügen möchten, es sei denn, das Thema ist natürlich von Interesse.
Der Hauptvorteil von FCO liegt in seiner „Box“. Es bietet Einfachheit und Minimalismus. Für den Steuerknoten wird eine virtuelle Maschine unter Ubuntu zugewiesen, in der alle erforderlichen Pakete installiert sind. Alle Einstellungen werden in Form von Variablenwerten in Konfigurationsdateien übertragen:
# cat /etc/extility/config/vars … export LIMIT_MAX_LIST_ADMIN_DEFAULT="30000" export LIMIT_MAX_LIST_USER_DEFAULT="200" export LOGDIR="/var/log/extility" export LOG_FILE="misc.log" export LOG_FILE_LOG4JHOSTBILLMODULE="hostbillmodule.log" export LOG_FILE_LOG4JJADE="jade.log" export LOG_FILE_LOG4JTL="tigerlily.log" export LOG_FILE_LOG4JXVP="xvpmanager.log" export LOG_FILE_VARS="misc.log" …
Die gesamte Konfiguration wird zunächst in den Vorlagen korrigiert, dann startet der Generator
# build-config, das die vars-Datei bildet und die Dienste anweist, die Konfiguration erneut zu lesen. Die Benutzeroberfläche ist schön und kann leicht gebrandet werden.

Wie Sie sehen können, besteht die Benutzeroberfläche aus Widgets, deren Verwaltung dem Benutzer zur Verfügung steht. Er kann Widgets einfach zur Seite hinzufügen / daraus entfernen und so das Dashboard bilden, das er benötigt.
Trotz seiner Nähe ist FCO ein hochgradig anpassbares System. Es verfügt über eine Vielzahl von Einstellungen und Einstiegspunkten zum Ändern des Workflows:
- Benutzerdefinierte Plugins werden unterstützt. Sie können beispielsweise Ihre eigene Abrechnungsmethode oder Ihre eigene externe Ressource schreiben, um sie dem Benutzer bereitzustellen
- Benutzerdefinierte Trigger für bestimmte Ereignisse werden unterstützt, z. B. das Hinzufügen der ersten virtuellen Maschine zum Client beim Erstellen
- Benutzerdefinierte Widgets werden in der Benutzeroberfläche unterstützt, z. B. das Einbetten von Videos von YouTube direkt in die Benutzeroberfläche.
Alle Anpassungen sind in der FDL-Sprache geschrieben, die auf Lua basiert. Wenn Sie Lua kennen, wird es keine Probleme mit FDL geben.
Hier ist ein Beispiel für einen der einfachsten Trigger, die wir verwenden. Mit diesem Auslöser können Benutzer ihre eigenen Bilder nicht für andere Clients freigeben. Wir tun dies, damit ein Benutzer kein schädliches Bild für andere Benutzer erstellen kann.
function register() return {"pre_user_api_publish"} end function pre_user_api_publish(p) if(p==nil) then return{ ref = "cancelPublishImage", name = "Cancel publishing", description = "Cancel all user's images publishing", triggerType = "PRE_USER_API_CALL", triggerOptions = {"publishResource", "publishImage"}, api = "TRIGGER", version = 1, } end -- Turn publishing off return {exitState = "CANCEL"} end
Die Registerfunktion wird vom FCO-Kernel aufgerufen. Es wird der Name der aufzurufenden Funktion zurückgegeben. Der Parameter "p" dieser Funktion speichert den Anrufwettbewerb und ist beim ersten Aufruf leer (null). Dadurch können wir unseren Auslöser registrieren. In triggerType zeigen wir, dass der Trigger VOR dem Veröffentlichungsvorgang aufgerufen wird und nur für Benutzer gilt. Für Systemadministratoren erlauben wir natürlich, dass alles veröffentlicht wird. In triggerOptions beschreiben wir die Operationen, für die der Trigger ausgelöst wird.
Und am wichtigsten ist, dass Sie {exitState = “CANCEL”} zurückgeben, weshalb der Trigger entwickelt wurde. Es wird ein Fehler zurückgegeben, wenn der Benutzer versucht, sein Bild in der Systemsteuerung freizugeben.
In der FCO-Architektur wird jedes Objekt (Festplatte, Server, Image, Netzwerk, Netzwerkadapter usw.) als Ressourcenentität dargestellt, die gemeinsame Parameter hat:
- Ressourcen-UUID
- Ressourcenname
- Ressourcentyp
- UUID des Ressourcenbesitzers
- Ressourcenstatus (aktiv, inaktiv)
- Ressourcenmetadaten
- Ressourcenschlüssel
- UUID des Produkts, zu dem die Ressource gehört
- VDC-Ressource
Dies ist sehr praktisch, wenn Sie an der API arbeiten und mit allen Ressourcen nach demselben Prinzip arbeiten. Produkte werden vom Anbieter konfiguriert und vom Kunden bestellt. Da unsere Abrechnung am Rande steht, kann der Kunde jedes Produkt frei und kostenlos über das Panel bestellen. Dies wird später bei der Abrechnung berücksichtigt. Das Produkt kann sein - IP-Adresse pro Stunde, ein zusätzliches GB Festplatte pro Stunde oder nur ein Server.
Sie können bestimmte Ressourcen mit Schlüsseln markieren, um die Logik der Arbeit mit ihnen zu ändern. Beispielsweise können wir drei physische Knoten mit dem Weight-Schlüssel markieren und einige Clients mit demselben Schlüssel markieren, wodurch diese Knoten für diese Clients persönlich hervorgehoben werden. Wir verwenden einen solchen Mechanismus für VIP-Kunden, die keine Nachbarn neben ihren VMs mögen. Die Funktionalität selbst kann viel breiter angewendet werden.
Das Lizenzmodell impliziert die Zahlung für jeden Kern eines Prozessors eines physischen Knotens. Die Kosten werden auch von der Anzahl der Clustertypen beeinflusst. Wenn Sie beispielsweise KVM und VMware zusammen verwenden möchten, erhöhen sich die Lizenzkosten.
FCO ist ein vollwertiges Produkt, dessen Funktionalität sehr umfangreich ist. Daher planen wir, mehrere Artikel gleichzeitig mit einer detaillierten Beschreibung der Funktionsweise des Netzwerkteils zu erstellen.
Nachdem wir mehrere Jahre mit diesem Orchester gearbeitet haben, können wir es als sehr geeignet markieren. Leider ist das Produkt nicht ohne Mängel:
- Wir mussten die Datenbank optimieren, da die Abfragen mit zunehmender Datenmenge langsamer wurden.
- Nach einem Unfall funktionierte der Wiederherstellungsmechanismus aufgrund eines Fehlers nicht und wir mussten die Maschinen unglücklicher Clients mit unseren eigenen Skripten hochfahren.
- Der Mechanismus zur Erkennung der Unzugänglichkeit von Knoten ist mit dem Code verbunden und kann nicht angepasst werden. Das heißt, wir können keine eigenen Richtlinien erstellen, um die Unzugänglichkeit eines Knotens zu bestimmen.
- Die Protokollierung ist nicht immer detailliert. Manchmal reicht der Quellcode einiger Komponenten nicht aus, um die Gründe zu verstehen, wenn Sie zur Analyse eines bestimmten Problems auf eine sehr niedrige Ebene gehen müssen.
GESAMT: Insgesamt ist die Produkterfahrung gut. Wir stehen in ständigem Kontakt mit den Entwicklern des Orchesters. Die Jungs sind für eine konstruktive Zusammenarbeit arrangiert.
Trotz seiner Einfachheit verfügt FCO über eine breite Funktionalität. In zukünftigen Artikeln planen wir, uns mit folgenden Themen zu befassen:
- Vernetzung bei FCO
- Unterstützung für Live-Wiederherstellung und FQP-Protokoll
- Schreiben von benutzerdefinierten Plugins und Widgets
- Anschließen zusätzlicher Dienste wie Load Balancer und Acronis
- Backup
- Einheitlicher Mechanismus zum Konfigurieren und Konfigurieren von Knoten
- Metadatenverarbeitung für virtuelle Maschinen
PS Schreiben Sie in die Kommentare, wenn andere Aspekte interessant sind. Bleib dran!