Lastverteilung in OpenStack

In großen Cloud-Systemen ist die automatische Lastverteilung oder -ausgleichung der Rechenressourcen von entscheidender Bedeutung. Dies haben auch wir bei Tionix (Entwickler und Betreiber von Cloud-Diensten, Teil der Gruppe Rostelekom) erkannt.

Da unsere Hauptentwicklungsplattform OpenStack ist und wir, wie alle Menschen, faul sind, entschieden wir uns, ein bereits vorhandenes Modul zu verwenden, das Teil der Plattform ist. Unsere Wahl fiel auf Watcher, den wir fĂŒr unsere BedĂŒrfnisse nutzen wollten.
Lastverteilung in OpenStack
ZunÀchst betrachten wir die Begriffe und Definitionen.

Begriffe und Definitionen

Ziel – das ist ein messbares, beobachtbares und nachvollziehbares Endergebnis, das erreicht werden soll. FĂŒr jedes Ziel gibt es eine oder mehrere Strategien. Eine Strategie ist die Umsetzung eines Algorithmus, der in der Lage ist, eine Lösung fĂŒr das festgelegte Ziel zu finden.

Aktion (Action) — ist eine grundlegende Aufgabe, die den aktuellen Zustand der Zielressource im OpenStack-Cluster Ă€ndert, wie z.B.: Migration einer virtuellen Maschine (migration), Änderung des Stromzustands des 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 Aktionen ĂŒber einen bestimmten Zeitraum — Pause (sleep), Verschieben eines Volumes (volume_migrate).

Aktionsplan (Action Plan) — ist ein spezifischer Handlungsablauf, der in einer bestimmten Reihenfolge durchgefĂŒhrt wird, um ein konkretes Ziel zu erreichen. Der Aktionsplan enthĂ€lt auch eine bewertete globale Effizienz mit einer Reihe 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 von aufeinanderfolgenden Maßnahmen.

Audit (Audit) — ist eine Anforderung zur Optimierung des Clusters. Die Optimierung erfolgt, um ein Ziel in diesem Cluster zu erreichen. FĂŒr jedes erfolgreiche Audit generiert Watcher einen Aktionsplan.

Auditbereich (Audit Scope) — ist eine Sammlung von Ressourcen, innerhalb derer eine ÜberprĂŒfung durchgefĂŒhrt wird (VerfĂŒgbarkeitszone(n), Knotengruppen, einzelne Rechenknoten oder Speicherorte usw.). Der ÜberprĂŒfungsbereich ist in jeder Vorlage definiert. Wenn der ÜberprĂŒfungsbereich nicht angegeben ist, wird das gesamte Cluster ĂŒberprĂŒft.

ÜberprĂŒfungsvorlage (Audit Template) — ist eine gespeicherte Sammlung von Einstellungen zur DurchfĂŒhrung einer ÜberprĂŒfung. Vorlagen sind notwendig, um wiederholt ÜberprĂŒfungen mit denselben Einstellungen durchzufĂŒhren. Die Vorlage muss unbedingt das Ziel der ÜberprĂŒfung enthalten; wenn Strategien nicht angegeben sind, werden die am besten geeigneten vorhandenen Strategien ausgewĂ€hlt.

Cluster (Cluster) — ist eine Sammlung von physischen Maschinen, die Rechenressourcen, Speicherressourcen und Netzwerkressourcen bereitstellen und von demselben OpenStack-Managementknoten verwaltet werden.

Cluster-Datenmodell (Cluster Data Model, CDM) — ist eine logische Darstellung des aktuellen Zustands und der Topologie der vom Cluster verwalteten Ressourcen.

Effizienzindikator (Efficacy Indicator) — ein Indikator, der anzeigt, wie gut eine Lösung, die mit dieser Strategie erstellt wurde, funktioniert. Die Leistungskennzahlen sind spezifisch fĂŒr ein bestimmtes Ziel und werden in der Regel verwendet, um die globale EffektivitĂ€t des endgĂŒltigen Aktionsplans zu berechnen.

Wirksamkeitsspezifikation (Efficacy Specification) — ist eine Reihe spezifischer Merkmale, die mit jedem Ziel verbunden sind und die verschiedenen Leistungskennzahlen definieren, die die Strategie, die die Erreichung des entsprechenden Ziels gewĂ€hrleistet, in ihrer Lösung erfĂŒllen muss. TatsĂ€chlich wird jede von der Strategie vorgeschlagene Lösung an der Spezifikation gemessen, bevor ihre globale EffektivitĂ€t berechnet wird.

„Scoring Engine“ (Bewertungsmaschine) — ist eine ausfĂŒhrbare Datei, die klar definierte Eingaben, klar definierte Ausgaben hat und eine rein mathematische Aufgabe ausfĂŒhrt. Daher ist die Berechnung unabhĂ€ngig von der Umgebung, in der sie ausgefĂŒhrt wird – sie liefert ĂŒberall dasselbe Ergebnis.

Watcher-Planer (Watcher Planner) — Teil des Entscheidungsmechanismus von Watcher. Dieses Modul nimmt eine Menge an Aktionen entgegen, die durch die Strategie generiert wurden, und erstellt einen Workflow-Plan, der definiert, wie diese verschiedenen Aktionen zeitlich eingeplant werden und welche Voraussetzungen fĂŒr jede Aktion erforderlich sind.

Ziele und Strategien von Watcher

Ziel
Strategien

Dummy-Ziel
Dummy-Strategie 

Dummy-Strategie mit Beispielen von Bewertungsmaschinen

Dummy-Strategie mit GrĂ¶ĂŸenĂ€nderung

Energieeinsparung
Energieeinsparungsstrategie

Serverkonsolidierung
Grundlegende Offline-Serverkonsolidierung

Strategie zur Konsolidierung von VM-Arbeitslasten

Arbeitslastausgleich
Strategie zur Migration des Arbeitslastausgleichs

Strategie zum Ausgleich der SpeicherkapazitÀt

Stabilisierung der Arbeitslast

Lauscher-Nachbar
Lauscher-Nachbar

Thermische Optimierung
Strategie basierend auf der Ausgangstemperatur

Luftstromoptimierung
Strategie zur einheitlichen Migration des Luftstroms

Hardwarewartung
Zonenmigration

Unklassifiziert
Aktuator

Dummy-Ziel — Ziel, das fĂŒr Testzwecke reserviert ist.

Verwandte Strategien: Dummy-Strategie, Dummy-Strategie mit Beispielen von Bewertungsmaschinen und Dummy-Strategie mit GrĂ¶ĂŸenĂ€nderung. Die Dummy-Strategie ist eine fiktive Strategie, die fĂŒr Integrationstests ĂŒber Tempest verwendet wird. Diese Strategie bietet keine nĂŒtzliche Optimierung, ihr einziges Ziel ist es, Tempest-Tests durchzufĂŒhren.

Dummy-Strategie mit Beispiel-Skor engines — diese Strategie ist Ă€hnlich der vorherigen, unterscheidet sich jedoch einzig durch die Verwendung eines Beispiels "Bewertungs-Engines", die Berechnungen mit Methoden des maschinellen Lernens durchfĂŒhrt.

Dummy-Strategie mit Resize — diese Strategie Ă€hnelt der vorherigen, besteht jedoch ausschließlich aus der Anpassung des Flavors (Migration und Resize).

Wird nicht in der Produktion eingesetzt.

Energieeinsparung — den Energieverbrauch minimieren. Die Strategie fĂŒr dieses Ziel, die Saving Energy Strategy, in Kombination mit der VM Workload Consolidation Strategy (Server Consolidation), kann Funktionen des dynamischen Energiemanagements (DPM) ĂŒbernehmen, die Strom sparen durch dynamische Konsolidierung von Workloads, selbst in Zeiten niedriger Ressourcenauslastung: Virtuelle Maschinen werden auf eine geringere Anzahl von Knoten verschoben, und nicht benötigte Knoten werden deaktiviert. Nach der Konsolidierung schlĂ€gt die Strategie eine Lösung zum Ein-/Ausschalten von Knoten entsprechend den festgelegten Parametern vor: „min_free_hosts_num“ — die Anzahl der freien, eingeschalteten Knoten, die auf Last warten, und „free_used_percent“ — das prozentuale VerhĂ€ltnis freier, eingeschalteter Knoten zur Anzahl der Knoten, die von Maschinen belegt sind. Um die Strategie zu betreiben, muss Ironic aktiviert und konfiguriert sein, um die Stromversorgung an den Knoten zu steuern.

Strategieparameter

Parameter
Typ
standardmĂ€ĂŸig verwendet
Beschreibung

free_used_percent
Zahl
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

Im Cloud sollten mindestens zwei Knoten vorhanden sein. Die verwendete Methode ist das Ändern des Stromstatus des Knotens (change_node_power_state). FĂŒr das Sammeln von Metriken ist keine Strategie erforderlich.

Serverkonsolidierung – die Minimierung der Anzahl der Rechenknoten (Konsolidierung). Es gibt zwei Strategien: Basic Offline Server Consolidation und VM Workload Consolidation Strategy.

Die Basic Offline Server Consolidation-Strategie minimiert die Gesamtanzahl der verwendeten Server sowie die Anzahl der Migrationen.

Die Basisstrategie erfordert folgende Metriken:

Metrik
Dienst
Plugins
ein Kommentar

compute.node.cpu.percent
ceilometer
keine
 

cpu_util
ceilometer
keine
 

Strategieparameter: migration_attempts – die Anzahl der Kombinationen, um potenzielle Kandidaten fĂŒr das Ausschalten zu finden (Standardwert: 0, keine EinschrĂ€nkungen), period – der Zeitintervall in Sekunden fĂŒr die statische Aggregation aus der Datenquelle der Metrik (Standardwert: 700).

Verwendete Methoden: Migration, Änderung des Status des Nova-Dienstes (change_nova_service_state).

Die VM Workload Konsolidierungsstrategie basiert auf einem heuristischen First-Fit-Algorithmus, der sich auf die gemessene CPU-Auslastung konzentriert und versucht, Knoten zu minimieren, die entweder ĂŒberlastet oder unterlastet sind, unter BerĂŒcksichtigung der KapazitĂ€tsbeschrĂ€nkungen. Diese Strategie bietet eine Lösung, die zu einer effizienteren Ressourcennutzung im Cluster fĂŒhrt, indem sie die folgenden vier Phasen umfasst:

  1. Entlastungsphase — Bearbeitung ĂŒberbeanspruchter Ressourcen;
  2. Konsolidierungsphase — Bearbeitung untergenutzter Ressourcen;
  3. Optimierungslösung — Reduzierung der Anzahl von Migrationen;
  4. Deaktivierung ungenutzter Rechenknoten.

Die Strategie erfordert folgende Metriken:

Metrik
Dienst
Plugins
ein Kommentar

Speicher
ceilometer
keine
 

disk.root.size
ceilometer
keine
 

Die folgenden Metriken sind nicht zwingend erforderlich, erhöhen jedoch die Genauigkeit der Strategie, sofern verfĂŒgbar:

Metrik
Dienst
Plugins
ein Kommentar

memory.resident
ceilometer
keine
 

cpu_util
ceilometer
keine
 

Strategieparameter: period — Zeitintervall in Sekunden zur statischen Aggregation aus der Metrikdatenquelle (standardmĂ€ĂŸig 3600).

Verwendet dieselben Methoden wie die vorherige Strategie. Weitere Informationen hier.

Arbeitslastausgleich — die Arbeitslast zwischen den Rechenknoten ausbalancieren. Ziel erreicht man mit drei Strategien: Workload Balance Migration Strategy, Workload Stabilization und Storage Capacity Balance Strategy.

Die Workload Balance Migration Strategy initiiert Migrationsprozesse fĂŒr virtuelle Maschinen basierend auf der Arbeitslast der Knoten. Die Entscheidung ĂŒber die Verschiebung wird getroffen, sobald die CPU- oder RAM-Auslastung eines Knotens den festgelegten Schwellenwert ĂŒberschreitet. Dabei muss die zu verschiebende virtuelle Maschine den Knoten nĂ€her an die durchschnittliche Arbeitslast aller Knoten bringen.

Anforderungen

  • Verwendung physischer Prozessoren;
  • Mindestens zwei physische Rechenknoten;
  • Installiertes und konfiguriertes Ceilometer-Komponenten - ceilometer-agent-compute, betrieben auf jedem Rechenknoten, und das Ceilometer API, sowie die Sammlung folgender Metriken:

Metrik
Dienst
Plugins
ein Kommentar

cpu_util
ceilometer
keine
 

memory.resident
ceilometer
keine
 

Strategieparameter:

Parameter
Typ
standardmĂ€ĂŸig verwendet
Beschreibung

metrics
fĂŒr einfache Datentypen und Debugging.
'cpu_util'
Metriken, die zugrunde liegen: 'cpu_util', 'memory.resident'.

Schwellenwert
Zahl
25.0
Schwellenwert der Arbeitslast fĂŒr die Migration.

Zeitraum
Zahl
300
Gesamtzeitraum fĂŒr Ceilometer.

Verwendete Methode — Migration.

Workload-Stabilisierung – eine Strategie, die darauf abzielt, die Arbeitslast durch Live-Migration zu stabilisieren. Diese Strategie basiert auf einem Standardabweichungsalgorithmus und bestimmt, ob es eine Überlastung im Cluster gibt, und reagiert darauf, indem sie Migrationen startet, um den Cluster zu stabilisieren.

Anforderungen

  • Verwendung physischer Prozessoren;
  • Mindestens zwei physische Rechenknoten;
  • Installiertes und konfiguriertes Ceilometer-Komponenten - ceilometer-agent-compute, betrieben auf jedem Rechenknoten, und das Ceilometer API, sowie die Sammlung folgender Metriken:

Metrik
Dienst
Plugins
ein Kommentar

cpu_util
ceilometer
keine
 

memory.resident
ceilometer
keine
 

SpeicherkapazitĂ€tsausgleichsstrategie (ab Queens implementiert) – diese Strategie verschiebt Festplatten in AbhĂ€ngigkeit von der Auslastung der Cinder-Pools. Die Entscheidung zur Verschiebung wird jedes Mal getroffen, wenn der Nutzungssatz eines Pools den festgelegten Schwellenwert ĂŒbersteigt. Die verschobene Festplatte sollte dazu beitragen, den Pool der durchschnittlichen Last aller Cinder-Pools nĂ€her zu bringen.

Anforderungen und EinschrÀnkungen

  • Mindestens zwei Cinder-Pools;
  • Möglichkeit zur Migration von Festplatten.
  • Datenmodell des Clusters – Cinder-Cluster-Datenmodell-Sammler.

Strategieparameter:

Parameter
Typ
standardmĂ€ĂŸig verwendet
Beschreibung

volume_threshold
Zahl
80.0
Schwellenwert der Festplatten fĂŒr die Volumenbalance.

Verwendetes Verfahren – Festplattentransfer (volume_migrate).

Noisy Neighbor — identifizieren und verschieben Sie den „lauten Nachbarn“ — eine virtuelle Maschine mit niedriger PrioritĂ€t, die die Leistung einer virtuellen Maschine mit hoher PrioritĂ€t negativ beeinflusst, indem sie den Last Level Cache ĂŒbermĂ€ĂŸig nutzt. Eigene Strategie: Noisy Neighbor (verwendeter Strategieparameter — cache_threshold (Standardwert — 35), Migration wird initiiert, wenn die Leistung den angegebenen Wert erreicht. FĂŒr das Funktionieren der Strategie sind aktivierte LLC (Last Level Cache) Metriken, der neueste Intel-Server mit CMT-UnterstĂŒtzung, sowie das Sammeln der folgenden Metriken erforderlich:

Metrik
Dienst
Plugins
ein Kommentar

cpu_l3_cache
ceilometer
keine
Benötigt Intel CMT.

Cluster-Datenmodell (Standard): Nova Cluster Datenmodell-Sammler. Zugewandte Methode — Migration.

Die Arbeit mit diesem Ziel ĂŒber das Dashboard ist in Queens nicht vollstĂ€ndig implementiert.

Thermische Optimierung — den Temperaturhaushalt optimieren. Die Austrittstemperatur (Abluft) ist eines der wichtigen WĂ€rme-Überwachungssysteme zur Messung des Zustands der thermischen / Arbeitslast des Servers. Zu diesem Zweck gibt es eine Strategie – die Outlet-Temperatur-basierte Strategie, die Entscheidungen ĂŒber die Verlagerung von Arbeitslasten auf Knoten mit gĂŒnstigen Temperaturbedingungen (die niedrigste Austrittstemperatur) trifft, wenn die Austrittstemperatur der ursprĂŒnglichen Hosts einen einstellbaren Schwellenwert erreicht.

FĂŒr das Funktionieren der Strategie ist ein Server mit installiertem und konfiguriertem Intel Power Node Manager erforderlich. 3.0 oder höher, sowie das Sammeln der folgenden Metriken erforderlich:

Metrik
Dienst
Plugins
ein Kommentar

hardware.ipmi.node.outlet_temperature
ceilometer
IPMI
 

Strategieparameter:

Parameter
Typ
standardmĂ€ĂŸig verwendet
Beschreibung

Schwellenwert
Zahl
35.0
Temperaturschwelle fĂŒr die Migration.

Zeitraum
Zahl
30
Zeitintervall in Sekunden zur statistischen Aggregation aus der Quelle der Metrik.

Verwendete Methode — Migration.

Luftstromoptimierung — den LĂŒftungsmodus optimieren. Die eigene Strategie – Uniform Airflow using live migration. Diese Strategie startet die Migration der virtuellen Maschine, sobald der Luftstrom des Serverventilators den angegebenen Schwellenwert ĂŒberschreitet.

FĂŒr das Funktionieren der Strategie sind erforderlich:

  • Hardware: Rechenknoten < mit UnterstĂŒtzung fĂŒr NodeManager 3.0;
  • Mindestens zwei Rechenknoten;
  • Installierte und konfigurierte Komponenten wie ceilometer-agent-compute und die Ceilometer-API auf jedem Rechenknoten, die erfolgreich Metriken wie Luftstrom, Systemleistung und Eingangstemperatur melden können:

Metrik
Dienst
Plugins
ein Kommentar

hardware.ipmi.node.airflow
ceilometer
IPMI
 

hardware.ipmi.node.temperature
ceilometer
IPMI
 

hardware.ipmi.node.power
ceilometer
IPMI
 

FĂŒr die Strategie wird ein Server benötigt, auf dem Intel Power Node Manager 3.0 oder eine neuere Version installiert und konfiguriert ist.

EinschrĂ€nkungen: Das Konzept ist nicht fĂŒr den Produktionseinsatz gedacht.

Es wird empfohlen, diesen Algorithmus mit kontinuierlichen Audits zu verwenden, da in einer Iteration nur eine virtuelle Maschine migriert werden soll.

Live-Migrationen sind möglich.

Strategieparameter:

Parameter
Typ
standardmĂ€ĂŸig verwendet
Beschreibung

threshold_airflow
Zahl
400.0
Luftstromschwelle fĂŒr die Migration Einheit ist 0.1 CFM

threshold_inlet_t
Zahl
28.0
Eingangstemperaturschwelle fĂŒr die Migrationsentscheidung

threshold_power
Zahl
350.0
Systemleistungs-Schwelle fĂŒr die Migrationsentscheidung

Zeitraum
Zahl
30
Zeitintervall in Sekunden zur statistischen Aggregation aus der Quelle der Metrik.

Verwendete Methode — Migration.

Hardwarewartung — Hardware Maintenance. Die betreffende Strategie ist die Zonenmigration. Diese Strategie dient als Werkzeug fĂŒr eine effektive, automatische und minimalinvasive Migration von virtuellen Maschinen und Festplatten, falls eine technische Wartung der Hardware erforderlich ist. Die Strategie legt einen Aktionsplan anhand von Gewichten fest: Handlungen mit höherem Gewicht werden priorisiert. Es gibt zwei Konfigurationsparameter: Aktionsgewichte (action_weights) und Parallelisierung (parallelization).

EinschrÀnkungen: Die Konfiguration der Aktionsgewichte und der Parallelisierung ist erforderlich.

Strategieparameter:

Parameter
Typ
standardmĂ€ĂŸig verwendet
Beschreibung

compute_nodes
array
None
Rechnerknoten fĂŒr Migration.

storage_pools
array
None
Speicherpools fĂŒr Migration.

parallel_total
integer
6
Die Gesamtanzahl der Aktionen, die parallel ausgefĂŒhrt werden mĂŒssen.

parallel_per_node
integer
2
Die Anzahl der Aktionen, die parallel fĂŒr jeden Rechnerknoten ausgefĂŒhrt werden.

parallel_per_pool
integer
2
Die Anzahl der Aktionen, die parallel fĂŒr jeden Speicherpool ausgefĂŒhrt werden.

PrioritÀt
Objekt
None
PrioritĂ€tenliste fĂŒr virtuelle Maschinen und Festplatten.

with_attached_volume
boolean
False
Falsch — virtuelle Maschinen werden nach dem Transfer aller Festplatten migriert. Wahr — virtuelle Maschinen werden nach der Migration aller angeschlossenen Festplatten ĂŒbertragen.

Elemente des Arrays von Rechenknoten:

Parameter
Typ
standardmĂ€ĂŸig verwendet
Beschreibung

src_node
string
None
Der Rechenknoten, von dem die virtuellen Maschinen ĂŒbertragen werden (erforderlich).

dst_node
string
None
Der Rechenknoten, auf den die virtuellen Maschinen migriert werden.

Elemente des Arrays von Speicherpools:

Parameter
Typ
standardmĂ€ĂŸig verwendet
Beschreibung

src_pool
string
None
Der Speicherpool, aus dem die Festplatten ĂŒbertragen werden (erforderlich).

dst_pool
string
None
Der Speicherpool, auf den die Festplatten ĂŒbertragen werden.

src_type
string
None
Der ursprĂŒngliche Typ der Festplatte (erforderlich).

dst_type
string
None
Der endgĂŒltige Typ der Festplatte (erforderlich).

Elemente der Priorisierung von Objekten:

Parameter
Typ
standardmĂ€ĂŸig verwendet
Beschreibung

project
array
None
Namen der Projekte.

compute_node
array
None
Namen der Rechenknoten.

storage_pool
array
None
Namen der Speicherpools.

compute
enum
None
Parameter der virtuellen Maschinen [“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 — eine unterstĂŒtzende Zielsetzung, die den Entwicklungsprozess der Strategie erleichtert. Sie enthĂ€lt keine spezifischen Vorgaben und kann eingesetzt werden, wenn die Strategie noch nicht mit einem bestehenden Ziel verknĂŒpft ist. Dieses Ziel kann auch als Übergangsstufe genutzt werden. Die mit diesem Ziel verbundene Strategie ist – Actuator.   

Neues Ziel erstellen

Watcher Decision Engine verfĂŒgt ĂŒber ein Plugin-Interface fĂŒr 'externe Ziele', das die Integration eines externen Ziels ermöglicht, welches durch die Strategie erreicht werden kann.

Bevor Sie ein neues Ziel erstellen, sollten Sie sicherstellen, dass keines der bestehenden Ziele Ihren Anforderungen entspricht.

Neues Plugin erstellen

Um ein neues Ziel zu erstellen, mĂŒssen Sie: die Zielklasse erweitern und die Klassenmethode get_name () implementieren, um die eindeutige Kennung des neuen Ziels zurĂŒckzugeben, das Sie erstellen möchten. Diese eindeutige Kennung sollte mit dem Namen des Einstiegspunkts ĂŒbereinstimmen, den Sie spĂ€ter deklarieren.

Sie mĂŒssen außerdem die Klassenmethode get_display_name () Um den ĂŒbersetzten Anzeigenamen des Ziels zurĂŒckzugeben, das Sie erstellen möchten (verwenden Sie keine Variable, um die ĂŒbersetzte Zeichenfolge zurĂŒckzugeben, damit sie automatisch vom Übersetzungstool gesammelt werden kann.).

Implementieren Sie die Klassenmethode get_translatable_display_name (), um den ÜbersetzungsschlĂŒssel (tatsĂ€chlich den englischen Anzeigenamen) Ihres neuen Ziels zurĂŒckzugeben. Der RĂŒckgabewert sollte mit der Zeichenfolge ĂŒbereinstimmen, die in get_display_name () ĂŒbersetzt wurde.

Implementieren Sie seine Methode get_efficacy_specification (), um die Effizienzspezifikation fĂŒr Ihr Ziel zurĂŒckzugeben. Die Methode get_efficacy_specification () gibt eine Instanz von Unclassified () zurĂŒck, die von Watcher bereitgestellt wird. Diese Effizienzspezifikation ist nĂŒtzlich im Entwicklungsprozess Ihres Ziels, da sie mit einer leeren Spezifikation ĂŒbereinstimmt.

→ Weitere Informationen finden Sie hier

Die Architektur von Watcher (mehr dazu hier).

Lastverteilung in OpenStack

Komponenten

Lastverteilung in OpenStack

Watcher API — ein Bestandteil, der die von Watcher bereitgestellte REST API implementiert. Interaktionsmechanismen: CLI, Horizon-Plugin, Python SDK.

Watcher DB — die Datenbank von Watcher.

Watcher Applier — ein Bestandteil, der die AusfĂŒhrung des vom Watcher Decision Engine erstellten Aktionsplans implementiert.

Watcher Decision Engine — eine Komponente, die dafĂŒr verantwortlich ist, eine Reihe potenzieller Optimierungsmaßnahmen zur Erreichung des Audit-Ziels zu berechnen. Wenn keine Strategie angegeben ist, wĂ€hlt die Komponente eigenstĂ€ndig die am besten geeignete aus.

Watcher Metrics Publisher — eine Komponente, die bestimmte Metriken oder Ereignisse sammelt und berechnet und diese an einen Endpunkt von CEP veröffentlicht. Die FunktionalitĂ€t dieser Komponente kann auch vom Ceilometer-Publisher bereitgestellt werden.

Complex Event Processing (CEP) Engine — der Engine fĂŒr komplexe Ereignisverarbeitung. Aus LeistungsgrĂŒnden kann es mehrere Instanzen des CEP-Engines geben, die gleichzeitig arbeiten, wobei jede fĂŒr einen bestimmten Typ von Metrik / Ereignis zustĂ€ndig ist. In der Watcher-System fĂŒhrt CEP zwei Arten von Aktionen aus: — die entsprechenden Ereignisse / Metriken in einer Zeitreihe-Datenbank zu protokollieren; — die entsprechenden Ereignisse an die Komponente Watcher Decision Engine zu senden, wenn dieses Ereignis das Ergebnis der aktuellen Optimierungsstrategie beeinflussen könnte, da der OpenStack-Cluster kein statisches System ist.

Die Kommunikation zwischen den Komponenten erfolgt ĂŒber das AMQP-Protokoll.

→ Konfiguration des Watchers

Schema der Interaktion mit dem Watcher

Lastverteilung in OpenStack

Testergebnisse des Watchers

  1. Auf der Seite Optimierung — AktionsplĂ€ne gibt es einen 500-Fehler (sowohl auf reinem Queens als auch auf der Testumgebung mit TioniX-Modulen), der nur auftritt, nachdem das Audit gestartet und der Aktionsplan generiert wird; eine leere Seite öffnet sich normal.
  2. Auf der Registerkarte Aktionsdetails gibt es Fehler; das Ziel und die Strategie des Audits können nicht abgerufen werden (sowohl auf reinem Queens als auch auf der Testumgebung mit TioniX-Modulen).
  3. Audits mit dem Ziel Dummy (TestfÀlle) werden erfolgreich erstellt und gestartet, AktionsplÀne werden generiert.
  4. Audits mit dem Ziel Unclassified werden nicht erstellt, da das Ziel nicht funktionsfĂ€hig ist und fĂŒr die Zwischenkonfiguration beim Erstellen neuer Strategien gedacht ist.
  5. Audits mit dem Ziel Workload Balancing (Strategie zur Balance der SpeicherkapazitÀt) werden erfolgreich erstellt, jedoch wird kein Aktionsplan generiert. Es ist keine Optimierung der Speicherpools erforderlich.
  6. Audits mit dem Ziel Workload Balancing (Strategie zur Migration des Workloads) werden erfolgreich erstellt, jedoch wird kein Aktionsplan generiert.
  7. Audits mit dem Ziel Workload Balancing (Strategie zur Stabilisierung des Workloads) enden mit einem Fehler.
  8. Audits mit dem Ziel Noisy Neighbor werden erfolgreich erstellt, jedoch wird kein Aktionsplan generiert.
  9. Audits zur Hardware-Wartung werden erfolgreich erstellt, der Aktionsplan wird jedoch nicht vollstĂ€ndig generiert (Leistungskennzahlen werden generiert, aber die Liste der Maßnahmen wird nicht erstellt).
  10. Änderungen in den Konfigurationen von nova.conf (in der Default-Sektion compute_monitors = cpu.virt_driver) beheben die Fehler auf den Rechen- und Kontrollknoten nicht.
  11. Audits zur Server-Konsolidierung (Basic-Strategie) enden ebenfalls mit einem Fehler.
  12. Audits zur Server-Konsolidierung (Strategie der VM-Arbeitslastkonsolidierung) enden mit einem Fehler. In den Protokollen wird ein Fehler beim Abrufen der Rohdaten angezeigt. Fehlerdiskussion, insbesondere. hier.
    Wir haben versucht, in der Konfigurationsdatei von Watcher anzugeben (hat nicht geholfen – in Folge traten Fehler auf allen Seiten der Optimierung auf, eine RĂŒckkehr zum ursprĂŒnglichen Inhalt der Konfigurationsdatei behebt die Situation nicht):

    [watcher_strategies.basic]
    datasource = ceilometer, gnocchi

  13. Audits zur Energieeinsparung enden mit einem Fehler. Anhand der Protokolle scheint das Problem tatsÀchlich im Fehlen von Ironic zu liegen, ohne Baremetal-Service funktioniert es nicht.
  14. Audits zur thermischen Optimierung enden mit einem Fehler. Der Traceback ist derselbe wie bei der Server-Konsolidierung (Strategie der VM-Arbeitslastkonsolidierung) (Fehler bei den Rohdaten).
  15. Audits zur Optimierung des Airflows enden mit einem Fehler.

Es treten auch die folgenden Fehler im Abschlussbericht auf. Der Traceback in den decision-engine.log (Zustand des Clusters nicht definiert).

→ Fehlerdiskussion hier

Fazit

Das Ergebnis unserer zweimonatigen Untersuchungen ist die klare Erkenntnis, dass wir fĂŒr eine vollfunktionsfĂ€hige, operative Lastverteilung in diesem Bereich aktiv an der Entwicklung der Werkzeuge fĂŒr die OpenStack-Plattform arbeiten mĂŒssen.

Watcher hat sich als ein ernstzunehmendes, schnell wachsendes Produkt mit großem Potenzial erwiesen, fĂŒr dessen vollstĂ€ndige Nutzung jedoch eine umfassende und grĂŒndliche Arbeit erforderlich ist.

Doch dazu mehr in den nÀchsten Artikeln der Reihe.

Quelle: habr.com

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Servern | ProHoster