Dans les grandes systÚmes cloud, la question de l'équilibrage automatique ou de la répartition de la charge sur les ressources de calcul est particuliÚrement critique. Ce problÚme a également été pris en compte par Tionix (développeur et opérateur de services cloud, membre du groupe Rostelecom).
Et, comme notre principale plateforme de dĂ©veloppement est OpenStack, et que, comme tout le monde, nous sommes paresseux, il a Ă©tĂ© dĂ©cidĂ© de trouver un module prĂȘt Ă l'emploi qui soit dĂ©jĂ inclus dans la plateforme. Nous avons choisi Watcher, que nous avons dĂ©cidĂ© d'utiliser pour nos besoins.
Pour commencer, examinons les termes et définitions.
Termes et définitions
L'objectif â c'est un rĂ©sultat final, lisible par l'homme, observable et mesurable, qui doit ĂȘtre atteint. Pour chaque objectif, il existe une ou plusieurs stratĂ©gies. Une stratĂ©gie est la mise en Ćuvre d'un algorithme capable de trouver une solution Ă cet objectif.
Action (Action) â il s'agit d'une tĂąche Ă©lĂ©mentaire qui modifie l'Ă©tat actuel de la ressource gĂ©rĂ©e cible dans le cluster OpenStack, comme : la migration d'une machine virtuelle (migration), le changement de l'Ă©tat d'alimentation d'un nĆud (change_node_power_state), le changement de l'Ă©tat du service Nova (change_nova_service_state), le changement de la taille (resize), l'enregistrement d'un message NOP (nop), l'absence d'actions pendant une certaine durĂ©e â une pause (sleep), le transfert d'un disque (volume_migrate).
Plan d'action (Action Plan) â un flux d'actions spĂ©cifique, rĂ©alisĂ© dans un certain ordre pour atteindre un objectif concret. Le plan d'action comprend Ă©galement une efficacitĂ© globale Ă©valuĂ©e avec un ensemble d'indicateurs de performance. Le plan d'action est gĂ©nĂ©rĂ© par Watcher lors d'un audit rĂ©ussi, Ă la suite duquel la stratĂ©gie utilisĂ©e trouve une solution pour atteindre l'objectif. Le plan d'action se compose d'une liste d'actions sĂ©quentielles.
Audit (Audit) â c'est une demande d'optimisation du cluster. L'optimisation est effectuĂ©e pour atteindre un objectif dans ce cluster. Pour chaque audit rĂ©ussi, Watcher gĂ©nĂšre un plan d'action.
Domaine d'audit (Audit Scope) â est un ensemble de ressources dans le cadre duquel un audit est effectuĂ© (zone(s) de disponibilitĂ©, agrĂ©gateurs de nĆuds, nĆuds de calcul individuels ou nĆuds de stockage, etc.). La portĂ©e de l'audit est dĂ©finie dans chaque modĂšle. Si la portĂ©e de l'audit n'est pas prĂ©cisĂ©e, l'audit est rĂ©alisĂ© sur l'ensemble du cluster.
ModĂšle d'audit (Audit Template) â un ensemble enregistrĂ© de paramĂštres pour effectuer un audit. Les modĂšles sont nĂ©cessaires pour exĂ©cuter plusieurs fois des audits avec les mĂȘmes paramĂštres. Le modĂšle doit obligatoirement contenir l'objectif de l'audit ; si les stratĂ©gies ne sont pas prĂ©cisĂ©es, les stratĂ©gies les plus appropriĂ©es parmi les stratĂ©gies existantes sont choisies.
Cluster (Cluster) â c'est un ensemble de machines physiques qui fournissent des ressources de calcul, des ressources de stockage et des ressources rĂ©seau, gĂ©rĂ©es par un mĂȘme nĆud de contrĂŽle OpenStack.
ModĂšle de donnĂ©es de cluster (Cluster Data Model, CDM) â c'est une reprĂ©sentation logique de l'Ă©tat actuel et de la topologie des ressources gĂ©rĂ©es par le cluster.
Indicateur de performance (Efficacy Indicator) â un indicateur qui indique comment la solution créée par cette stratĂ©gie est exĂ©cutĂ©e. Les indicateurs de performance sont spĂ©cifiques Ă un objectif donnĂ© et sont souvent utilisĂ©s pour calculer l'efficacitĂ© globale du plan d'action final.
SpĂ©cification de performance (Efficacy Specification) â un ensemble de caractĂ©ristiques spĂ©cifiques liĂ© Ă chaque objectif, qui dĂ©finit divers indicateurs de performance que la stratĂ©gie, assurant l'atteinte de l'objectif correspondant, doit respecter dans sa solution. En effet, chaque solution proposĂ©e par la stratĂ©gie sera vĂ©rifiĂ©e par rapport Ă la spĂ©cification avant de calculer son efficacitĂ© globale.
Moteur de calcul (Scoring Engine) â c'est un fichier exĂ©cutable qui a des entrĂ©es clairement dĂ©finies, des sorties clairement dĂ©finies et exĂ©cute une tĂąche purement mathĂ©matique. Ainsi, le calcul ne dĂ©pend pas de l'environnement dans lequel il s'exĂ©cute â il donnera le mĂȘme rĂ©sultat partout.
Planificateur Watcher (Watcher Planner) â partie du mĂ©canisme de prise de dĂ©cision de Watcher. Ce module prend un ensemble d'actions gĂ©nĂ©rĂ©es par la stratĂ©gie et crĂ©e un plan de flux de travail qui dĂ©termine comment planifier dans le temps ces diffĂ©rentes actions et, pour chaque action, quelles sont les conditions prĂ©alables.
Objectifs et stratégies de Watcher
L'objectif
Stratégies
Objectif fictif
StratĂ©gie fictiveÂ
Stratégie fictive utilisant des moteurs de notation d'exemple
Stratégie fictive avec redimensionnement
Ăconomie d'Ă©nergie
Stratégie d'économie d'énergie
Consolidation des serveurs
Consolidation basique des serveurs hors ligne
Stratégie de consolidation de charge de travail VM
Ăquilibrage de charge
Stratégie de migration d'équilibre de charge
Stratégie d'équilibre de capacité de stockage
Stabilisation de la charge de travail
Voisin bruyant
Voisin bruyant
Optimisation thermique
Stratégie basée sur la température de sortie
Optimisation du flux d'air
Stratégie de migration de flux d'air uniforme
Maintenance matérielle
Migration de zone
Non classifié
Actionneur
Objectif fictif â objectif rĂ©servĂ©, utilisĂ© Ă des fins de test.
Stratégies associées : Stratégie fictive, Stratégie fictive utilisant des moteurs de notation d'exemple et Stratégie fictive avec redimensionnement. La stratégie fictive est utilisée pour les tests d'intégration via Tempest. Cette stratégie n'offre aucune optimisation utile, son seul but est d'utiliser les tests Tempest.
La stratégie fictive utilisant des moteurs de notation d'exemple est similaire à la précédente, différant seulement par l'utilisation d'un "moteur de notation" échantillon qui calcule en utilisant des méthodes d'apprentissage automatique.
La stratégie fictive avec redimensionnement est similaire à la précédente, différant seulement par l'utilisation d'un changement de flavor (migration et redimensionnement).
Non utilisé en production.
Ăconomie d'Ă©nergie â minimiser la consommation d'Ă©nergie. La stratĂ©gie de cet objectif, StratĂ©gie d'Ă©conomie d'Ă©nergie, associĂ©e Ă la StratĂ©gie de consolidation de charge de travail VM (Consolidation des serveurs), est capable d'exĂ©cuter des fonctions de gestion de l'alimentation dynamique (DPM), qui Ă©conomise de l'Ă©lectricitĂ© grĂące Ă la consolidation dynamique des charges de travail mĂȘme pendant les pĂ©riodes de faible utilisation des ressources : les machines virtuelles sont dĂ©placĂ©es vers un nombre rĂ©duit de nĆuds, et les nĆuds inutiles sont Ă©teints. AprĂšs la consolidation, la stratĂ©gie propose une solution pour allumer/Ă©teindre les nĆuds conformĂ©ment aux paramĂštres dĂ©finis : "min_free_hosts_num" â le nombre de nĆuds libres allumĂ©s en attente de charge, et "free_used_percent" â le pourcentage de nĆuds libres allumĂ©s par rapport au nombre de nĆuds occupĂ©s par des machines. Pour que la stratĂ©gie fonctionne, Ironic doit ĂȘtre activĂ© et configurĂ© pour gĂ©rer l'allumage/l'extinction de l'alimentation sur les nĆuds.
ParamÚtres de la stratégie
paramĂštre
le type
par défaut
des commandes.
free_used_percent
Nombre
10.0
le rapport entre le nombre de nĆuds de calcul disponibles et le nombre de nĆuds de calcul avec des machines virtuelles
min_free_hosts_num
Int
1
nombre minimal de nĆuds de calcul disponibles
Le cloud doit avoir au moins deux nĆuds. La mĂ©thode utilisĂ©e est le changement d'Ă©tat d'alimentation du nĆud (change_node_power_state). La stratĂ©gie de collecte de mĂ©triques n'est pas requise.
La consolidation des serveurs â minimiser le nombre de nĆuds de calcul (consolidation). Elle a deux stratĂ©gies : Basic Offline Server Consolidation et VM Workload Consolidation Strategy.
La stratégie Basic Offline Server Consolidation minimise le nombre total de serveurs utilisés ainsi que le nombre de migrations.
La stratégie de base nécessite les métriques suivantes :
métrique
service
plugins
commentaire
compute.node.cpu.percent
aucun
Â
cpu_util
aucun
Â
ParamĂštres de la stratĂ©gie : migration_attempts â nombre de combinaisons pour trouver des candidats potentiels Ă l'arrĂȘt (par dĂ©faut, 0, pas de limites), period â intervalle de temps en secondes pour obtenir une agrĂ©gation statique Ă partir de la source de donnĂ©es de mĂ©triques (par dĂ©faut, 700).
Méthodes utilisées : migration, changement de l'état du service nova (change_nova_service_state).
La stratĂ©gie VM Workload Consolidation Strategy est basĂ©e sur un algorithme heuristique de premier ajustement (first-fit), qui se concentre sur la charge CPU mesurĂ©e et essaie de minimiser les nĆuds ayant une charge trop importante ou trop faible en tenant compte des contraintes de capacitĂ© des ressources. Cette stratĂ©gie offre une solution qui conduit Ă une utilisation plus efficace des ressources du cluster, en utilisant les quatre Ă©tapes suivantes :
- Phase de dĂ©chargement â traitement des ressources surconsommĂ©es;
- Phase de consolidation â traitement des ressources sous-utilisĂ©es;
- Optimisation de la solution â rĂ©duction du nombre de migrations;
- DĂ©sactivation des nĆuds de calcul non utilisĂ©s.
La stratégie nécessite les métriques suivantes :
métrique
service
plugins
commentaire
memory
aucun
Â
disk.root.size
aucun
Â
Les métriques suivantes ne sont pas obligatoires, mais augmentent la précision de la stratégie si elles sont disponibles :
métrique
service
plugins
commentaire
memory.resident
aucun
Â
cpu_util
aucun
Â
ParamĂštres de la stratĂ©gie : period â intervalle de temps en secondes pour obtenir une agrĂ©gation statique Ă partir de la source de donnĂ©es de mĂ©triques (par dĂ©faut, 3600).
Utilise les mĂȘmes mĂ©thodes que la stratĂ©gie prĂ©cĂ©dente. En savoir plus .
Ăquilibrage de charge â Ă©quilibrer la charge de travail entre les nĆuds de calcul. L'objectif comporte trois stratĂ©gies : Workload Balance Migration Strategy, Workload stabilization, Storage Capacity Balance Strategy.
La stratĂ©gie de migration basĂ©e sur la charge de travail lance des migrations de machines virtuelles en fonction de la charge de travail des nĆuds virtuels. La dĂ©cision de transfert est prise chaque fois que le % d'utilisation du CPU ou de la RAM du nĆud dĂ©passe le seuil spĂ©cifiĂ©. La machine virtuelle dĂ©placĂ©e doit rapprocher le nĆud de la charge de travail moyenne de tous les nĆuds.
Exigences
- Utilisation des processeurs physiques ;
- Au moins deux nĆuds de calcul physiques ;
- Le composant Ceilometer installĂ© et configurĂ© â ceilometer-agent-compute, fonctionnant sur chaque nĆud de calcul, et l'API Ceilometer, ainsi que la collecte des mĂ©triques suivantes :
métrique
service
plugins
commentaire
cpu_util
aucun
Â
memory.resident
aucun
Â
ParamÚtres de la stratégie :
paramĂštre
le type
par défaut
des commandes.
metrics
ChaĂźne
'cpu_util'
Les métriques sous-jacentes : 'cpu_util', 'memory.resident'.
seuil
Nombre
25.0
Seuil de charge de travail pour la migration.
period
Nombre
300
Période cumulée de Ceilometer.
La méthode utilisée est la migration.
La stabilisation de la charge de travail â une stratĂ©gie visant Ă stabiliser la charge de travail par l'utilisation de la migration Ă chaud. La stratĂ©gie est basĂ©e sur un algorithme d'Ă©cart-type et dĂ©termine s'il existe une surcharge dans le cluster, rĂ©agissant en exĂ©cutant des migrations de machines pour stabiliser le cluster.
Exigences
- Utilisation des processeurs physiques ;
- Au moins deux nĆuds de calcul physiques ;
- Le composant Ceilometer installĂ© et configurĂ© â ceilometer-agent-compute, fonctionnant sur chaque nĆud de calcul, et l'API Ceilometer, ainsi que la collecte des mĂ©triques suivantes :
métrique
service
plugins
commentaire
cpu_util
aucun
Â
memory.resident
aucun
Â
La stratĂ©gie d'Ă©quilibre de capacitĂ© de stockage (mise en Ćuvre depuis Queens) â la stratĂ©gie dĂ©place les disques en fonction de la charge des pools Cinder. La dĂ©cision de transfert est prise chaque fois que le ratio d'utilisation du pool dĂ©passe le seuil spĂ©cifiĂ©. Le disque dĂ©placĂ© doit rapprocher le pool de la charge moyenne de tous les pools Cinder.
Exigences et restrictions
- Au moins deux pools Cinder ;
- Capacité de migration des disques.
- ModĂšle de donnĂ©es du cluster â collecteur de donnĂ©es du cluster Cinder.
ParamÚtres de la stratégie :
paramĂštre
le type
par défaut
des commandes.
volume_threshold
Nombre
80.0
Valeur seuil des disques pour l'équilibrage des volumes.
La méthode utilisée est la migration de disque (volume_migrate).
Voisin bruyant â identifier et dĂ©placer le 'voisin bruyant' â machine virtuelle de faible prioritĂ© qui affecte nĂ©gativement les performances d'une machine virtuelle de haute prioritĂ© en raison d'une utilisation excessive du Last Level Cache. StratĂ©gie propre : Voisin bruyant (paramĂštre de stratĂ©gie utilisĂ© â cache_threshold (valeur par dĂ©faut â 35), une migration est lancĂ©e lorsque la performance chute au-dessous de la valeur spĂ©cifiĂ©e. Pour le fonctionnement de la stratĂ©gie, il est nĂ©cessaire d'activer les mĂ©triques LLC (Last Level Cache), dernier serveur Intel prenant en charge le CMT, ainsi que la collecte des mĂ©triques suivantes :
métrique
service
plugins
commentaire
cpu_l3_cache
aucun
Nécessite Intel .
ModÚle de données de cluster (par défaut) : Collecteur de modÚle de données du cluster Nova. Méthode appliquée : migration.
Le travail avec cet objectif via le Dashboard n'est pas entiÚrement réalisé dans Queens.
Optimisation thermique â optimiser le rĂ©gime thermique. La tempĂ©rature de sortie (air d'Ă©chappement) est l'un des systĂšmes de tĂ©lĂ©mĂ©trie thermique importants pour mesurer l'Ă©tat de la charge thermique / de travail du serveur. Un seul objectif existe â la stratĂ©gie basĂ©e sur la tempĂ©rature de sortie, qui prend des dĂ©cisions sur le transfert des charges de travail vers des nĆuds avec un rĂ©gime thermique favorable (tempĂ©rature de sortie la plus basse), lorsque la tempĂ©rature de sortie des hĂŽtes d'origine atteint un seuil configurable.
Pour faire fonctionner la stratégie, un serveur avec Intel Power Node Manager installé et configuré est nécessaire. , ainsi que la collecte des métriques suivantes :
métrique
service
plugins
commentaire
hardware.ipmi.node.outlet_temperature
IPMI
Â
ParamÚtres de la stratégie :
paramĂštre
le type
par défaut
des commandes.
seuil
Nombre
35.0
Seuil de température pour la migration.
period
Nombre
30
Intervalle de temps en secondes pour obtenir une agrégation statistique à partir de la source de données métriques.
La méthode utilisée est la migration.
Optimisation du flux d'air â optimiser le mode de ventilation. La stratĂ©gie propre est : Uniform Airflow utilisant la migration en direct. La stratĂ©gie commence la migration de la machine virtuelle chaque fois que le flux d'air du ventilateur du serveur dĂ©passe le seuil spĂ©cifiĂ©.
Pour faire fonctionner la stratégie, il est nécessaire :
- MatĂ©riel : nĆuds de calcul < avec prise en charge de NodeManager 3.0 ;
- Au moins deux nĆuds de calcul ;
- Composant ceilometer-agent-compute et Ceilometer API installĂ© et configurĂ© sur chaque nĆud de calcul, capable de rapporter avec succĂšs des mĂ©triques telles que le flux d'air, la puissance du systĂšme, la tempĂ©rature Ă l'entrĂ©e :
métrique
service
plugins
commentaire
hardware.ipmi.node.airflow
IPMI
Â
hardware.ipmi.node.temperature
IPMI
Â
hardware.ipmi.node.power
IPMI
Â
Pour faire fonctionner la stratégie, un serveur avec Intel Power Node Manager 3.0 ou version ultérieure installé et configuré est nécessaire.
Limitations : Le concept n'est pas destiné à la production.
Il est conseillé d'utiliser cet algorithme avec des audits continus, car une seule machine virtuelle est prévue pour migration à chaque itération.
Des migrations en direct sont possibles.
ParamÚtres de la stratégie :
paramĂštre
le type
par défaut
des commandes.
threshold_airflow
Nombre
400.0
Seuil de flux d'air pour la migration. L'unité est 0,1 CFM.
threshold_inlet_t
Nombre
28.0
Seuil de température à l'entrée pour la décision de migration.
threshold_power
Nombre
350.0
Seuil de puissance du systÚme pour la décision de migration.
period
Nombre
30
Intervalle de temps en secondes pour obtenir une agrégation statistique à partir de la source de données métriques.
La méthode utilisée est la migration.
Maintenance matĂ©riel â maintenance du matĂ©riel. La stratĂ©gie liĂ©e Ă cet objectif est la migration de zone. Cette stratĂ©gie est un outil pour une migration automatique et minimale efficace des machines virtuelles et des disques en cas de nĂ©cessitĂ© d'entretien du matĂ©riel. La stratĂ©gie Ă©tablit un plan d'action en fonction des poids : un ensemble d'actions ayant un poids plus important sera planifiĂ© avant d'autres. Il existe deux paramĂštres de configuration : les poids d'actions (action_weights) et la parallĂ©lisation (parallelization).
Restrictions : configuration des poids d'actions et de la parallélisation requise.
ParamÚtres de la stratégie :
paramĂštre
le type
par défaut
des commandes.
compute_nodes
array
TSSAA
NĆuds de calcul pour la migration.
storage_pools
array
TSSAA
NĆuds de stockage pour la migration.
parallel_total
integer
6
Nombre total d'actions devant ĂȘtre exĂ©cutĂ©es parallĂšlement.
parallel_per_node
integer
2
Nombre d'actions exĂ©cutĂ©es parallĂšlement pour chaque nĆud de calcul.
parallel_per_pool
integer
2
Nombre d'actions exécutées parallÚlement pour chaque pool de stockage.
priority
objet
TSSAA
Liste des priorités pour les machines virtuelles et les disques.
with_attached_volume
boolean
False
False â les machines virtuelles seront transfĂ©rĂ©es aprĂšs que tous les disques aient Ă©tĂ© dĂ©placĂ©s. True â les machines virtuelles seront transfĂ©rĂ©es aprĂšs la migration de tous les disques attachĂ©s.
ĂlĂ©ments du tableau des nĆuds de calcul :
paramĂštre
le type
par défaut
des commandes.
src_node
string
TSSAA
NĆud de calcul Ă partir duquel les machines virtuelles seront transfĂ©rĂ©es (obligatoire).
dst_node
string
TSSAA
NĆud de calcul vers lequel les machines virtuelles migrent.
ĂlĂ©ments du tableau des nĆuds de stockage :
paramĂštre
le type
par défaut
des commandes.
src_pool
string
TSSAA
Pool de stockage à partir duquel les disques sont transférés (obligatoire).
dst_pool
string
TSSAA
Pool de stockage vers lequel les disques sont transférés.
src_type
string
TSSAA
Type de disque source (obligatoire).
dst_type
string
TSSAA
Type de disque cible (obligatoire).
ĂlĂ©ments de prioritĂ© des objets :
paramĂštre
le type
par défaut
des commandes.
project
array
TSSAA
Noms des projets.
compute_node
array
TSSAA
Noms des nĆuds de calcul.
storage_pool
array
TSSAA
Noms des pools de stockage.
compute
enum
TSSAA
ParamĂštres de la machine virtuelle [âvcpu_numâ, âmem_sizeâ, âdisk_sizeâ, âcreated_atâ].
storage
enum
TSSAA
ParamĂštres des disques [âsizeâ, âcreated_atâ].
MĂ©thodes utilisĂ©es â migration des machines virtuelles, migration des disques.
Non classifiĂ© â objectif auxiliaire utilisĂ© pour faciliter le processus de dĂ©veloppement de stratĂ©gie. Ne contient pas de spĂ©cifications et peut ĂȘtre utilisĂ© Ă chaque fois que la stratĂ©gie n'est pas encore liĂ©e Ă un objectif existant. Cet objectif peut Ă©galement ĂȘtre utilisĂ© comme Ă©tape transitoire. La stratĂ©gie associĂ©e Ă cet objectif est Actuator.  Â
Création d'un nouvel objectif
Moteur de DĂ©cision Watcher dispose d'une interface de plugin âcible externeâ, qui permet d'intĂ©grer une cible externe pouvant ĂȘtre atteinte par le biais d'une stratĂ©gie.
Avant de créer une nouvelle cible, assurez-vous qu'aucune des cibles existantes ne répond à vos besoins.
Créer un nouveau plugin
Pour créer une nouvelle cible, vous devez : étendre la classe cible, implémenter la méthode de la classe get_name () pour renvoyer un identifiant unique de la nouvelle cible que vous souhaitez créer. Cet identifiant unique doit correspondre au nom du point d'entrée que vous déclarerez plus tard.
Ensuite, vous devez implĂ©menter la mĂ©thode de la classe get_display_name () pour renvoyer le nom affichĂ© traduit de la cible que vous souhaitez crĂ©er (n'utilisez pas de variable pour renvoyer la chaĂźne traduite afin qu'elle puisse ĂȘtre automatiquement rĂ©unie par l'outil de traduction.).
Implémentez la méthode de la classe get_translatable_display_name (), pour renvoyer la clé de traduction (en fait, le nom affiché en anglais) de votre nouvelle cible. La valeur renvoyée doit correspondre à la chaßne traduite dans get_display_name ().
Implémentez sa méthode get_efficacy_specification (), pour renvoyer la spécification d'efficacité de votre cible. La méthode get_efficacy_specification () renvoie une instance de Unclassified (), fournie par Watcher. Cette spécification d'efficacité est utile lors du développement de votre cible, car elle correspond à une spécification vide.
â
Architecture de Watcher (plus de détails ).

Composants

API Watcher â composant implĂ©mentant l'API REST fournie par Watcher. MĂ©canismes d'interaction : CLI, plugin Horizon, SDK Python.
Base de DonnĂ©es Watcher â base de donnĂ©es de Watcher.
Applier Watcher â composant mettant en Ćuvre l'exĂ©cution du plan d'action créé par le composant Moteur de DĂ©cision Watcher.
Moteur de DĂ©cision Watcher â composant responsable du calcul d'un ensemble d'actions potentielles d'optimisation Ă exĂ©cuter pour atteindre l'objectif d'audit. Si aucune stratĂ©gie n'est spĂ©cifiĂ©e, le composant choisit lui-mĂȘme la plus appropriĂ©e.
Ăditeur de MĂ©triques Watcher â composant qui collecte et calcule certaines mĂ©triques ou Ă©vĂ©nements et les publie Ă l'endpoint CEP. La fonctionnalitĂ© du composant peut Ă©galement ĂȘtre fournie par l'Ă©diteur Ceilometer.
Moteur de Traitement d'ĂvĂ©nements Complexes (CEP) â moteur de traitement d'Ă©vĂ©nements complet. Pour des raisons de performance, il peut y avoir plusieurs instances de CEP Engine fonctionnant simultanĂ©ment, chacune traitant un type spĂ©cifique de mĂ©trique / Ă©vĂ©nement. Dans le systĂšme Watcher, CEP dĂ©clenche deux types d'actions : â enregistrer les Ă©vĂ©nements / mĂ©triques pertinents dans la base de donnĂ©es de sĂ©ries temporelles ; â envoyer les Ă©vĂ©nements pertinents au composant Watcher Decision Engine, lorsque cet Ă©vĂ©nement peut influencer le rĂ©sultat de la stratĂ©gie d'optimisation actuelle, car le cluster Openstack n'est pas un systĂšme statique.
L'interaction entre les composants se fait via le protocole AMQP.
â
Schéma d'interaction avec Watcher

Résultats des tests de Watcher
- Sur la page Optimization â Action plans, une erreur 500 se produit (tant sur un Queens vierge que sur un stand avec des modules Tionic), elle n'apparaĂźt qu'aprĂšs le lancement de l'audit et la gĂ©nĂ©ration du plan d'actions, la page vide s'ouvre normalement.
- Dans l'onglet Action details, des erreurs surviennent, impossible d'obtenir l'objectif et la stratégie d'audit (tant sur un Queens vierge que sur un stand avec des modules Tionic).
- Les audits avec l'objectif Dummy (tests) sont créés et lancés correctement, les plans d'actions sont générés.
- Les audits avec l'objectif Unclassified ne sont pas créés, car l'objectif n'est pas fonctionnel et est destiné à un réglage intermédiaire lors de la création de nouvelles stratégies.
- Les audits avec l'objectif Workload Balancing (stratégie de balance de capacité de stockage) sont créés avec succÚs, cependant, le plan d'actions n'est pas généré. L'optimisation des pools de stockage n'est pas requise.
- Les audits avec l'objectif Workload Balancing (stratégie de migration de balance de charge de travail) sont créés avec succÚs, cependant, le plan d'actions n'est pas généré.
- Les audits avec l'objectif Workload Balancing (stratégie de stabilization de charge de travail) échouent.
- Les audits avec l'objectif Noisy Neighbor sont créés avec succÚs, cependant, le plan d'actions n'est pas généré.
- Les audits avec l'objectif Hardware maintenance sont créés avec succĂšs, le plan d'actions n'est pas gĂ©nĂ©rĂ© dans son intĂ©gralitĂ© (les indicateurs de performance sont gĂ©nĂ©rĂ©s, mais la liste d'actions elle-mĂȘme ne l'est pas).
- Les modifications dans les configs nova.conf (dans la section par dĂ©faut compute_monitors = cpu.virt_driver) sur les nĆuds de calcul et de contrĂŽle ne corrigent pas les erreurs.
- Les audits avec l'objectif Server Consolidation (stratégie Basic) échouent également.
- Les audits avec l'objectif Server Consolidation (stratégie de consolidation de charge de travail VM) échouent. Dans les logs, une erreur de récupération des données sources. Discussion de l'erreur, en particulier, .
Nous avons essayĂ© de spĂ©cifier dans le fichier de configuration de Watcher (cela nâa pas aidĂ© - rĂ©sultat des erreurs sur toutes les pages d'Optimization, revenir au contenu d'origine du fichier de configuration ne corrige pas la situation) :[watcher_strategies.basic]
datasource = ceilometer, gnocchi - Les audits dans le but de Saving Energy échouent avec une erreur. Selon les journaux, le problÚme vient de l'absence d'Ironic, cela ne fonctionnera pas sans service baremetal.
- Les audits pour Thermal Optimization Ă©chouent avec une erreur. Le traceback est le mĂȘme que pour Server Consolidation (stratĂ©gie de consolidation de charge de travail VM) (erreur de donnĂ©es source)
- Les audits pour Airflow Optimization échouent avec une erreur.
On rencontre également les erreurs suivantes lors de la fin de l'audit. Le traceback se trouve dans les journaux decision-engine.log (état du cluster non défini).
â Discussion sur l'erreur
Conclusion
Le résultat de nos deux mois de recherches est que pour obtenir un systÚme d'équilibrage de charge complet et fonctionnel, nous devrons, dans ce domaine, nous consacrer à l'amélioration des outils pour la plateforme Openstack.
Watcher s'est rĂ©vĂ©lĂ© ĂȘtre un produit sĂ©rieux et en rapide dĂ©veloppement avec un Ă©norme potentiel, pour une utilisation complĂšte de lequel un travail important et sĂ©rieux sera nĂ©cessaire.
Mais nous en reparlerons dans les prochains articles de la série.
Source : habr.com
