Forum général.cherche-logiciel Virtualisation sur un parc de serveurs de calcul

Posté par . Licence CC by-sa
4
30
jan.
2014

Bonjour à tous,

Pour faire court : je recherche une solution de cloud pour un parc de taille modérée.

Comme je vais dire du mal de certains collègues, je préfère taire le nom de l'endroit où je bosse. Ces collègues, ce sont les techniciens informatique. Installer un serveur sous Windows, déployer un poste client sous Windows, installer un Windows dans une machine virtuelle sous VmWare Workstation, ou encore installer l'imprimante de la secrétaire sont des tâches qui sont dans leurs cordes (enfin, à peu près). Par contre, dès que l'on a le malheur de prononcer le mot « Linux », c'est presque s'ils ne se couvrent pas les oreilles avec les mains en chantant « la la la, je vous entends pas ».

Nous les barbus, nous nous sommes jusqu'à présent débrouillés avec nos moyens, souvent en douce. Notre dernière lubie c'est d'avoir des machines un peu puissantes pour pouvoir exécuter des tâches qui requièrent plus de ressources que ce que nos machines de bureau possèdent. Il y a moins d'un an, on a commandé de quoi monter une petite machine sympa (24 cœurs à base de Xeon, 96Go de mémoire vive), sur laquelle on a installé à l'arrache un KVM et que l'on gère depuis à coup de Virt-Manager. Nous sommes deux « admins » à gérer les ressources en fonction des besoins de chacun (actuellement, 5-6 VM), et tout marche relativement bien.

Sauf que de plus en plus de gens (pas barbus) trouvent cette machine pratique, et on commence à être un peu à l'étroit. Du coup, une seconde machine a été achetée. Et comme une gestion via Virt-Manager parait difficilement viable à plus grande échelle, on a suggéré de monter un petit cloud histoire que chacun puisse créer ses VM (car pour l'instant, c'est à nous les admins de le faire) et de pouvoir migrer les VM en fonction des ressources requises et disponibles. Et comme après tout, c'est le boulot des techniciens du gérer ce genre de choses, on souhaite leur transmettre le bébé.

Sans avoir évalué les autres solutions, ils nous ont proposé d'installer un VmWare VSphere (solutions qu'ils pensent pouvoir maîtriser), pour la modique somme de ~4300€ (pour seulement 6 licences CPU). Mon soucis, c'est que je préférerai qu'on installe une solution moins coûteuse (voire gratuite), de préférence libre, et que l'on investisse cette somme dans du matériel supplémentaire.

Histoire de pouvoir dire à nos techniciens « voici ce que votre incompétence nous coûte », je cherche donc une alternative libre et potentiellement gratuite. Afin de maquetter ça, j'ai à ma disposition 3 machines de bureau relativement récentes. Par contre, j'ai pas la main sur le réseau du bâtiment, et il ne faut surtout pas que je le pourrisse (du genre, avoir un second DHCP qui bave), au risque d'en prendre pour mon grade. Du coup, je NAT derrière un switch en douce.

J'ai testé CloudStack, sans trop de succès. Mes compétences en termes de réseau me semblent un peu juste en fonction de ce que demande CloudStack (qui est a priori conçu pour héberger +10000 VM, dans 50 datacenters sur 6 continents).

J'ai voulu tester Eucalyptus, sauf que d'après ce que j'ai compris, le déploiement des machines se fait en ligne de commande via virsh, ce qui est loin d'être idéal.

Ces deux solutions sont les deux premières qui me venaient à l'esprit. Du coup, j'ai essayé d'élargir mes recherches, et me suis retrouvé avec une tétrachiée de solutions (OpenStack, OpenNebula, ProxMox, Ganeti, OpenNode…). Du coup, je me tourne vers vous pour avoir des retours d'expériences.

Pour résumer nos besoins et contraintes :

  • Gérer ~100 VM (Windows et Linux) sur 10 serveurs (et encore, je vois large).
  • Permettre à chacun de créer, gérer et accéder à ses VM, depuis Windows, Linux et Mac, et ce depuis une interface graphique.
  • Permettre la migration des VM (dans l'idéal, à chaud et automatiquement) afin d'utiliser au mieux les ressources.
  • Pas trop pénible à installer/administrer, et qui ne soit pas une usine à gaz (étant donné les gens qui vont avoir à le gérer…).

Si vous avez des suggestions, je suis preneur.

  • # Proxmox

    Posté par . Évalué à 4.

    Proxmox est vraiment facile d'utilisation (via une interface web) une fois installé.
    Il est relativement facile à installer et il me semble qu'ils fournissent directement une iso, tu peux faire un test très rapidement. La documentation est bien.

    J'ai testé également Archipel (suis à une dépêche ici même). C'est bien fait, mais moins accessible que Proxmox (de ce que j'ai testé).

  • # ici proxmoxv3

    Posté par . Évalué à 3.

    2 serveurs frontaux (la puissance de calcul)
    1 serveur de stockage NFS (marche aussi avec iscsi

    les VMs linux se font avec OpenVZ
    les VMs windows se font avec KVM.

    delegation possible d'un groupe de machine à un groupe d'utilisateur (pris dans l'annuaire ldap ou AD) de l'entreprise.

    la delegation peut aller jusqu'a la suppression pure et simple de la machine par l'utilisateur.
    sinon generalement je met les droits de demarrer, rebooter, arreter.

    j'utilise :
    - le mode cluster qui permet de se connecter à n'importe quel noeud (en interface web) et de voir et agir sur tous les autres.
    - la migration à chaud, sur les conteneurs OpenVZ, ca prend 30s d'interruption pour migrer des petits VMs hors charge.

    je n'utilise pas, mais ca existe :
    - la haute dispo, qui permet à un cluster >3 machines, de detecter la perte de l'un des leur, et de desactiver le perdant au niveau reseau ou electrique via des regles snmp.
    - les backups reguliers.

    • [^] # Re: ici proxmoxv3

      Posté par . Évalué à 1.

      Je viens de tester Proxmox. Super simple à installer, il m'a fallu moins d'une heure pour avoir un cluster de 3 nœuds qui fonctionne.

      Ma migration à chaud fonctionne parfaitement avec un hôte Linux, pas vraiment avec un hôte Windows (l'hôte ne répond que pendant les 20 secondes qui suivent la fin de la migration).

      Par contre, pas de possibilité d'équilibrage de charge/migrations automatiques, ce qui réduit pas mal les possibilités de laisser les utilisateurs créer leurs VM.

      Mais ça reste une solution sympa (déjà, elle fonctionne, elle).

      • [^] # Re: ici proxmoxv3

        Posté par . Évalué à 2.

        pas de possibilité d'équilibrage de charge/migrations automatiques,

        ca, à ma connaissance, ca n'existe que dans les solutions pro et payantes (tres cheres).

        tu peux contacter "proxmox gmbh" pour savoir si c'est envisagé chez eux, et à quel tarif.
        car oui, il y a une boite qui vie derriere ce produit full opensource.

  • # embauché ?

    Posté par . Évalué à 3.

    Vu les besoins (100VM/10 serveur, plus l'infra qui va derrière : sauvegarde, monitoring, etc.) et l'absence de compétence en interne, il me semble raisonnable soit d'embaucher quelqu'un, soit de faire appel à un prestataire extérieur.

  • # Ganeti

    Posté par (page perso) . Évalué à 3.

    Ganeti, c'est moins joli que proxmox (pas d'interface web), mais ça fonctionne !

    It's a fez. I wear a fez now. Fezes are cool !

  • # VMWare, ils n'ont pas tout à fait tord

    Posté par . Évalué à 3. Dernière modification le 30/01/14 à 23:29.

    Les points 2 et 4 sont les points forts de VMWare (hormis l'installation, mais elle peut être sous traitée). Autant que je me rappelle tu payes au socket pour VMWare, des biproc font très bien l'affaire niveau perf. Avec ta mémoire compte à la louche 40 VM par serveur. Avec des solutions à la proxmox on peut faire mieux, ça dépend surtout du nombre de VM Windows.

    Faites gaffe dans quoi vous vous lancez tout de même.
    A 100 VM, il faudra en plus du monitoring, du backup, de la gestion de configuration automatique et de l'installation également automatique et un SAN pour stocker les VM et du réseau redondant et costaud Tout ceci n'est, ni un truc qui ce gère sur un coin de table tranquillou pendant la pose café, ni qui coûte 3 queues de cerises.
    Il vous faudra définir des règles de sécurité, les mettre en place et s'assurer qu'elles soient suivies, il faudra aussi assurer un support utilisateur et rédiger de la documentation.

    Tu aurais parlé de 10 - 20 VM, ça reste gérable à l'ancienne, mais au delà, je vous promets des Nervous braquedone comme on dit de nos jours… et des heures et des heures de taf aussi.

    • [^] # Re: VMWare, ils n'ont pas tout à fait tord

      Posté par . Évalué à 1.

      Tu aurais parlé de 10 - 20 VM, ça reste gérable à l'ancienne, mais au delà, je vous promets des Nervous braquedone comme on dit de nos jours… et des heures et des heures de taf aussi.

      De la manière dont je l'ai compris, les 100 VM et 10 serveurs, c'est à terme et en voyant large.

  • # Serveur de calcul?

    Posté par . Évalué à 1.

    Bonjour,

    quelles genres de tâches ces vms vont êtres amenées à faire tourner?
    Nous avons du Xen (Pas Citrix) (4 serveurs physiques, ~30 vm,80% de Linux ) pour des simulations gourmandes en cpu et/ou ram et/ou io disques qui peuvent durer plusieurs/jours semaines. On utilise quelques scripts maisons pour la création/gestion. La migration à chaud fonctionne pour les invités Win et Linux, et les performances sont très bonnes.
    Concernant vSphere, je ne vois pas pourquoi des machines avec KVM et virt-manager ne feraient pas l'affaire.

    Bonne journée.

    • [^] # Re: Serveur de calcul?

      Posté par . Évalué à 1.

      Virt-Manager de répond pas à plusieurs contraintes :
      - Pas utilisable depuis Windows (enfin si, mais j'ai pas envie d'expliquer à certains utilisateurs comment installer un serveur X et lancer Virt-Manager en SSH).
      - Il faudrait un peu de gestion de droits, au minimum pour que chacun ne puisse toucher/accéder qu'à ses machines.

  • # Plus d'infos

    Posté par . Évalué à 2.

    Histoire d'apporter un peu plus d'infos :

    Nous sommes un institut de recherche, les VMs que nous allons faire tourner sont destinées à faire du calcul scientifique : besoin de beaucoup de CPU et/ou de RAM pendant quelques jours/semaines, l'objectif étant de permettre à chacun d'exécuter le plus rapidement possible des tâches gourmandes en CPU, tout en palliant le manque de mémoire de nos machines personnelles. Les CPU seront donc utilisés à 100% en permanence (en tout cas, c'est comme ça depuis plusieurs mois sur notre machine actuelle). Quand à la mémoire, nous avons déjà quelque machines qui en réclament 32Go, donc il n'y aura pas 40 VMs par serveur (10 me parait être un chiffre plus raisonnable).

    100 VMs sur 10 serveur, compte tenu du nombre que nous sommes, c'est d'après moi une borne max, et j'imagine assez mal qu'elle puisse être atteinte avant 5 ans. Sur un horizon de 2 ans, j'envisage plus ça comme du 20 VM/3 serveurs. La sauvegarde n'est pas à l'ordre du jour (du moins, pas pour l'instant) : ces machines sont destinées à être utilisée pour du one-shot. Tout ça pour dire que cela ne justifie pas l'embauche de quelqu'un (pour tout plein d'autres raisons, certaines indépendantes de notre volonté, même si cela résoudrait pas mal de problèmes).

    Je ne mets pas de coté la solution VSphere (je suis moi même entièrement satisfait de Workstation que j'utilise au quotidien), c'est juste que j'aimerai que l'on évalue les autres solutions avant de choisir celle-là. Surtout que c'est pas la première fois que nos techniciens nous font le coup de « on prend la solution qui nous convient à nous » et que ça se transforme en « comment ça elle ne répond pas à vos besoins ? ».

    • [^] # Re: Plus d'infos

      Posté par (page perso) . Évalué à 4.

      Je mettais amusé à virtualiser un noeud de calcul sous Xen il y a quelques années… En terme de perf, c'est mauvais !

      Chez nous, on a un cluster de calcul sous Debian piloté par un gestionnaire de batch. Il est super facile de soumettre un job interactif et la config des noeuds est quasiment la même que celles des PC de bureau (sous GNU/Linux). Pour moi, la virtualisation du calcul, c'est tout bêtement un cluster de calcul ;-)

      Après, je ne fais pas de support calcul pour les autres OS ! De toute manière, les autres OS ne passe pas l'échelle, tous les centres régionaux et nationaux sont sous GNU/Linux.

      Ceci dis, je virtualise plein de truc sous Xen mais pas le calcul.

    • [^] # Re: Plus d'infos

      Posté par . Évalué à 3.

      claire que si c'est du calcul pure, il te faut du linux en GRID
      plein de processeurs/ram mutualisés, avec du stockage reseau.

      et un repartiteur automatique de charge.

      ainsi plutot que d'avoir 50 VMs,
      tu as 3 utilisateurs, 1 par projet, il lance son calcul sur le ou les noeuds de calculs.

    • [^] # Re: Plus d'infos

      Posté par . Évalué à 1.

      Comme les autres réponses. La virtualisation pour du calcul n'est pas utile. Il existe pour la recherche française un certain nombre d'instituts spécialisés qui fournissent du temps de calcul à la demande. Ce peut déjà être un premier point d'entrée. Le cas échéant des services équivalents doivent exister pour d'autres pays.

      Par ailleurs, pour monter ta propre infrastructure, tu peux essayer OAR, c'est un ordonnanceur dédié au HPC. Il est disponible via les dépôts Debian stable, via EPEL pour les Redhat et RedHatlike, ou encore directement dans les dépôts du projet.
      Il nécessite plusieurs services que tu peux répartir sur plusieurs petits serveurs ou tout regrouper sur le même (une petite machine virtuelle ou un petit ordinateur de bureau feront l'affaire). Il y a un frontend de soumission des taches, le serveur OAR proprement dit et un serveur de visualisation, voila pour le coté outils. Ensuite il te faut des serveurs de calcul physiques couplés à un serveur de fichiers, NFS par exemple, sur lesquels tu installes juste les noeuds oar. Au cas ou, la liste de diffusion est assez dynamique.

      L'utilisateur soumet son job en précisant les ressources dont il a besoin (et la durée éventuellement) sur le frontend de soumission et l'ordonnanceur les lance en fonction des ressources disponibles et demandées, voire les met en file d'attente si aucune ressources n'est actuellement disponible.

      Autour d'OAR gravitent tout un tas d'outils lié au HPC. Par exemple kdeploy qui permet de déployer à la volée des systèmes spécifiques sur les noeuds de calcul.

      Bon c'est assez éloigné de la demande initiale finalement

      • [^] # Re: Plus d'infos

        Posté par . Évalué à 1.

        Sauf que nous avons aussi (surtout ?) des gens qui ne travaillent pas sous Linux…

        Nous avons nous aussi la possibilité d'accéder à un cluster de calcul, sauf qu'il faut des applis développées pour (qui causent via MPI ou autre). Et moi le premier, j'ai pas toujours envie de passer par là. Surtout que la majorité d'entre nous n'a pas besoin d'une parallélisation aussi poussée.

        Il y a aussi que nous avons des tâches qui ne sont pas du calcul scientifique à proprement parler, mais qui requièrent de la mémoire et du CPU. Moi par exemple, je bosse avec des bibliothèques qui prennent une bonne heure à compiler sur mon laptop (ou 4h lorsque je compile les tests qui vont avec), et j'apprécie assez de pouvoir simplement faire un ssh maVM; git clone malib; make -j 24 et avoir juste à patienter 5 min. Et les fournisseurs de temps de calcul, lorsqu'ils peuvent faire tourner ce genre de tâches, vu que ce n'est pas du calcul à proprement parler, ils n'apprécient pas trop.

        Ou encore, nous avons des personnes qui ont vraiment besoin de machines virtuelles : certains bossent par exemple sur la répartition des tâches dans un cluster Hadoop, il leur faut donc 8 machines pour avoir quelque-chose qui ressemble à un cluster.

        • [^] # Re: Plus d'infos

          Posté par . Évalué à 2.

          tiens, l'exemple de la compilation me fait penser à "parallel" ou à "distcc"

          distcc : c'est vraiment prevu pour de la compilation gcc distribuée
          parallel : c'est fait pour tout type de traitement, y compris du shellscript.

          les deux permettent de distribuer les taches sur un pool d'ordi sans pour autant que le script ou le code soit prevu pour ca.

          • [^] # Re: Plus d'infos

            Posté par . Évalué à 1.

            Distcc, je connais. Marche plutôt bien, si ce n'est que le serveur python à tendance à utiliser bien trop de mémoire lors de la compilation de gros projets (bug rapporté il y a presque un an, mais rien n'a bougé depuis).

            Parallel, je ne connais pas, je vais jeter un œil. Merci.

            Par contre, ça reste des outils assez spécifiques : c'est pas avec ça que je vais pouvoir accélérer des tâches qui ne sont pas des batch. Nous avons au final des besoins assez différents. Permettre à chacun de pouvoir lancer des machines virtuelles facilement nous semble actuellement être la solution qui permet de satisfaire tout le monde (même si, je le reconnais, il y a probablement des solutions plus adaptées à certains besoins).

            • [^] # Re: Plus d'infos

              Posté par . Évalué à 2.

              Permettre à chacun de pouvoir lancer des machines virtuelles facilement

              une machine virtuelle n'est pas du calcul distribué,
              tout au plus une mutualisation des serveurs physiques.

              mais si tu ne veux pas que Monsieur X occupe 100% du CPU et de la RAM du serveur physique il faudra lui mettre des quotas, à lui et son equipe si tu geres plusieurs groupes de projets sur ces serveurs.

              • [^] # Re: Plus d'infos

                Posté par . Évalué à 1.

                Je n'ai jamais dis que nous avions besoin d'une solution de calcul distribué, ce qu'il nous faut, c'est en effet de la mutualisation/partage de ressources.

                Après, c'est pas tant un problème de quota, mais plus un problème de répartition de charge/optimisation de l'utilisation des ressources. Mais bien sûr, c'est une contrainte que l'on garde à l'esprit.

        • [^] # Re: Plus d'infos

          Posté par . Évalué à 3.

          Pour le premier point, nous aussi nous avons de tout sur les postes clients, du Windows du Mac et du Linux, mais tous peuvent faire du ssh pour soumettre un job sur le frontend oar.

          OAR n'est rien qu'un ordonnanceur de taches qui permet de maximiser l'usage des nœuds qui sont derrière, il n'implique rien d'autre (pas de MPI ou autre). Il n'assure pas la parallélisation, juste la répartition des taches et l'optimisation de l'utilisation des ressources.

          Un nœud, c'est juste un serveur de base, ou poste de travail même, sur lequel le paquet oar-node est installé et qui est déclaré dans le serveur oar. Tu peux installer oar sur ton serveur apache, ou même sur un serveur Xen/KVM si tu veux.
          Tu peux choisir de passer par la soumission de jobs d'OAR ou de te connecter directement sur le serveur et faire n'importe quoi d'autre: ta compilation, de la virtualisation, du développement. C'est juste un paquet installé sur un serveur tout à fait banal.

          Passer obligatoirement par un hyperviseur te fera forcement perdre de la perf. Il vaut mieux réserver la virtualisation aux seuls cas ou elle est nécessaire.

          Pourquoi faire :

          ssh maVM; git clone malib; make -j 24
          

          Alors que tu pourrais directement faire

          ssh monServeurPhysique; git clone malib; make -j 24
          

          Avec OAR, la même commande en réservant un cœur (par exemple)

          oarsub -l \core=1 'git clone malib; make -j 24'
          

          L'ordonnanceur trouvera lui même un cœur sur l'un des serveurs de ton pool et y lancera le job, ce qui évite que 20 personnes travaillent sur le même serveur (physique ou virtuel d'ailleurs), le mettant à genoux pendant le serveur d'à coté ne fait rien.

          • [^] # Re: Plus d'infos

            Posté par . Évalué à 1.

            Ok, j'avais pas bien compris le principe d'OAR.

            Quand tu dis qu'un nœud OAR peut être une machine de bureau, ça veux dire que les nœuds peuvent être assez hétérogènes (distri, bibliothèques…). Du coup, comment ça se passe pour la gestion de l'environnement lié à un job, ça se spécifie lors de sa soumission ?

            Cependant, je pense qu'OAR ne répond pas à certains de nos besoins : certains collègues développent en C# sous Visual Studio, c'est pas OAR qui va leur permettre d'accéder à une machine disposant de plein de cœurs et/ou de mémoire pour faire tourner leur appli. Ou alors, je n'ai toujours pas compris.

            Le problème d'ordonnancement sur un tel système est a priori le même que celui du placement de VM dans un cloud. À la différence qu'OAR peut délayer un job.

            • [^] # Re: Plus d'infos

              Posté par . Évalué à 1.

              Oui, les nœuds peuvent être hétérogènes, mais vu que l’ordonnanceur lance les commandes en local, tu peux avoir des variations suivant les versions installées localement. Pour pallier à ça, dans les cas ou cela peut être un soucis, c'est soit d'avoir des nœuds identiques, soit d'installer certains programmes dans le montage nfs.

              Effectivement pour le besoin en VM Windows, OAR ne répond pas du tout au besoin, c'est juste une partie de la réponse possible.

              • [^] # Re: Plus d'infos

                Posté par . Évalué à 2.

                soyons fous notez que je n'ai pas testé, et que mes options oar sont totalement farfelue…

                oar kvm --option1 --option2

                devrait trouver une machine dispo, lancer kvm dessus

  • # Retour d'expérience

    Posté par . Évalué à 2.

    En 2013, mon projet était de virtualiser 10 machines Windows, et de les remplacer par 2 serveurs physiques + logiciel de virtualisation.

    Je suis parti de cet article (désormais un peu ancien) pour faire un premier tri:
    http://www.tomshardware.fr/articles/virtualisation-serveur-hyperviseur-gratuit-logiciels,2-9.html
    J'ai retenu pour les tests sur maquette: Citrix XenServer 6.2 et VMware ESXi 5.5.

    Citrix XenServer et VMware ESXi sont tous les deux faciles à installer et configurer. Les deux produits marchent très bien, mais finalement j'ai choisi Citrix XenServer, car il est basé sur Linux, et donc j'ai trouvé tout de suite mes marques : j'installe ma clé publique SSH, et quelques scripts maisons et hop c'est parti je peux automatiser toutes les opérations.

    Les machines virtuelles sont stockées sur un NAS, les serveurs Xen sont physiquement identiques. C'est la configuration idéale pour créer un pool homogène et migrer à chaud les vms entre serveurs. Le 'pool' se gère de manière centralisée en ligne de commande ou bien avec l'interface graphique Citrix XenCenter (malheureusement sous Windows uniquement).

    Si les serveurs ne sont pas strictement identiques, il faut créer un pool hétérogène en se basant sur le plus petit dénominateur commun. C'est un petit peu plus compliqué mais c'est possible. En revanche ça ne permet pas de faire coexister les processeurs AMD et Intel dans un même pool.

Suivre le flux des commentaires

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