3.3 KiB
Usage
Ce script Powershell permet de créer un point d'écoute pour permettre un check agent via un serveur HAProxy.
Le script calcule automatiquement le poids de la machine sur lequel il tourne en vérifiant l'usage RAM et / ou CPU selon des critères de facteur d'importance, de valeur de réference pour le calcul ou de limite haute forçant le mode drain (aucune nouvelle connexion depuis haproxy)
Fonctionne sur
Testé en fonctionnement dans les environnements suivants ;
OS
Windows 11
Version powershell
Powershell 5.1 Powershell 7.4
Fonctionnement
Ce script créé un point d'écoute TCP sur un port donné.
Lorsqu'un client s'y connecte, il lance le calcul du poids sur la machine où tourne le script puis renvoie l'information sous un format de tableau de bytes suivi d'un retour à la ligne.
Lorsqu'un calcul RAM ou CPU dépasse la limite définie dans CPU_THRESHOLD ou RAM_THRESHOLD, il envoie l'information "drain 0%" au serveur HAProxy. Dès que la valeur revient sous la limite, elle envoie une valeur calculée toujours précédée de up (ex : "up 12%")
Fichier de configuration
L'emplacement du fichier de configuration est défini en début de script. Si ce fichier n'existe pas, il est créé en utilisant des valeurs par défaut.
Il est chargé au démarrage du script et un changement de valeur nécessite un arrêt de celui ci.
Activation / désactivation de vérification RAM ou CPU
RAM_ENABLED et CPU_ENABLED sont à 1 si actifs, 0 si inactifs.
S'ils sont absents ou à une valeur autre, ils sont désactivés.
VALUE et THRESHOLD
CPU_THRESHOLD ou RAM_THRESHOLD correspond à une valeur maximale en pourcent à laquelle l'agent renverra forcément une demande de mise en drain (plus de nouvelle ouverture de session).
Exemple : CPU_THRESHOLD = 80 > la machine passe en mode drain si le processeur est détecté à 81% d'utilisation ou plus
CPU_VALUE ou RAM_VALUE définit le pourcentage d'usage de réference utilisé pour le calcul du poids, selon le facteur d'importance de la valeur.
Le calcul de poids se base sur une valeur de départ de 100, et chaque élément calculé se soustrait à cette valeur de départ
Exemple : CPU_VALUE = 50 et CPU_IMPORTANCEFACTOR à 100
Si l'usage du CPU est à 10, la valeur calculée sera :
10/50*100 = 20
100 - 20 = 80
Le script renverra à HAProxy la valeur "up 80%"
La valeur de THRESHOLD peut être inférieure à VALUE.
Ainsi, si on créé un CPU_THRESHOLD à 80 et un CPU_VALUE à 90, le poids de la machine va diminuer progressivement jusqu'à arriver à 80% d'utilisation CPU, mais prendra en compte dans le calcul 90% de son utilisation.
IMPORTANCEFACTOR
Le facteur d'importance permet de réduire le calcul du score pour une métrique afin de la rendre moins importante.
Un IMPORTANCEFACTOR à 100 veut dire que la valeur est prise en compte à 100% de son calcul initial.
Un IMPORTANCEFACTOR à 50 ne prendra que la moitié de la valeur dans le calcul initial de poids.
Exemples pour l'IMPORTANCEFACTOR
avec un RAM_VALUE à 80 et un RAM_IMPORTANCEFACTOR à 100
Ram utilisée : 60%
60 / 80 * 100 = 75
100 - 75 = 25
Poids de la machine renvoyé : 25%
avec un RAM_VALUE à 80 et un RAM_IMPORTANCEFACTOR à 50
Ram utilisée : 60%
60 / 80 * 50 = 37.5 (arrondi à 37)
100 - 37 = 63
Poids de la machine renvoyé : 63%