[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Grappe de calculs hétérogène sous Debian et SLES (LVS vserver and co)




Bonjour,

Le département Recherche de la branche Marine vient d'acquérir des serveurs HP pour effectuer des calculs CFD (OpenFoam + code maison), hydrodynamique (Hydrostar for Exprts du docteur Chen), de structure (avec Abaqus de Simulia ou NXNastran de Siemens PLM), de propagation de fissures (saphir code maison) et de feu (code google? ).

Depuis 2 ans et demi, tout ceci est centralisé sur un Proliant G5 de 64Go de RAM sous SLES  (SLES11 SP1 depuis le 12 décembre (*)).
Jeudi dernier, nous retirions du rack un IBM P630 (pseries 4 CPUS Power 4+)(**) pour faire de la plcae et installer l'après midi même une palanquée de serveurs Proliant G7  à base de pocesseurs AMD Opteron magny-Cours.

Je suis chargé de configurer et administrer tout cela. Nous avons donc :

à ma gauche quelques utilisateurs pressés d'utiliser le nouveau système

à ma droite du matériel  nouveau dont la puissace est d'un ordre de grandeur plus importante que ce qui tourne actuellement  puisque on y trouve :
  6 serveurs P165 G7 32Go RAM, 2 CPUS de 12 coeurs chacun   (144 coeurs auu total  le Proliant G5 fait 4 x 4 coeurs)
  1 serveur  2U 16Go RAM 2 CPUS 8 coeurs avec 6 disques 7200tpm de 500Go
 1 serveur 1 CPU 8 coeurs, 8 Go et une licence SLES pour installer les logiciels commerciaux (pour ne pas dire privateurs) qui ne sont qu'en rpm.

Je voudrais, dans ce premier message, décrire l'architecture globale de cet ensemble et vous demander ce que vous en pensez.

Tout d'abord Debian GNU/Linux partout  (exception faite de la machine pour les produits-paquets commerciaux)
J'envisage d'installer directement squeeze  (amd64) en commençant par 5 des 6 serveurs de calculs.
Les machines sont dans un domaine nis (drhpc) contrôlé par deux P630 sous Debian
Un sous réseau interne est créé en connectant tout le monde sur 2 commutateurs administrables 3Com 24 ports gigabits (reliés entre eux  stacked comme on dit chez 3Com)
Pour les systèmes de fichiers : les répertires des utilisateurs restent pour l'instant sue le Poliant G5 : export nfs avec automount.
Pour les caculs volumineux chaque utilisateur dispose de /bigsr/nom  qui est obtenu par automount  :
   chaque serveur exporte /bigsl    Sur la machine 1 je crée un répertoire machin pour l'utilsateur machin, je fais de même pour l'utilisateur truc mais sur la mchine 2, etc
Dans /etc/auto.master :
/homes  /etc/auto.home
/bigsr       /etc/auto.bigsr

et /etc/auto.home
# @(#)  /homes mapping for automount   (imhs est le nom sur le réseau interne duu G5 qui exporte /homes )
*     -rw,hard,intr,nosuid,rsize=8192,wsize=8192         imhs:/homes/&

Pour     /etc/auto.bigsr  j'aimerais mettre :
# @(#)  /bigsr mapping for automount
*     -rw,hard,intr,nosuid,rsize=8192,wsize=8192         imss,im01,im02,im03,im04,im05:/bigsl/&

( Je mets les noms des machines sur le sous-réseau interne )

Jusque là, ce n'est pas super complique mais mes utilisateurs voudraient un nom ( une adresse) unique et obtenir un environnement complet.
D'autre part, il me semble que 24 coeurs pour  toutes les sessions et tous les calculs c'est un peu du gâchis. J'ai donc imaginé un certain nombre de classes de sessions (pour se connecter et les calculs )
la classe a  (accès, all) 2CPUS  24 coeurs pour ceux qui veulent lancer make -j 24
la classe b (bis) 1 CPU 12 coeurs
la classe c (classqiue) 1/2 CPU  6 coeurs
la classe d (développement) spéciale, ne sera implémentée qu'à la demande.

Dans cette optique les différents environnements sont réalisés par des créations de vservers.

Règles de nommage :
                        nom (externe)   IP      nom (interne)  IP
serveur de calcul 1 :  drhpc_m01  10.67.24.130  im01  192.168.1.130
           ia01   192.168.1.131
            ib11   192.168.1.132
           ib21   192.168.1.133
           ic11   192.168.1.134
           ic21   192.168.1.135
           ic31   192.168.1.136
           ic41   192.168.1.137

Pour la machine 2 on commence à 140.

Our un vserver  l'interface externe (eth0) orte le numéro 10.67.24.xxx, l'interface interne (qui peut être bond0) 192.168.xxx et le contexte sera le numéro xxx (pour pouvoir s'y retrouver ).  
Sur la machine 2  par exemple
vserver  a02 build  -m debootstrap  --context  141 --hostname drhpc_a02.eua.bvcorp.corp --interface a02=eth0:10.67.24.141/24 --interface  bond0:192.168.141/24  --cpusetcpus 0-23   -- -d squeeze -m http://ftp.fr.debian.org

On installe les paquets dans a02,  (Comment faire pour ne pas avoir de gdm ? )
 Pour les autres vservers on utilise -m clone et on ajuste les contextes et IPs noms ..

En répétant ce processus sur 5 serveurs (j'en garde un sous le coude), on obtient
5, 10 et 20 machines vservers de 24, 12 et 6 coeurs respectivement.

Pour accéder à tout celà, j'envisage d'utiliser LVS, répartition de charge IP, pour le port 22 (ssh). en espérant que cela soit suffisant pour les accès XWindows (ssh -X) et pour le ftp  (sftp avec FileZilla). Les utilisateurs sont en très grande majorité sous Windows XP (le système corporate, imosé) et utilisent Putty et Xming.

Je voudrais donc installer ipvsadm et ldirectord sur les deux P630 qui restent (servent déjà de serveurs NIS) et créer des vservers drhpc_a, drhpc_b, .. qui seront les points d'entrée de la grappe de calculs.  En fait je pense qu'il n'est pas nécessaire de créer des vservers pour attacher des IP à l'interface orientée vers le LAN. J'avoue ne pas avoir compris comment  créer eth0:virta, ... et si c'est raisonnable.

Puis  /sbin/ipvsadm-restore  sessions_ssh
avec le fichier  (4 serveurs mis en route )
-A -t  drhpc_a:22 --scheduler wlc  --persistent
-a -t  drhpc_a:22   --real-server ia01 --gatewaying  --weight  24
-a -t  drhpc_a:22   --real-server ia02 --gatewaying  --weight  24
-a -t  drhpc_a:22   --real-server ia03 --gatewaying  --weight  24
-a -t  drhpc_a:22   --real-server ia04 --gatewaying  --weight  24

-A -t  drhpc_b:22 --scheduler wlc  --persistent
-a -t  drhpc_b:22   --real-server ib11 --gatewaying  --weight  12
-a -t  drhpc_b:22   --real-server ib21 --gatewaying  --weight  12
-a -t  drhpc_b:22   --real-server ib12 --gatewaying  --weight  12
-a -t  drhpc_b:22   --real-server ib22 --gatewaying  --weight  12
..
-a -t  drhpc_b:22   --real-server ib25 --gatewaying  --weight  12

etc ..

Donc je mets dans /etc/hosts

10.67.24.190  drhpc_a
10.67.24.191  drhpc_b
..
et comment est-ce que j'attache ces IPs à l'interface sur le LAN de la machine LVS ?

Qu'en pensez-vous ?
Est-ce que cela tient la route ?

Désolé d'avoir été aussi long  (comme l'avait dit Pascal )
Mes excuses par avance pour les fautes de frappe mais je suis obligé de travailler avec la loupe à cause de problèmes de rétine oculaire.

Notes
(*)  Sont sympas chez Süse Novell  : ils n'annoncent même pas à leurs clients quand un Service Pack sort  (en juin) et préviennent fin novembre que le support SLES11 se termine le 15 décembre.
(**) cette machine étatit sous AIX 5.1 un système où la commande ping est dans /etc et le fichier nsswitch.conf s'appelle autrement. Mais depuis que j'ai pu installer un noyau
Linux halc10 2.6.32-bpo.3-powerpc64 #1 SMP Tue Mar 16 11:14:53 UTC 2010 ppc64 GNU/Linux
sur deux machines comparables je me suis dit qu'elles pouvaient encore servir.


Cordialement,
Regards,

Mit freundlichen Grüßen

مع  تحياتي الخالصة


F. Petitjean

Ingénieur civil du Génie Maritime
---
     "Q: When do I need xml ?
     A: When I need a new buzz word for my resume."
    -- From the W3 XML page.

Reply to: