Forum général.cherche-logiciel Distribution de calcul

Posté par (page perso) . Licence CC by-sa
1
24
jan.
2014

Bonsoir à tous,

Voilà mon problème : j'ai plein de services à lancer, et un certain nombre de machines pour les accueillir. Ces services peuvent varier (il faut en ajouter ou en supprimer certains de temps en temps), mais doivent pouvoir aussi tourner en continu pendant très longtemps. Si jamais une machine tombe (ce qui arrivera forcément), il faut relancer le service sur une autre machine, le plus rapidement possible.

Lancer un service sur une seule machine et s'assurer qu'il fonctionne en permanence, je sais à peu près faire.
Lancer des jobs sur un pool de machines, je saurais le faire, par exemple avec SLURM. Le problème, c'est que je ne sais pas comment dire à SLURM d'utiliser une machine à 100% et donc d'empiler des jobs dessus « tant qu'elle tient » (à ma connaissance, SLURM a un nombre fixe de slots par machine), et je crois que le temps pour remettre une tâche sur une autre machine (quand une machine vient de tomber) n'est pas négligeable.
Accessoirement, il faudrait pouvoir ajouter ou supprimer des nœuds de calcul à la volée…

Quelles solutions connaîtriez-vous pour ce petit problème ? Merci d'avance :)

  • # tu as la solution dans la question

    Posté par . Évalué à 2.

    Accessoirement, il faudrait pouvoir ajouter ou supprimer des nœuds de calcul à la volée…

    il faut utiliser une distribution de calcul distribué, ou de grid computing (ca doit etre la meme chose mais en anglais)

  • # parallel et snmp ?

    Posté par . Évalué à 4.

    Peut être un petit script avec GNU Parallel et du snmp.

    La liste des machines utilisable par parallel peut être générée en fonction des remontés snmp (load, cpu out tout paramètre pertinent définissant le « tant qu'elle tient ») à partir de la liste des machines disponibles.

  • # slurm

    Posté par . Évalué à 2.

    slurm semble répondre à ton besoin.

    slurm gère :

    • la topologie du réseau (ie. machine distantes ou "à côté")
    • la topologie de la machine (ie. nombre de sockets, de cœurs par socket, HT ou pas)
    • les différentes ressources : puissance CPU relative, quantité de RAM, vitesse du réseau, taille disque…
    • la priorisation, le fail-over, le retry des jobs…

    Je ne l'ai pas utilisé, mais je connais bien un type qui l'utilise pour distribuer des jobs de calculs sur un cluster de machines.

    Hop,
    Moi.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.