In groĂen Cloud-Systemen ist die automatisierte Lastenverteilung oder -ausgleichung auf Rechenressourcen besonders wichtig. Auch Tionix (Entwickler und Betreiber von Cloud-Diensten, Teil der Gruppe Rostelecom) hat sich mit dieser Frage beschĂ€ftigt.
Und da unsere Hauptentwicklungsplattform OpenStack ist und wir, wie alle Menschen, faul sind, wurde beschlossen, ein fertiges Modul auszuwĂ€hlen, das bereits Teil der Plattform ist. Unsere Wahl fiel auf Watcher, den wir fĂŒr unsere BedĂŒrfnisse nutzen werden.
ZunÀchst klÀren wir die Begriffe und Definitionen.
Begriffe und Definitionen
Ziel â das ist ein messbares, beobachtbares und greifbares Endresultat, das erreicht werden soll. FĂŒr jedes Ziel gibt es eine oder mehrere Strategien. Eine Strategie ist die Implementierung eines Algorithmus, der in der Lage ist, eine Lösung fĂŒr das jeweilige Ziel zu finden.
Aktion (Action) â das ist eine elementare Aufgabe, die den aktuellen Zustand der verwalteten Ressource im OpenStack-Cluster Ă€ndert, wie z.B.: Migration einer virtuellen Maschine (migration), Ănderung des Stromzustands eines Knotens (change_node_power_state), Ănderung des Zustands des nova-Dienstes (change_nova_service_state), Ănderung des Flavors (resize), Registrierung einer NOP-Nachricht (nop), keine Aktion ĂŒber einen bestimmten Zeitraum â Pause (sleep), Ăbertragung eines Volumes (volume_migrate).
Aktionsplan (Action Plan) â ein spezifischer Handlungsablauf, der in einer bestimmten Reihenfolge durchgefĂŒhrt wird, um ein bestimmtes Ziel zu erreichen. Der Aktionsplan enthĂ€lt auch eine bewertbare globale Effizienz mit einem Satz von Leistungsindikatoren. Der Aktionsplan wird von Watcher nach einem erfolgreich durchgefĂŒhrten Audit generiert, bei dem die verwendete Strategie eine Lösung zur Erreichung des Ziels findet. Der Aktionsplan besteht aus einer Liste aufeinanderfolgender Aktionen.
Audit (Audit) â das ist eine Anfrage zur Optimierung des Clusters. Die Optimierung erfolgt mit dem Ziel, ein Ziel in diesem Cluster zu erreichen. FĂŒr jedes erfolgreiche Audit generiert Watcher einen Aktionsplan.
Auditbereich (Audit Scope) â dies ist ein Satz von Ressourcen, innerhalb dessen ein Audit durchgefĂŒhrt wird (Zugriffszone(n), Knotenaggregatoren, einzelne Rechenknoten oder Speicherknoten usw.). Der Auditbereich ist in jeder Vorlage definiert. Wenn der Auditbereich nicht angegeben ist, wird das gesamte Cluster auditiert.
Auditvorlage (Audit Template) â ein gespeichertes Set von Einstellungen zum Starten eines Audits. Vorlagen sind notwendig, um Audits mit denselben Einstellungen mehrfach durchzufĂŒhren. Die Vorlage muss unbedingt das Ziel des Audits enthalten; wenn keine Strategien angegeben sind, werden die am besten geeigneten bestehenden Strategien ausgewĂ€hlt.
Cluster (Cluster) â das ist eine Gruppe von physischen Maschinen, die Rechenressourcen, Speicherressourcen und Netzwerkressourcen bereitstellen und von demselben OpenStack-Managementknoten verwaltet werden.
Cluster-Datenmodell (Cluster Data Model, CDM) â dies ist eine logische Darstellung des aktuellen Zustands und der Topologie der von dem Cluster verwalteten Ressourcen.
Effizienzindikator (Efficacy Indicator) â ein Indikator, der angibt, wie gut eine Lösung, die mit dieser Strategie erstellt wurde, abschneidet. Effizienzindikatoren sind spezifisch fĂŒr ein bestimmtes Ziel und werden normalerweise verwendet, um die globale Effizienz des endgĂŒltigen Aktionsplans zu berechnen.
Effizienzspezifikation (Efficacy Specification) â dies ist eine Reihe spezifischer Merkmale, die mit jedem Ziel verbunden sind und verschiedene Effizienzindikatoren definieren, die die Strategie, die zur Erreichung des entsprechenden Ziels beitragen soll, in ihrer Lösung bieten muss. TatsĂ€chlich wird jede von der Strategie vorgeschlagene Lösung an der Spezifikation gemessen, bevor ihre globale Effizienz berechnet wird.
âZĂ€hlendenâ Motor (Scoring Engine) â dies ist eine ausfĂŒhrbare Datei, die klar definierte Eingaben und Ausgaben hat und eine rein mathematische Aufgabe erfĂŒllt. Somit hĂ€ngt die Berechnung nicht von der Umgebung ab, in der sie ausgefĂŒhrt wird â sie liefert ĂŒberall das gleiche Ergebnis.
Watcher-Planer (Watcher Planner) â Teil des Entscheidungsmechanismus von Watcher. Dieses Modul nimmt eine Menge von Aktionen an, die von der Strategie generiert wurden, und erstellt einen Arbeitsablaufplan, der definiert, wie diese verschiedenen Aktionen zeitlich geplant werden und welche Voraussetzungen fĂŒr jede Aktion bestehen.
Ziele und Strategien von Watcher
Ziel
Strategien
Dummy-Ziel
Dummy-StrategieÂ
Dummy-Strategie unter Verwendung von Beispiel-Bewertungs-Engines
Dummy-Strategie mit Resize
Energieeinsparung
Strategie zur Energieeinsparung
Serverkonsolidierung
Grundlegende Offline-Serverkonsolidierung
VM-Arbeitslastkonsolidierungsstrategie
Arbeitslastausbalancierung
Strategie zur Migration der Arbeitslastbalance
Strategie zur Balance der SpeicherkapazitÀt
Stabilisierung der Arbeitslast
LĂ€rmender Nachbar
LĂ€rmender Nachbar
Thermische Optimierung
Strategie auf Basis der Outlet-Temperatur
Luftstromoptimierung
Strategie zur gleichmĂ€Ăigen Luftstrommigration
Hardware-Wartung
Zonenmigration
Unklassifiziert
Aktuator
Dummy-Ziel â reserviertes Ziel, das zu Testzwecken verwendet wird.
Verwandte Strategien: Dummy-Strategie, Dummy-Strategie unter Verwendung von Beispiel-Bewertungs-Engines und Dummy-Strategie mit Resize. Dummy-Strategie ist eine fiktive Strategie, die fĂŒr Integrationstests mit Tempest verwendet wird. Diese Strategie bietet keine nĂŒtzliche Optimierung; ihr einziges Ziel ist die Nutzung von Tempest-Tests.
Dummy-Strategie unter Verwendung von Beispiel-Bewertungs-Engines â diese Strategie ist Ă€hnlich der vorherigen, unterscheidet sich jedoch durch die Verwendung eines Beispiels fĂŒr einen 'Bewertungs-Engin', der mit maschinellem Lernen zĂ€hlt.
Dummy-Strategie mit Resize â diese Strategie ist Ă€hnlich der vorherigen, unterscheidet sich jedoch durch die Verwendung von Flavour-Ănderungen (Migration und Resize).
Wird nicht im Produktionsbetrieb verwendet.
Energieeinsparung â Energieverbrauch minimieren. Die Strategie dieses Ziels, die Strategie zur Energieeinsparung, kann zusammen mit der Strategie zur VM-Arbeitslastkonsolidierung (Serverkonsolidierung) dynamisches Energiemanagement (DPM) durchfĂŒhren, das Strom spart, indem Arbeitslasten dynamisch konsolidiert werden, selbst in Zeiten mit geringer Ressourcenauslastung: Virtuelle Maschinen werden auf eine geringere Anzahl von Knoten verschoben, und nicht benötigte Knoten werden ausgeschaltet. Nach der Konsolidierung schlĂ€gt die Strategie Entscheidungen ĂŒber das Ein- und Ausschalten von Knoten gemÀà den festgelegten Parametern vor: âmin_free_hosts_numâ â die Anzahl der freien eingeschalteten Knoten, die auf eine Arbeitslast warten, und âfree_used_percentâ â das prozentuale VerhĂ€ltnis freier eingeschalteter Knoten zur Anzahl der Knoten, die von Maschinen in Anspruch genommen werden. FĂŒr den Betrieb der Strategie muss Ironic aktiviert und konfiguriert sein, um das Ein- und Ausschalten der Stromversorgung an den Knoten zu ermöglichen.
Strategieparameter
Parameter
Typ
standardmĂ€Ăig
Beschreibung
free_used_percent
Nummer
10.0
VerhÀltnis der Anzahl freier Rechenknoten zur Anzahl der Rechenknoten mit virtuellen Maschinen
min_free_hosts_num
Int
1
minimale Anzahl freier Rechenknoten
Es sollten mindestens zwei Knoten in der Cloud vorhanden sein. Die verwendete Methode ist das Ăndern des Stromzustands des Knotens (change_node_power_state). Die Strategie erfordert keine Metrikermittlung.
Server-Konsolidierung â die Anzahl der Rechenknoten zu minimieren (Konsolidierung). Es gibt zwei Strategien: Basic Offline Server Consolidation und VM Workload Consolidation Strategy.
Die Strategie Basic Offline Server Consolidation minimiert die Gesamtzahl der verwendeten Server und auch die Anzahl der Migrationen.
Die Basisstrategie erfordert folgende Metriken:
Metrik
Dienst
erlauben Plugins, die Funktionen von K9s zu erweitern. Ich habe in der Praxis nur eines davon verwendet â
Kommentar
compute.node.cpu.percent
none
Â
cpu_util
none
Â
Strategieparameter: migration_attempts â Anzahl der Kombinationen zur Suche nach potenziellen Kandidaten zum Abschalten (Standardwert: 0, keine EinschrĂ€nkungen), period â Zeitpunkt in Sekunden zur Erfassung der statischen Aggregation aus der Quelle der Metrikdaten (Standardwert: 700).
Verwendete Methoden: Migration, Ănderung des Status des Nova-Dienstes (change_nova_service_state).
Die Strategie VM Workload Consolidation Strategy basiert auf einem heuristischen Algorithmus, der zuerst passende (first-fit) Entscheidungen trifft, sich auf die gemessene CPU-Auslastung konzentriert und versucht, Knoten mit zu hoher oder zu niedriger Auslastung unter BerĂŒcksichtigung der RessourcenkapazitĂ€tsbeschrĂ€nkungen zu minimieren. Diese Strategie bietet eine Lösung, die zu einer effizienteren Ressourcennutzung im Cluster fĂŒhrt, unter Verwendung der folgenden vier Phasen:
- Entlastungsphase â Verarbeitung von Ăberlastungen der Ressourcen;
- Konsolidierungsphase â Verarbeitung von ungenutzten Ressourcen;
- Optimierungslösung â Reduzierung der Anzahl der Migrationen;
- Abschaltung ungenutzter Rechenknoten.
Die Strategie erfordert folgende Metriken:
Metrik
Dienst
erlauben Plugins, die Funktionen von K9s zu erweitern. Ich habe in der Praxis nur eines davon verwendet â
Kommentar
memory
none
Â
disk.root.size
none
Â
Die folgenden Metriken sind nicht zwingend erforderlich, erhöhen jedoch die Genauigkeit der Strategie, sofern sie verfĂŒgbar sind:
Metrik
Dienst
erlauben Plugins, die Funktionen von K9s zu erweitern. Ich habe in der Praxis nur eines davon verwendet â
Kommentar
memory.resident
none
Â
cpu_util
none
Â
Strategieparameter: period â Zeitraum in Sekunden zur Erfassung der statischen Aggregation aus der Quelle der Metrikdaten (Standardwert: 3600).
Verwendet die gleichen Methoden wie die vorherige Strategie. Weitere Informationen .
Arbeitslastausbalancierung â die Arbeitslast zwischen den Rechenknoten ausbalancieren. Ziel hat drei Strategien: Workload Balance Migration Strategy, Workload Stabilisierung, Storage Capacity Balance Strategy.
Die Workload-Balance-Migrationsstrategie startet Migrationen von virtuellen Maschinen basierend auf der Arbeitslast der Knotenmaschinen. Die Entscheidung zur Migration wird getroffen, wenn die CPU- oder RAM-Auslastung eines Knotens den festgelegten Schwellenwert ĂŒberschreitet. Dabei sollte die migrierte virtuelle Maschine den Knoten der durchschnittlichen Arbeitslast aller Knoten nĂ€herbringen.
Anforderungen
- Physische Prozessoren verwenden;
- Mindestens zwei physische Rechenknoten;
- Installierte und konfigurierte Ceilometer-Komponente â ceilometer-agent-compute, die auf jedem Rechenknoten lĂ€uft, und Ceilometer API, sowie das Sammeln der folgenden Metriken:
Metrik
Dienst
erlauben Plugins, die Funktionen von K9s zu erweitern. Ich habe in der Praxis nur eines davon verwendet â
Kommentar
cpu_util
none
Â
memory.resident
none
Â
Strategieparameter:
Parameter
Typ
standardmĂ€Ăig
Beschreibung
Metriken
String
âcpu_utilâ
Die zugrunde liegenden Metriken sind: âcpu_utilâ, âmemory.residentâ.
Schwellenwert
Nummer
25.0
Der Arbeitslastschwellenwert fĂŒr die Migration.
Zeitraum
Nummer
300
Der kumulierte Zeitraum von Ceilometer.
Verwendetes Verfahren â Migration.
Workload-Stabilisierung â eine Strategie zur Stabilisierung der Arbeitslast mithilfe von Live-Migration. Die Strategie basiert auf einem Standardabweichungsalgorithmus und bestimmt, ob eine Ăberlastung im Cluster vorliegt, und reagiert darauf, indem Migrationen von Maschinen gestartet werden, um den Cluster zu stabilisieren.
Anforderungen
- Physische Prozessoren verwenden;
- Mindestens zwei physische Rechenknoten;
- Installierte und konfigurierte Ceilometer-Komponente â ceilometer-agent-compute, die auf jedem Rechenknoten lĂ€uft, und Ceilometer API, sowie das Sammeln der folgenden Metriken:
Metrik
Dienst
erlauben Plugins, die Funktionen von K9s zu erweitern. Ich habe in der Praxis nur eines davon verwendet â
Kommentar
cpu_util
none
Â
memory.resident
none
Â
Strategie zur SpeicherkapazitĂ€tsbalance (die Strategie ist ab Queens implementiert) â die Strategie migriert Festplatten je nach Auslastung der Cinder-Pools. Die Entscheidung zur Migration wird getroffen, wenn der Auslastungsgrad des Pools den festgelegten Schwellenwert ĂŒberschreitet. Die zu migrierende Festplatte sollte den Pool der durchschnittlichen Last aller Cinder-Pools nĂ€herbringen.
Anforderungen und EinschrÀnkungen
- Mindestens zwei Cinder-Pools;
- Möglichkeit der Migration von Festplatten.
- Modell des Cluster-Datenmodells â Cinder-Cluster-Datenmodell-Sammler.
Strategieparameter:
Parameter
Typ
standardmĂ€Ăig
Beschreibung
volume_threshold
Nummer
80.0
Schwellenwert der Festplatten fĂŒr die Volumenbalance.
Verwendetes Verfahren â DatentrĂ€germigration (volume_migrate).
Noisy Neighbor â identifizieren und migrieren Sie den âlauten Nachbarnâ â eine virtuelle Maschine mit niedrigem PrioritĂ€tsniveau, die sich negativ auf die Leistung einer hochpriorisierten virtuellen Maschine in Bezug auf IPC auswirkt, indem sie den Last Level Cache ĂŒbermĂ€Ăig nutzt. Eigene Strategie: Noisy Neighbor (verwendeter Strategiewert â cache_threshold (Standardwert â 35), bei Leistungsabfall auf den angegebenen Wert wird eine Migration gestartet. FĂŒr die Funktion der Strategie sind aktivierte LLC (Last Level Cache) Metriken, der letzte Intel-Server mit CMT-UnterstĂŒtzung, sowie das Sammeln der folgenden Metriken:
Metrik
Dienst
erlauben Plugins, die Funktionen von K9s zu erweitern. Ich habe in der Praxis nur eines davon verwendet â
Kommentar
cpu_l3_cache
none
Benötigt Intel .
Das Datenmodell des Clusters (Standard): Nova-Cluster-Datenmodell-Sammler. Verwendete Methode â Migration.
Die Arbeit mit diesem Ziel ĂŒber das Dashboard ist in Queens nicht vollstĂ€ndig implementiert.
Thermische Optimierung â den Temperaturregime optimieren. Die Temperatur am Ausgang (Abluft) ist eines der wichtigen thermischen Telemetriesysteme zur Messung des Zustands der WĂ€rme-/Arbeitslast des Servers. FĂŒr das Ziel gibt es eine Strategie â Outlet-Temperatur-basierte Strategie, die Entscheidungen ĂŒber das Verschieben von Arbeitslasten auf Knoten mit gĂŒnstigerem Temperaturregime (die niedrigste Temperatur am Ausgang) trifft, wenn die Temperatur am Ausgang der Ursprungs-Hosts den konfigurierbaren Schwellenwert erreicht.
FĂŒr den Betrieb der Strategie ist ein Server mit installiertem und konfiguriertem Intel Power Node Manager erforderlich. , sowie das Sammeln der folgenden Metriken:
Metrik
Dienst
erlauben Plugins, die Funktionen von K9s zu erweitern. Ich habe in der Praxis nur eines davon verwendet â
Kommentar
hardware.ipmi.node.outlet_temperature
IPMI
Â
Strategieparameter:
Parameter
Typ
standardmĂ€Ăig
Beschreibung
Schwellenwert
Nummer
35.0
Temperaturgrenze fĂŒr die Migration.
Zeitraum
Nummer
30
Zeitintervall in Sekunden zur Erfassung statistischer Aggregationen aus der Datenquelle fĂŒr Metriken.
Verwendetes Verfahren â Migration.
Luftstromoptimierung â den BelĂŒftungsmodus optimieren. Eigene Strategie â Uniform Airflow using live migration. Die Strategie initiiert die Migration der virtuellen Maschine jedes Mal, wenn der Luftstrom vom ServerlĂŒfter den angegebenen Schwellenwert ĂŒberschreitet.
FĂŒr den Betrieb der Strategie erforderlich:
- Hardware: Compute Nodes <unterstĂŒtzen NodeManager 3.0;>
- Mindestens zwei Compute Nodes;
- Installierte und konfigurierte Komponenten auf jedem Compute Node: ceilometer-agent-compute und Ceilometer API, die erfolgreich solche Metriken wie Luftstrom, Systemleistung, Eingangstemperatur berichten können:
Metrik
Dienst
erlauben Plugins, die Funktionen von K9s zu erweitern. Ich habe in der Praxis nur eines davon verwendet â
Kommentar
hardware.ipmi.node.airflow
IPMI
Â
hardware.ipmi.node.temperature
IPMI
Â
hardware.ipmi.node.power
IPMI
Â
FĂŒr den Betrieb der Strategie ist ein Server mit installiertem und konfiguriertem Intel Power Node Manager 3.0 oder einer neueren Version erforderlich.
EinschrĂ€nkungen: Das Konzept ist nicht fĂŒr den produktiven Einsatz geeignet.
Es wird empfohlen, diesen Algorithmus mit kontinuierlichen Audits zu verwenden, da bei einer Iteration die Migration nur einer virtuellen Maschine geplant ist.
Lebende Migrationen sind möglich.
Strategieparameter:
Parameter
Typ
standardmĂ€Ăig
Beschreibung
threshold_airflow
Nummer
400.0
Luftstromschwellenwert fĂŒr die Migration Einheit ist 0.1CFM
threshold_inlet_t
Nummer
28.0
Eingangstemperaturgrenze fĂŒr die Entscheidungsfindung zur Migration
threshold_power
Nummer
350.0
Systemleistungsgrenze fĂŒr die Entscheidungsfindung zur Migration
Zeitraum
Nummer
30
Zeitintervall in Sekunden zur Erfassung statistischer Aggregationen aus der Datenquelle fĂŒr Metriken.
Verwendetes Verfahren â Migration.
Hardware-Wartung â Wartung von Hardware. Die Strategie, die sich auf dieses Ziel bezieht, ist die Zonenmigration. Diese Strategie ist ein Werkzeug fĂŒr eine effektive, automatisierte und minimale Migration von virtuellen Maschinen und Festplatten, wenn eine Wartung der Hardware erforderlich ist. Die Strategie entwickelt einen Aktionsplan basierend auf Gewichten: Aktionen mit höherem Gewicht werden frĂŒher als andere geplant. Es gibt zwei Konfigurationsparameter: Aktionsgewichte (action_weights) und Parallelisierung (parallelization).
EinschrÀnkungen: Es ist eine Konfiguration der Aktionsgewichte und der Parallelisierung erforderlich.
Strategieparameter:
Parameter
Typ
standardmĂ€Ăig
Beschreibung
compute_nodes
array2
None
Rechenknoten fĂŒr die Migration.
storage_pools
array2
None
Speicherknoten fĂŒr die Migration.
parallel_total
integer
6
Die Gesamtanzahl der Aktionen, die parallel ausgefĂŒhrt werden sollen.
parallel_per_node
integer
2
Anzahl der Aktionen, die parallel fĂŒr jeden Rechenknoten ausgefĂŒhrt werden.
parallel_per_pool
integer
2
Anzahl der Aktionen, die parallel fĂŒr jeden Speicherpool ausgefĂŒhrt werden.
priority
object
None
Liste von PrioritĂ€ten fĂŒr virtuelle Maschinen und Festplatten.
with_attached_volume
boolean
Falsch
False â Virtuelle Maschinen werden nach dem Transfer aller Festplatten ĂŒbertragen. True â Virtuelle Maschinen werden nach der Migration aller angeschlossenen Festplatten ĂŒbertragen.
Elemente des Arrays von Rechenknoten:
Parameter
Typ
standardmĂ€Ăig
Beschreibung
src_node
string
None
Rechenknoten, von dem die virtuellen Maschinen migriert werden (verpflichtend).
dst_node
string
None
Rechenknoten, auf den die virtuellen Maschinen migriert werden.
Elemente des Arrays von SpeichergröĂen:
Parameter
Typ
standardmĂ€Ăig
Beschreibung
src_pool
string
None
Speicherpool, aus dem die Festplatten migriert werden (verpflichtend).
dst_pool
string
None
Speicherpool, auf den die Festplatten migriert werden.
src_type
string
None
UrsprĂŒnglicher Festplattentyp (verpflichtend).
dst_type
string
None
Ziel-Festplattentyp (verpflichtend).
Elemente der PrioritÀtsobjekte:
Parameter
Typ
standardmĂ€Ăig
Beschreibung
projekt
array2
None
Projektbezeichnungen.
compute_node
array2
None
Namen der Rechenknoten.
storage_pool
array2
None
Namen der Speicherpools.
compute
enum
None
Parameter der virtuellen Maschine ["vcpu_num", "mem_size", "disk_size", "created_at"].
storage
enum
None
Parameter der Festplatten ["size", "created_at"].
Verwendete Methoden â Migration von virtuellen Maschinen, Migration von Festplatten.
Unklassifiziert â Hilfsziel, das verwendet wird, um den Prozess der Strategieentwicklung zu erleichtern. EnthĂ€lt keine Spezifikationen und kann jedes Mal verwendet werden, wenn die Strategie noch nicht mit einem bestehenden Ziel verbunden ist. Dieses Ziel kann auch als Ăbergangsstufe verwendet werden. Die mit diesem Ziel verbundene Strategie ist der Aktuator.  Â
Erstellung eines neuen Ziels
Watcher Decision Engine hat eine Plugin-Schnittstelle âexternes Zielâ, die die Integration eines externen Ziels ermöglicht, das mit der Strategie erreicht werden kann.
Bevor Sie ein neues Ziel erstellen, sollten Sie sicherstellen, dass keines der bestehenden Ziele Ihren BedĂŒrfnissen entspricht.
Erstellung eines neuen Plugins
Um ein neues Ziel zu erstellen, mĂŒssen Sie: die Zielklasse erweitern, die Klassenmethode get_name () implementieren, um die eindeutige Kennung des neuen Ziels zurĂŒckzugeben, das Sie erstellen möchten. Diese eindeutige Kennung muss mit dem Namen des Einstiegspunktes ĂŒbereinstimmen, den Sie spĂ€ter deklarieren.
Als nĂ€chstes mĂŒssen Sie die Klassenmethode get_display_name () implementieren, um den ĂŒbersetzten Anzeigennamen des Ziels zurĂŒckzugeben, das Sie erstellen möchten (verwenden Sie keine Variable, um den ĂŒbersetzten String zurĂŒckzugeben, damit er automatisch vom Ăbersetzungstool gesammelt werden kann.).
Implementieren Sie die Klassenmethode get_translatable_display_name (), um den ĂbersetzungsschlĂŒssel (tatsĂ€chlich den englischen Anzeigennamen) Ihres neuen Ziels zurĂŒckzugeben. Der RĂŒckgabewert sollte mit der Zeichenkette ĂŒbereinstimmen, die in get_display_name () ĂŒbersetzt wurde.
Implementieren Sie seine Methode get_efficacy_specification (), um die Effizienzspezifikation Ihres Ziels zurĂŒckzugeben. Die Methode get_efficacy_specification () gibt eine Instanz von Unclassified () zurĂŒck, die von Watcher bereitgestellt wird. Diese Effizienzspezifikation ist wĂ€hrend der Entwicklungsphase Ihres Ziels nĂŒtzlich, da sie der leeren Spezifikation entspricht.
â
Architektur von Watcher (mehr ).

Komponenten

Watcher API â eine Komponente, die das von Watcher bereitgestellte REST API implementiert. Interaktionsmechanismen: CLI, Plugin Horizon, Python SDK.
Watcher DB â die Datenbank von Watcher.
Watcher Applier â eine Komponente, die die AusfĂŒhrung des von der Komponente Watcher Decision Engine erstellten Aktionsplans implementiert.
Watcher Decision Engine â eine Komponente, die fĂŒr die Berechnung einer Reihe potenzieller OptimierungsmaĂnahmen zur ErfĂŒllung des PrĂŒfziels verantwortlich ist. Wenn keine Strategie angegeben ist, wĂ€hlt die Komponente selbststĂ€ndig die am besten geeignete aus.
Watcher Metrics Publisher â eine Komponente, die einige Metriken oder Ereignisse sammelt und berechnet und sie am Endpunkt CEP veröffentlicht. Die FunktionalitĂ€t der Komponente kann auch vom Ceilometer-Publisher bereitgestellt werden.
Complex Event Processing (CEP) Engine â Motor fĂŒr die umfassende Ereignisverarbeitung. Aus LeistungsgrĂŒnden können mehrere Instanzen des CEP-Engines gleichzeitig betrieben werden, wobei jede eine bestimmte Art von Metrik / Ereignissen verarbeitet. Im Watcher-System löst der CEP zwei Arten von Aktionen aus: â entsprechende Ereignisse / Metriken in die Zeitreihendatenbank schreiben; â entsprechende Ereignisse an die Komponente Watcher Decision Engine senden, wenn dieses Ereignis das Ergebnis der aktuellen Optimierungsstrategie beeinflussen könnte, da der Openstack-Cluster kein statisches System ist.
Die Interaktion der Komponenten erfolgt ĂŒber das AMQP-Protokoll.
â
Schema der Interaktion mit dem Watcher

Testergebnisse des Watchers
- Auf der Seite Optimization â Action Plans tritt der Fehler 500 auf (sowohl bei reinem Queens als auch auf dem Stand mit den Tionix-Modulen), dieser erscheint nur nach dem Start eines Audits und der Generierung eines Aktionsplans, die leere Seite öffnet sich normal.
- Im Tab Action Details gibt es Fehler, es kann kein Ziel und keine Auditsstrategie abgerufen werden (sowohl bei reinem Queens als auch auf dem Stand mit den Tionix-Modulen).
- Audits mit dem Ziel Dummy (Test-Audits) werden normal erstellt und gestartet, AktionsplÀne werden generiert.
- Audits mit dem Ziel Unclassified werden nicht erstellt, da das Ziel nicht funktional ist und fĂŒr die vorĂŒbergehende Einrichtung beim Erstellen neuer Strategien gedacht ist.
- Audits mit dem Ziel Workload Balancing (Strategie Storage Capacity balance) werden erfolgreich erstellt, jedoch wird kein Aktionsplan generiert. Eine Optimierung der SpeichervorrÀte ist nicht erforderlich.
- Audits mit dem Ziel Workload Balancing (Strategie Workload Balance Migration Strategy) werden erfolgreich erstellt, jedoch wird kein Aktionsplan generiert.
- Audits mit dem Ziel Workload Balancing (Strategie Workload Stabilization Strategy) enden mit einem Fehler.
- Audits mit dem Ziel Noisy Neighbor werden erfolgreich erstellt, jedoch wird kein Aktionsplan generiert.
- Audits mit dem Ziel Hardware maintenance werden erfolgreich erstellt, der Aktionsplan wird jedoch nicht vollstĂ€ndig generiert (Leistungskennzahlen werden generiert, jedoch nicht die Liste der MaĂnahmen).
- Ănderungen in den Konfigurationen nova.conf (im Default-Bereich compute_monitors = cpu.virt_driver) auf den Compute- und Control-Node beheben die Fehler nicht.
- Audits mit dem Ziel Server Consolidation (Strategie Basic) enden ebenfalls mit einem Fehler.
- Audits mit dem Ziel Server Consolidation (Strategie VM workload consolidation) enden mit einem Fehler. In den Logs gibt es einen Fehler beim Abrufen der Quelldaten. Diskussion ĂŒber den Fehler, insbesondere, .
Wir haben versucht, die Konfigurationsdatei von Watcher zu Ă€ndern (hat nicht geholfen â aufgrund der Fehler auf allen Seiten der Optimierung hilft das ZurĂŒcksetzen auf den ursprĂŒnglichen Inhalt der Konfigurationsdatei nicht):[watcher_strategies.basic]
datasource = ceilometer, gnocchi - Audits zur Energieeinsparung enden mit einem Fehler. Laut den Logs liegt das Problem tatsÀchlich im Fehlen von Ironic, es funktioniert nicht ohne den Baremetal-Dienst.
- Audits zur thermischen Optimierung enden mit einem Fehler. Der Traceback ist derselbe wie bei der Serverkonsolidierung (Strategie VM-Workload-Konsolidierung) (Fehler bei den Quelldaten).
- Audits zur Luftstromoptimierung enden mit einem Fehler.
Es treten auch folgende Fehler beim Abschluss des Audits auf. Der Traceback in den Logs decision-engine.log (Zustand des Clusters nicht definiert).
â Diskussion des Fehlers
Fazit
Das Ergebnis unserer zweimonatigen Untersuchungen ist die klare Erkenntnis, dass wir zur Schaffung eines voll funktionsfĂ€higen, zuverlĂ€ssigen Lastenausgleichssystems hier intensiv an der Weiterentwicklung der Werkzeuge fĂŒr die OpenStack-Plattform arbeiten mĂŒssen.
Watcher hat sich als ein ernstzunehmendes und schnell wachsendes Produkt mit groĂem Potenzial erwiesen, dessen vollwertige Nutzung jedoch erhebliche und umfassende Arbeit erfordert.
Aber dazu â in den nĂ€chsten Artikeln der Reihe.
Quelle: habr.com
