Le monde est le cloud. Cependant, en fonction de l'application, vous souhaiterez peut-être exécuter l'ordinateur qui martèle à portée de main. Il s'agit plutôt de supercalcul uniquement en laissant l'ordinateur grogner devant vous. Le cluster de calcul haute performance [HPC] est utilisé à cette fin. Une des méthodes pour réaliser un cluster HPC (un terme que je n'ai pas beaucoup entendu récemment) est Beowulf. Beowulf signifie "cluster HPC réalisé en connectant un groupe de nœuds préparés exclusivement pour le calcul avec un réseau haut débit basé sur Unix libre", et avec cette définition, "Spacon" dans le domaine de la bioinformatique que je connais bien. La plupart d'entre eux seront Beowulf.
Voici un peu plus de détails sur les raisons pour lesquelles l'industrie de la bioinformatique a (toujours) besoin d'un environnement HPC sur site.
Tout d'abord, je parlais du travail lié aux données de séquenceur de nouvelle génération, mais il existe de nombreux calculs prétendument parallèles [^ 1]. Vous pouvez vous attendre à ce que le temps de calcul soit de 1/10 simplement en divisant l'entrée en 10 parties égales sans penser à rien. Par conséquent, il est facile de bénéficier des clusters HPC de type Beowulf. Deuxièmement, bien que la vitesse de calcul soit tolérante et qu'il y ait de nombreuses tâches à attendre même si la puissance du processeur est faible, la taille des données d'entrée est énorme, de sorte que la quantité de stockage et de transfert réseau a tendance à être importante. Ceci est totalement incompatible avec un environnement cloud qui se compose d'un faible prix du processeur et d'un volume de stockage / transfert réseau élevé. Et, en raison de la caractéristique qu'il est uniquement nécessaire de recalculer à partir des pires données brutes, ne nécessite pas de fiabilité absolue ou de performances d'accès à haut débit à partir du stockage. Vous avez besoin d'un grand stockage bon marché. Troisièmement, les problèmes liés à la vie privée dans la recherche humaine. La situation évolue, mais la conservation des données en dehors de l'organisation ou à l'étranger reste un défi. Pour cette raison, le choix d'avoir un cluster HPC sur site (et dans certains cas de créer le vôtre) dans l'industrie de la bioinformatique ne sera pas si mal en 2020.
[^ 1]: Il semble y avoir une traduction telle que parallèle évident, parallèle étonnant, parallèle stupide ……. Selon Wikipedia anglais, un embarras de richesse est une «propriété riche» et une «richesse». Cela vient d'une phrase ironique telle que «j'en ai marre». Bien sûr, tout en disant parallèlement embarrassant, en réalité, je suis reconnaissant pour la facilité de parallélisation.
À propos, il existe des logiciels pour réaliser la construction d'un cluster HPC homebrew de type Beowulf sur site, mais il s'agit d'un produit open source avec un haut degré de liberté basé sur la distribution Linux relativement récente, et il est toujours activement développé. Le plus célèbre d'entre eux est le projet eXtreme Cloud Administration Kit (xCAT) parrainé par IBM https://xcat.org/.
L'auteur avait créé son propre HPC avec xCAT il y a quelques années, mais récemment, il est devenu nécessaire de faire revivre l'ancien Scyld (le système HPC propriétaire de Penguin Computing) avec le nouveau xCAT, donc au lieu d'un mémo à nouveau J'ai décidé d'écrire cet article. La documentation xCAT est meilleure qu'avant, mais reste difficile. J'ai l'impression que la configuration a tendance à créer une dépendance à moins que vous ne lisiez et compreniez tout avant de commencer l'installation. Ce n'est pas simple parce que les informations nécessaires sont distribuées et que les commandes de haut niveau qui définissent implicitement et les commandes de bas niveau se heurtent les unes aux autres. Étant donné que cet article est le résultat d'essais et d'erreurs luttant avec le document, il est probable qu'il y ait des mensonges et des malentendus. Cependant, ces notes auraient du sens si elles n'étaient que des références.
xCAT est libre de choisir entre RedHat / CentOS et Linux basé sur PowerPC (si pris en charge). Pour mon travail lié à la bioinformatique, j'ai décidé d'utiliser un Ubuntu relativement nouveau car il est nécessaire de construire des logiciels open source à partir de sources qui nécessitent parfois un environnement relativement nouveau même s'il s'agit d'un "serveur". Si votre objectif principal est les outils propriétaires, CentOS peut être plus approprié.
--http: //xcat.org/ Page officielle du projet xCAT --https: //xcat-docs.readthedocs.io/en/stable/ Document officiel
10.54.0.0 / 16
--WAN NIC 192.168.0.0 / 16
Se connecter au côté WAN / Internet10.54.0.0 / 16
Puisqu'il s'agit de la dernière version d'Ubuntu prise en charge par xCAT, j'ai installé Ubuntu 18.04-4 LTS conformément à la loi. Cependant, j'ai en fait installé la version dérivée Lubuntu 18.04-4 dans le but de l'interface utilisateur la plus légère. Comme cela sera décrit plus tard, Ubuntu Server 18.04 - ** 2 ** a dû être utilisé pour le groupe de nœuds de calcul.
Dans le cas de la machine cible cette fois, le symptôme que seul le curseur de la souris n'est pas affiché sur l'installateur Lubuntu peut être évité en spécifiant nomodeset
dans l'option du noyau. Il semble que la fonction graphique Intel soit désactivée. Après l'installation, terminer le réglage du nom d'hôte (scyld.cluster), l'attribution d'une adresse IP fixe côté WAN, le réglage NTP, la mise à niveau apt, le réglage minimum de l'utilisateur / groupe, etc.
N'oubliez pas de configurer le transfert entre le réseau à l'intérieur du cluster et le réseau côté WAN. L'article Créer un serveur NAT avec ufw sur Ubuntu est utile.
Commencez à travailler après sudo su-
.
Utilisez la dernière version stable xCAT 2.15.1 (publiée le 6 mars 2020) au moment de la rédaction.
# mkdir /root/xCATsetup #Sauf indication contraire, je travaillerai ici pour tout
# cd /root/xCATsetup
# wget \
https://raw.githubusercontent.com/xcat2/xcat-core/master/xCAT-server/share/xcat/tools/go-xcat \
-O - > /tmp/go-xcat
# chmod +x /tmp/go-xcat
# /tmp/go-xcat install #Cette fois, installez la version stable de xcat
L'emplacement d'installation par défaut du système xCAT est / opt / xcat
.
# source /etc/profile.d/xcat.sh #Paramètre PATH
# lsxcatd -a #Affichage de la version xCAT
Version 2.15.1 (git commit ab6295bdc1deb1827922d47755bfc68adec12389, built Wed Mar 4 16:45:39 EST 2020)
This is a Management Node
dbengine=SQLite
# tabdump site #Afficher la table des sites de la base de données interne xCAT
#key,value,comments,disable
"blademaxp","64",,
"fsptimeout","0",,
"installdir","/install",,
(Omis ci-dessous)
Les paramètres xCAT sont gérés par l'objet xCAT et la base de données xCAT gérée par deux concepts. Le premier est exploité par des commandes telles que mkdef, lsdef, chdef et rmdef. Ce dernier est exploité par des commandes telles que tabdump, tabedit et chtab. La base de données xCAT est en fait une table gérée par RDB (SQLite par défaut), et il semble que les objets et les tables aient une association plusieurs-à-plusieurs. Il semble que le premier ou le second fonctionne de manière pratique en fonction de la situation de réglage.
Procédez aux réglages en fonction de Définir les attributs dans la table du site.
# chdef -t site domain="cluster" #Nom de domaine des nœuds scyld.Pour cluster etc.
# chdef -t site forwarders="10.54.0.1" #Passerelle par défaut vue depuis le groupe Compute Node
# chdef -t site master="10.54.0.1" #Adresse IP du nœud de gestion vue depuis le groupe de nœuds de calcul
# chdef -t site nameservers="10.54.0.1" #Adresse IP du groupe DNS séparée par des virgules comme vue depuis le groupe Compute Node
# makedns -s #Initialisation du DNS exécuté sur le nœud de gestion. Un avertissement lié à IPv6 apparaît mais est ignoré.
# nslookup scyld.cluster #Vérification du fonctionnement DNS
Procédez aux paramètres réseau conformément à Définir les attributs dans le tableau des réseaux. Commencez par vérifier le réglage automatique.
# tabdump networks
#netname,net,mask,mgtifname,gateway,dhcpserver,tftpserver,nameservers,ntpservers,logservers,dynamicrange,staticrange,staticrangeincrement,nodehostname,ddnsdomain,vlanid,domain,mtu,comments,disable
"10_0_0_0-255_255_0_0","10.0.0.0","255.255.0.0","bond0","<xcatmaster>",,"<xcatmaster>",,,,,,,,,,,"1500",,
"192_168_0_0-255_255_0_0","192.168.0.0","255.255.0.0","enp1s0f1","192.168.0.1",,"<xcatmaster>",,,,,,,,,,,"1500",,
Cette fois, je voudrais utiliser DHCP pour allouer les nœuds de l'ordinateur immédiatement après le démarrage dans la plage allant de «10.54.3.1» à «10.54.3.254» sur le réseau interne. Le réseau interne est également connecté au preset bond0 (en utilisant la liaison / agrégation Ethernet). Par conséquent, définissez comme suit + démarrez le service DHCP.
Tout d'abord, le nom de réseau (nom de l'objet) de la table des réseaux est trop long, donc modifiez-le comme suit sur l'éditeur qui démarre tabedit network
.
# tabdump networks
#netname,net,mask,mgtifname,gateway,dhcpserver,tftpserver,nameservers,ntpservers,logservers,dynamicrange,staticrange,staticrangeincrement,nodehostname,ddnsdomain,vlanid,domain,mtu,comments,disable
"clusternet","10.54.0.0","255.255.0.0","bond0","<xcatmaster>",,"<xcatmaster>",,,,,,,,,,,"1500",,
"wan","192.168.0.0","255.255.0.0","enp1s0f1","192.168.0.1",,"<xcatmaster>",,,,,,,,,,,"1500",,
# makehosts -n
Vous pouvez maintenant faire référence au nom de l'objet avec clusternet
et wan
. Modifiez ensuite le type d'objet réseau et le nom d'objet clusternet. Configurez DHCP pour distribuer 10.54.3.1 à 10.54.3.254.
# chdef -t network -o clusternet dynamicrange="10.54.3.1-10.54.3.254"
# makedhcp -n
Définir le mot de passe du compte root
# tabdump passwd
# chtab key=system passwd.username=root passwd.password=root
# chtab ip
Docs »Guide d'administration» Gérer les clusters »IBM POWER LE / OpenPOWER Suivez les instructions ci-dessous Travailler sur. En raison du support d'IBM, le projet xCAT est décrit à l'aide d'une machine IBM basée sur PowerPC dans le document, mais le travail est presque le même dans l'environnement Linux sur x86_64, qui est l'environnement de la plupart des utilisateurs.
Tout d'abord, consultez Hardware Discovery & Define Node. Les choix de la méthode sont le réglage manuel, la reconnaissance par MTMS (Type de Machine et Série MAchene) comme réglage automatique, la reconnaissance par le numéro de port de connexion au concentrateur de commutation et la reconnaissance en fonction de l'ordre.
Le nombre de nœuds de calcul étant cette fois-ci de 10, suivez les instructions du document et suivez les instructions dans [Authentification by MTMS](https://xcat-docs.readthedocs.io/en/stable/guides/admin-guides/manage_clusters/ppc64le/discovery/mtms /index.html) est sélectionné. La méthode recommandée est «Pour l'adresse IP BMC / IPMI, commencez par recevoir l'allocation DCHP, puis définissez l'adresse IP statique d'un autre sous-réseau». En général, BMC / IPMI peut souvent obtenir une adresse IP de manière dynamique à partir de DHCP. Cependant, dans mon environnement, l'adresse IP statique de BMC / IPMI a été définie à l'avance sur 10.54.0.1-10, je vais donc l'utiliser telle quelle, bien qu'elle soit un peu différente du document.
# bmcdiscover --range 10.54.0.1-254 -u ADMIN -p ADMIN -z -w
# bmcdiscover --range 10.54.0.1-254 -u adimn -p admin -z -w
Writing node-0025901d9c29 (10.54.150.10,Winbond,,admin,admin,mp,bmc,0025901d9c29,,) to database...
node-0025901d9c29:
objtype=node
groups=all
bmc=10.54.150.10
cons=ipmi
mgt=ipmi
mtm=Winbond
bmcusername=admin
bmcpassword=admin
(Omis)
# lsdef /node-.*
Object name: node-0025901d8c1e
bmc=10.54.150.3
bmcpassword=admin
bmcusername=admin
(Omis)
Par défaut, bmcdiscover
fait référence à key = ipmi
dans la table passwd
, mais sur certaines machines, il y avait différentes ou plusieurs combinaisons utilisateur / mot de passe (machines après 2020). Il semble que cela varie d'un individu à l'autre), et bmcdiscover a été publié deux fois dans des combinaisons différentes. Quoi qu'il en soit, il semble qu'il pourrait reconnaître le BMC / IPMI de toutes les machines et écrire dans la base de données interne xCAT. Créez un fichier de configuration statique pour chaque machine en fonction des informations ainsi créées.
# bmcdiscover --range 10.54.0.1-254 -u ADMIN -p ADMIN -z > predefined.stanza
# bmcdiscover --range 10.54.0.1-254 -u adimn -p admin -z >> predefined.stanza
Modifiez predefined.stanza dans l'éditeur.
node-0025901d9e23:
objtype=node
groups=all
bmc=10.54.150.1
cons=ipmi
mgt=ipmi
mtm=Winbond
bmcusername=admin
bmcpassword=admin
À
cn02:
ip=10.54.2.2
netboot=xnba
mac=XX:YY:ZZ:XX:YY:ZZ
objtype=node
groups=compute2,all
chain="runcmd=bmcsetup"
bmc=10.54.150.1
cons=ipmi
mgt=ipmi
mtm=Winbond
bmcusername=admin
bmcpassword=admin
Changez pour chaque nœud de calcul, comme dans. ʻIp = 10.54.2.2est l'adresse IP statique de ce nœud de calcul. Écrivez-les ensemble comme une base de données interne. Cependant, dans le cas de l'auteur, les informations relatives au numéro de série n'ont pas pu être correctement saisies. J'ai également écrit manuellement l'adresse MAC du NIC (pas l'IPMI). Ajout de
groups = compute2, all et
chain =" runcmd = bmcsetup ". Vous pouvez maintenant faire référence à tout le nœud de calcul avec
compute2`. Puisque l'auteur utilise un autre xCAT, "2" est ajouté ici.
# cat predefined.stanzas | mkdef -z
Lorsqu'il y a un changement, vous pouvez écraser le paramètre avec mkdef -f -z
.
Ce n'est pas grave si l'état d'alimentation de tous les nœuds de calcul peut être affiché avec rpower compute2 status
.
# tabedit hosts #Modifier avec l'éditeur comme ci-dessous
# tabdump hosts
#node,ip,hostnames,otherinterfaces,comments,disable
"compute2","|\D+(\d+)|10.54.2.($1+0)|",,"|\D+(\d+)|cn($1)-ipmi:10.54.150.($1+0)|",,
Pour envoyer le système d'exploitation aux nœuds de calcul
Si la configuration réseau dispose de suffisamment de bande passante et que chaque nœud de calcul dispose de suffisamment de mémoire, l'installation sans fil, qui peut tout gérer à partir du nœud de gestion en même temps, est le premier choix.
Il semble que le système d'exploitation pris en charge par la version actuelle de xCAT doit être inclus dans la liste des packages qui apparaît dans ls -L / opt / xcat / netboot / * / *. Pkglist
. Pour Ubuntu, en regardant ls -L / opt / xcat / netboot / ubuntu / *. Pkglist
, il semble que 18.04 et 18.04-2 soient pris en charge. De plus, il semble que le fichier iso de Lubuntu ne soit pas bien reconnu, alors ici je télécharge doucement unbuntu-18.04.2-server.amd64.iso, puis je crée une osimage.
# mkdir -p /install/iso
# cd /install/iso
# wget http://releases.ubuntu.com/18.04.2/ubuntu-18.04.2-server-amd64.iso
# copycds ubuntu-18.04.2-server-amd64.iso
# lsdef -t osimage
ubuntu18.04.2-x86_64-install-compute (osimage)
ubuntu18.04.2-x86_64-install-service (osimage)
ubuntu18.04.2-x86_64-netboot-compute (osimage)
ʻUbuntu18.04.2-x86_64-netboot-compute` est l'image du système d'exploitation pour l'installation sans disque. Des modifications telles que l'ajout de packages en fonction de l'objectif peuvent être ajoutées à cette image du système d'exploitation. Cette fois, j'ai décidé de faire ces changements nécessaires dans le script shell (postscript) après le démarrage du système d'exploitation et de continuer.
# genimage ubuntu18.04.2-x86_64-netboot-compute #Ça prend du temps
# packimage ubuntu18.04.2-x86_64-netboot-compute
# mknb x86_64
La dernière commande mknb
peut être lue comme si vous n'aviez pas besoin de la démarrer manuellement, mais si vous ne le faites pas, le nœud de calcul sera lu en premier après le démarrage/ tftpboot / xcat / xnba / nets / 10.54.0.0_16
(Et * .elilo, * .uefi) ne semble pas être bien généré.
# chdef compute2 -p chain="bmcsetup,osimage=ubuntu18.04.2-x86_64-netboot-compute"
# makehosts -n compute2
# makedns -s ; makedhcp -n ; makedhcp -a
# rpower compute2 boot
Il est plus sûr de réexécuter makedns -s; makedhcp -n; makedhcp -a
avant de démarrer le nœud de calcul. Eh bien, si vous pouvez vous connecter avec ssh cn01
avec cela, il n'y a pas de problème, mais cela n'a pas fonctionné dans mon environnement.
Rendez la console distante du groupe de nœuds de calcul disponible à des fins de débogage. Définissez avec makegocons
et commencez par rcons <node>
. La fin de rcons est «c.» après «ctrl-e».
# makegocons
Starting goconserver service ...
cn10: Created
cn01: Created
(Omis)
cn06: Created
# rcons cn01
[Enter `^Ec?' for help]
goconserver(2020-06-19T09:47:14+09:00): Hello 192.168.0.21:41898, welcome to the session of cn01
Si le nœud de calcul reste bloqué dans getdestiny, par exemple dans syslog
Jun 18 17:10:50 10.54.3.2 [localhost] xcat.genesis.doxcat: Getting initial certificate --> 10.54.0.1:3001
Jun 18 17:11:00 10.54.3.2 [localhost] xcat.genesis.doxcat: Running getdestiny --> 10.54.0.1:3001
Jun 18 17:11:10 10.54.3.2 [localhost] xcat.genesis.doxcat: Received destiny=
Jun 18 17:11:10 10.54.3.2 [localhost] xcat.genesis.doxcat: The destiny=, destiny parameters=
Jun 18 17:11:10 10.54.3.2 [localhost] xcat.genesis.doxcat: Unrecognized directive (dest=)
Jun 18 17:11:19 10.54.3.2 [localhost] xcat.genesis.doxcat: ... Will retry xCAT in 70 seconds
Si vous ne pouvez pas continuer pour de telles raisons, reconfirmer qu'il n'y a pas d'erreurs de configuration dhcp ou dns peut résoudre le problème. Vérifiez les fautes de frappe sur tabedit site
etc. makedns -s; makedhcp -n; makedhcp -a; rpower compute2 boot
.
De plus, Compute Node utilise l'adresse IP attribuée par DHCP au lieu d'utiliser l'adresse IP spécifiée pour la carte réseau principale (pas BMC / IPMI) définie par cat predefined.stanza | mkdef -z
.
Jun 19 10:20:10 10.54.3.21 [localhost] xcat.genesis.dodiscovery: Beginning echo information to discovery packet file...
Jun 19 10:20:11 10.54.3.21 [localhost] xcat.genesis.dodiscovery: Discovery packet file is ready.
Jun 19 10:20:11 10.54.3.21 [localhost] xcat.genesis.dodiscovery: Sending the discovery packet to xCAT (10.54.0.1:3001)...
Jun 19 10:20:11 10.54.3.21 [localhost] xcat.genesis.dodiscovery: Sleeping 5 seconds...
Jun 19 10:20:11 10.54.3.21 [localhost] xcat.genesis.minixcatd: The request is processing by xCAT master...
Jun 19 10:20:12 scyld xcat[17879]: xcatd: Processing discovery request from 10.54.3.21
Jun 19 10:20:12 scyld xcat[17879]: xcat.discovery.aaadiscovery: (00:25:90:1d:6e:ae) Got a discovery request, attempting to d
Jun 19 10:20:12 scyld xcat[17879]: xcat.discovery.blade: (00:25:90:1d:6e:ae) Warning: Could not find any nodes using blade-b
Jun 19 10:20:12 scyld xcat[17879]: xcat.discovery.switch: (00:25:90:1d:6e:ae) Warning: Could not find any nodes using switch
Jun 19 10:20:12 scyld xcat[17879]: xcat.discovery.mtms: (00:25:90:1d:6e:ae) Warning: Could not find any node for Super Micro
Jun 19 10:20:12 scyld xcat[17879]: xcat.discovery.zzzdiscovery: (00:25:90:1d:6e:ae) Failed for node discovery.
Jun 19 10:20:12 scyld xcat[17879]: xcat.discovery.zzzdiscovery: Notify 10.54.3.21 that its findme request has been processed
Jun 19 10:20:11 10.54.3.21 [localhost] xcat.genesis.minixcatd: The request is already processed by xCAT master, but not matc
Dans les situations où un nœud de calcul demande au serveur de gestion de se découvrir mais est rejeté car son adresse IP n'est pas celle d'un nœud de calcul connu
# chtab -t node -o cn01 mac="00:11:22:DD:EE:FF"
# makedns -s ; makedhcp -n ; makedhcp -a
# rinstall compute2 runcmd=bmcsetup,osimage=ubuntu18.04.2-x86_64-netboot-compute
# rpower cn01 boot
Spécifiez à nouveau l'adresse MAC pour que DHCP trouve cn01 et son adresse MAC et attribue la bonne adresse IP. Ensuite, j'ai appliqué rpower compute2 boot
et cela a fonctionné.
Avec cela, j'ai pu mettre en place le cluster HPC pour le moment. xCAT prend en charge le contrôle des nœuds de calcul par BMC / IPMI, le déploiement du système d'exploitation, la gestion du réseau, la gestion des nœuds de calcul, y compris la gestion des comptes utilisateurs, etc. Après cela, il y a diverses choses qui doivent être préparées et définies, telles que Ganglia qui affiche l'état de fonctionnement du cluster et le planificateur de travaux SGE, je vais donc l'écrire dans un article séparé. De plus, si vous avez des erreurs ou des points peu clairs dans cet article, je vous serais reconnaissant de bien vouloir les signaler.
Recommended Posts