Chez Rackslab, nous cherchons toujours des moyens de rendre la gestion des infrastructures informatiques plus efficace. Dans RacksDB v0.5.0, nous avons ajouté le support de l’intégration entre RacksDB et ClusterShell, pour offrir un nouveau niveau de flexibilité et de contrôle pour gérer vos clusters HPC & IA.
Qu’est-ce que RacksDB?
Pour ceux qui découvrent RacksDB, il s’agit d’un logiciel open source pour modéliser et visualiser vos infrastructures informatiques en datacenter, à partir de simple fichiers YAML validés par un schéma. Le logiciel est conçu pour stocker les informations sur votre infrastructure physique, avec les racks, les serveurs, les équipements réseau, etc. Avec RacksDB, vous pouvez constituer une description de référence de votre infrastructure, facile à accéder et à interfacer avec les autres components de votre pile logicielle.
Qu’est-ce que ClusterShell?
ClusterShell est un outil puissant pour gérer et automatiser des clusters large échelle. Il propose une interface simple pour exécuter des commandes en parallèle sur de nombreux nœuds, organisés en groupes, et automatiser des tâches répétitives sur les clusters. Si vous travaillez sur des infrastructures large échelle, ClusterShell peut réduire significativement la complexité à gérer et exécuter des commandes sur de nombreux nœuds à la fois.
RacksDB en groupes externes
Dans RacksDB, les serveurs et les autres équipements peuvent être associés à des tags. ClusterShell a une notion de groupe de nœuds, qui permet de désigner un ensemble de nœuds avec un nom symbolique. Il est simple de s’appuyer sur les tags dans RacksDB pour former des groupes dans ClusterShell (ex: le groupe compute représente tous les nœuds qui sont associés à ce tag dans RacksDB).
Par exemple, considérons une infrastructure de type cluster nommée atlas dans
RacksDB. Vous pouvez créer un fichier de définition de groupes externes
ClusterShell /etc/clustershell/groups.conf.d/racksdb.conf
avec ce contenu :
[racksdb]
map: racksdb nodes --infrastructure atlas --tags $GROUP --list
all: racksdb nodes --infrastructure atlas --list
list: racksdb tags --infrastructure atlas --on-nodes
reverse: racksdb tags --node $NODE
Avec cette simple configuration, ClusterShell peut extraire les groupes et les
nœuds de RacksDB. Par exemple, avec la commande nodeset
:
- Obtenir la liste des groupes :
$ nodeset -s racksdb -l
@racksdb:admin
@racksdb:compute
@racksdb:login
- Obtenir la liste des nœuds dans le groupe compute (ie. associés au tag compute dans la base de données) :
$ nodeset -f @racksdb:compute
atcn[1-2]
- Obtenir la liste de tous les nœuds du cluster :
$ nodeset -f -s racksdb -a
atadmin,atcn[1-2],atlogin
ClusterShell peut exécuter des commandes sur les nœuds de ces groups avec
clush
:
# clush -bw @racksdb:compute uname
---------------
atcn[1-2] (2)
---------------
Linux
Plus d’une infrastructure ?
Si vous avez besoin d’extraire des groupes de plusieurs infrastructures dans
RacksDB, une approche simple est d’utiliser la fonctionnalité des
sections avec de sources multiples
dans ClusterShell et la variable $GROUP
. Par exemple, dans
/etc/clustershell/groups.conf.d/racksdb.conf
:
[trinity,atlas]
map: racksdb nodes --infrastructure $SOURCE --tags $GROUP --list
all: racksdb nodes --infrastructure $SOURCE --list
list: racksdb tags --infrastructure $SOURCE --on-nodes
reverse: racksdb tags --node $NODE
De cette façon, les commandes RacksDB sont exécutées pour de multiples infrastructures:
$ nodeset -f @trinity:compute
tricn[1-4]
$ nodeset -f @atlas:compute
atcn[1-2]
Encore plus générique !
Une autre approche encore plus générique est de découper la source avec le shell dans la définition de groupes externes ClusterShell :
[racksdb]
map: GRP=$GROUP; racksdb nodes --infrastructure ${GRP%:*} --tags ${GRP#*:} --list
all: racksdb nodes --list
reverse: racksdb tags --node $NODE
De cette façon, les noms d’infrastructure ne sont pas mentionnés dans la configuration ClusterShell et toutes les infrastructures définies dans RacksDB peuvent être interrogées :
$ nodeset -f @racksdb:trinity:compute
tricn[1-4]
$ nodeset -f @racksdb:atlas:compute
atcn[1-2]
Conclusion
Avec cette intégration, les groupes ClusterShell sont toujours synchronisés avec RacksDB. Modifiez vos infrastructures dans RacksDB, tous vos scripts et vos outils sont automatiquement à jour. Ne manquez plus aucun nœud !
Pour des explications plus détaillées, vous pouvez vous référer à la documentation RacksDB et à la documentation ClusterShell.
Besoin de support ? Rackslab propose du support commercial et de services professionnels pour RacksDB (formations, développement de fonctionnalités, etc). Veuillez nous contacter pour plus de détails. Vous pouvez également demander de l’aide à la communauté.