Arrêt automatique de serveurs basé sur un DNS N. RUDOLF JI 2016
Objectifs Arrêt propre des serveurs sur un problème d'infrastructure : température, électrique... Humainement impossible d'intervenir montée en température de 1°C / min Eviter la casse matérielle Etager pour faire survivre le plus longtemps les services critiques JI 20162
Options Annonce par broadcast Suffisamment sur le réseau : Netbios, Appletalk, mdns, canon-bjnp2, LLMNR (Link-Local Multicast Name Resolution), Bonjour, … Ecrire un protocole client / serveur Un de plus ! Utiliser quelque chose d'existant DNS ? : client / serveur JI 20163
DNS Largement répandu Adapté aux petites requêtes Plutôt performant …. Pas de service supplémentaire à surveiller Peu de développement JI 20164
Architecture JI Requêtes Dynamic Updates RFC 2136 Application : baies, capteurs, … UPS Capteurs de température SNMP
DNS Ce n'est qu'une base de données Champs Habituels A, AAAA, CNAME, MX Mais aussi TXT RFC 1464 JI Using the Domain Name System to store arbitrary string attributes … The Domain Name System is designed to store information that has both a predefined type and structure. Examples include IP addresses of hosts and names of mail exchangers. It would be useful to take advantage of the widespread use and scalability of the DNS to store information that has not been previously defined. … host.widgets.com IN TXT "printer=lpr5" sam.widgets.com IN TXT "favorite drink=orange juice"
Les champs DNS Sous-domaine dédié [nom].sbg.in2p3.fr Le nom "DNS" est le nom des baies baie25a en FQDN: baie25a.[nom].sbg.in2p3.fr Champs TXT retournés par baie status=[value] priority=[value] Champ TXT global heartbeat=[date+time] JI 20167
Les champs DNS Valeurs du champ status [value]=-1 indisponible : passer au DNS suivant Ne pas tenir compte des autres champs [value]=0 fonctionnement normal Vérifier le champ priority [value]=1 mode de maintenance Ne pas tenir compte des autres champs Ex. : consignation temporaire par appui sur bouton poussoir JI 20168
Les champs DNS Valeurs du champ priority [value]=0 fonctionnement normal [value]=xx arrêt des serveurs en priorité <= xx permet d'étager l'arrêt des serveurs en cas de défaut général [value]=100 arrêt immédiat de TOUS les serveurs JI 20169
Armoire autonome Paramétrage en fonction de la température 0 à 29°Cpriority=0 30 à 34°Cpriority=10 > 35°Cpriority=100 JI Baie25a Capteurs de température °C priority=0 25°C priority=0 30°C priority=10 35°C priority=100 X X X X X
Gestion commune Paramétrage en fonction de la température 0 à 29°Cpriority=0 30 à 34°Cpriority=10 > 35°Cpriority=100 JI Capteurs de température 20°C priority=0 25°C priority=0 30°C priority=10 35°C priority= XXXXX XXXXX Baie25a Baie25b Baie25c Baie25d Baie25e Baie25m Baie25n Baie25o Baie25p Baie25q
Etapes du projet : logiciel 2009 Serveur : BD Access Clients : agent python Gestion climatisation Serveur : démon Python Fichier configuration YAML Interface graphique Qt Clients : agent python avec LLDP (switch Ethernet) Gestion climatisation + électricité Alerte SMS JI
Etapes du projet : matériel 2009 CMC II de Rittal Limitations… : GTB Visualisation globale Collecte des défauts Historique Automate WAGO JI I/O Master (4 I/O max.)
Autres réalisations JI Exemple : animalerie (éphéméride)
Contributeurs Serveur Ch. Helfer N. Rudolf Agent python Y. Patois C. Muller (pour l'adaptation Windows) Hardware Ch. Helfer N. Rudolf JI