Est-il possible de répartir une énorme machine virtuelle sur plusieurs serveurs physiques?

11

Est-il possible de répartir une énorme machine virtuelle sur plusieurs serveurs physiques?

Voici notre cas d'utilisation:

  • Nous devons implémenter un serveur db à 32 processeurs avec 64 Go de RAM
  • Nous n'avons pas de serveur physique d'une telle capacité
  • Nous avons beaucoup de serveurs avec des ressources plus petites.

Existe-t-il une technologie ou (mieux) un produit qui nous permet d'utiliser ces serveurs pour créer une machine virtuelle avec la capacité requise? Disons, pouvons-nous combiner 8 machines physiques à 4 processeurs avec 8 Go de RAM chacune en une "unité logique" à 32 processeurs avec 64 Go de RAM et configurer un serveur Oracle qui utilise toute cette capacité?

Avant de poster cette question, nous avons lu des questions similaires mais n'avons pas trouvé de réponse.

Peut-être que quelqu'un pourrait nous donner un indice maintenant?

user54614
la source
2
Ce n'est pas une réponse à votre question, mais il est étrange que personne ne conseille d'examiner les limitations du logiciel. Si votre entreprise crée des applications pour les entreprises de milieu de gamme, il me semble évident que le problème est les limitations logicielles, probablement l'architecte et les concepteurs de logiciels n'ont pas pensé dans une base de données avec des milliards d'enregistrements ou avec d'énormes tables ou procédures temporaires, réfléchissez-y et créer un autotest et un rapport d'erreurs pour les requêtes lentes pour moi, c'est le moyen de résoudre le problème ... pensez à la limite de 3,3 Go dans le x86

Réponses:

7

Il existe un produit commercial de ScaleMP appelé vSMP. Il vous permet d'agréger plusieurs systèmes x86 en une seule instance virtuelle. Je n'ai jamais personnellement essayé cela auparavant, mais j'ai fait une présentation d'eux. Si je me souviens bien, il existe des exigences spécifiques pour que cela fonctionne, et vous aurez besoin d'obtenir du matériel supplémentaire (Infiniband pour des interconnexions rapides à faible latence). Cela pourrait coûter un joli sou aussi!

ryanlim
la source
1
ScaleMP n'émule pas un environnement x86. Vous n'aurez jamais Windows ou tout autre système d'exploitation x86 standard à exécuter dans l'environnement virtuel. Vous Les seules versions prises en charge sont différentes versions de Linux basées sur une architecture de type SMP. Et de ce type d'architecture ... il y a PLUSIEURS saveurs. Même libres.
TheCompWiz
OP n'était pas précis sur les autres exigences. Je n'ai répondu que ce que je pouvais recueillir de son poste.
ryanlim
1
Ça a l'air cool. Je soupçonne qu'un boîtier 32 cœurs (possible avec des puces AMD 2x 16 cœurs) pourrait être moins cher qu'un cluster avec Infiniband, mais c'est parti. Cette solution gagne plus de droits de vantardise.
Tom O'Connor
9

Il n'y a aucun moyen d'obtenir exactement les mêmes fonctionnalités qu'une seule machine à 32 processeurs ... avec plusieurs serveurs distincts. Votre meilleur pari est de regarder le clustering ou le grid computing. Bien fait, vous pouvez vous retrouver avec des performances comparables ... et un niveau élevé de haute disponibilité. Une grande partie de votre question dépend également de votre type de "db". Microsoft SQL Server fonctionne de manière très différente de MySQL ou Oracle ... et l'évolutivité se fait également complètement différemment.

Alternativement ... vous pouvez envisager de laisser quelqu'un faire la base de données pour vous ... comme utiliser l'EC2 RDS ...

Malheureusement, il n'y a aucun moyen de combiner plusieurs serveurs physiques ensemble et de les gifler vmware et de se retrouver avec un serveur virtuel uber-puissant unique.

TheCompWiz
la source
TheCompWiz, merci pour la réponse. OK, si la réponse dépend de mon type de base de données, que ce soit Oracle ou Microsoft SQL Server. Avec ces corrections, est-ce encore impossible? Oui, nous connaissons EC2 mais nous avons besoin exactement d'Oracle ou de Microsoft SQL Server pour tester les problèmes avec un produit logiciel que nous livrons pour un client ...
user54614
Aussi, pourquoi ne prendre en compte que vmware?
Cela
La possibilité de traverser plusieurs serveurs est un énorme cauchemar logistique ... sans parler du manque de bande passante disponible entre les appareils. Pensez à la vitesse d'un processeur ... alors toutes les choses que vous auriez à faire ralentiraient le processus ... c'est-à-dire CPU -> bus -> pont PCI -> carte réseau -> câble Ethernet -> réseau pile -> ... avant même d'avoir atteint l'autre serveur? Vous ne voudriez pas attendre 1 seconde pour pouvoir ajouter 1 + 1. Les clusters sont généralement capables de le faire car les tâches sont affectées dans "Jobs" et un travail est émis vers un nœud de calcul qui effectue toutes les tâches de ce travail ...
TheCompWiz
... puis renvoie les réponses au nœud de gestion. Windows ne fonctionne pas. Il n'y a aucun moyen de configurer un environnement X86 virtuel (ou X86_64) qui tenterait même de le faire.
TheCompWiz
2
@ user54614 - Vous ne pourrez absolument pas reproduire leur scénario en attachant des machines ensemble. Je suggère de parler à la fois à votre client et au support Oracle pour identifier et identifier les problèmes.
Chris Thorpe
-1

"TheCompWiz" a répondu utilement à votre question.

Je voudrais toujours dire que, oui, vous pouvez créer un hyperviseur qui permet à une seule machine virtuelle de s'étendre sur plusieurs hôtes physiques et il peut exécuter cette machine virtuelle "correctement" là où tout fonctionne.

Mais, même avec de très bons réseaux à grande vitesse entre les hôtes physiques, les performances d'une telle chose seraient vraiment horribles, fonctionnant beaucoup plus lentement qu'une machine virtuelle plus petite qui tient dans un seul de ces hôtes. Vous devez simuler les propriétés de cohérence du cache d'une seule machine virtuelle en interceptant chaque lecture ou écriture de mémoire effectuée par le système d'exploitation invité et l'application, ce qui multiplierait le coût d'accès à la mémoire par des milliers, voire des millions.

Aucun fournisseur d'hyperviseur commercial ne permet donc une telle chose. Il a été essayé en laboratoire. Personne n'a pris la peine d'en faire un produit.

Pour souligner le point une fois de plus, regardez vers le clustering pour une solution.

Jake Oshins
la source
Mais que se passe-t-il si un produit logiciel que nous livrons fonctionne bien pour la plupart des clients, mais ne fonctionne pas correctement dans l'environnement d'un gros client qui exécute notre application sur un serveur Oracle à 32 processeurs avec 64 Go de RAM. Nous voulons reproduire cet échec dans notre environnement.
user54614
2
Je ne sais rien de votre logiciel, mais que se passe-t-il avec 32 processeurs et 64 Go de RAM qui ne se produit pas avec 2 processeurs et 8 Go de RAM? S'il y a vraiment quelque chose qui ne va pas à ce niveau, alors c'est un problème Oracle / OS / driver / IO / hardware.
gravyface
Vous n'aurez jamais un hyperviseur pour traverser des machines physiques. Ils sont toujours confinés dans le noyau physique de la machine. Cela étant dit ... Je parie que vous pourriez construire une architecture de type mainframe similaire à celles des géants archaïques d'il y a longtemps ... mais vous ne pourriez jamais rien faire fonctionner x86.
TheCompWiz
1
Votre énorme client devrait avoir une deuxième instance QA de ce serveur de base de données monstre. S'ils n'en ont pas, c'est vraiment leur problème. En 15 ans de travail informatique, je n'ai jamais vu personne s'attendre à ce qu'un éditeur de logiciel duplique son infrastructure (sauf si cela fait partie d'un contrat de service spécifiant exactement cela, et que le client le paie). Surtout lorsque cette infrastructure est ésotérique (bien qu'un serveur 32 cœurs de 64 Go puisse être acheté pour environ 22 000 $ de Dell ces jours-ci).
rmalayter
Qu'en est-il de ScaleMP ( scalemp.com )?
user54614
-2

VMWare le fait. Il s'appelle DRS ou Distributed Resources Scheduler. Il vous permet de combiner les ressources de 16 serveurs. Vous pouvez ensuite distribuer ce total à un ou plusieurs environnements virtuels.

Rick Dettwyler
la source
Non, ce n'est pas du tout ce que fait DRS. DRS permet à une machine vMotion automatiquement autour du cluster de se charger même entre les nœuds hôtes. Il ne donne en aucun cas accès à plusieurs hôtes à partir d'une seule machine virtuelle.
EEAA