Ist es möglich, eine große VM auf mehrere physische Commodity-Server zu verteilen?

11

Ist es möglich, eine riesige virtuelle Maschine auf mehrere physische Commodity-Server zu verteilen?

Hier ist unser Anwendungsfall:

  • Wir müssen einen 32-Prozessor-Datenbankserver mit 64 GB RAM implementieren
  • Wir haben keinen physischen Server mit einer solchen Kapazität
  • Wir haben viele Server mit kleineren Ressourcen.

Gibt es eine Technologie oder (besser) ein Produkt, mit dem wir diese Server verwenden können, um eine VM mit der erforderlichen Kapazität zu erstellen? Können wir beispielsweise 8 physische 4-Prozessor-Computer mit jeweils 8 GB RAM zu einer "logischen Einheit" mit 32 Prozessoren und 64 GB RAM kombinieren und einen Oracle-Server einrichten, der all diese Kapazität nutzt?

Bevor wir diese Frage gestellt haben, haben wir ähnliche Fragen gelesen, aber keine Antwort gefunden.

Vielleicht könnte uns jetzt jemand einen Hinweis geben?

user54614
quelle
2
Dies ist keine Antwort auf Ihre Frage, aber es ist seltsam, dass niemand einen Rat gibt, um die Softwareeinschränkungen zu untersuchen. Wenn Ihr Unternehmen Apps für mittelständische Unternehmen erstellt, scheint es mir offensichtlich, dass das Problem Softwareeinschränkungen sind, die der Softwarearchitekt und die Designer wahrscheinlich nicht in einer Datenbank mit Milliarden von Datensätzen oder mit riesigen temporären Tabellen oder Verfahren gedacht haben. Denken Sie darüber nach und Erstellen Sie einige Selbsttest- und Fehlerberichte für die langsamen Abfragen, um das Problem zu lösen. Denken Sie an das 3,3-GB-Limit im x86

Antworten:

7

Es gibt ein kommerzielles Produkt von ScaleMP namens vSMP. Sie können mehrere x86-Systeme zu einer einzigen virtuellen Instanz zusammenfassen. Ich habe das noch nie persönlich versucht, aber ich habe eine Präsentation von ihnen durchgesehen. Wenn ich mich richtig erinnere, gibt es spezielle Anforderungen, damit dies funktioniert, und Sie benötigen zusätzliche Hardware (Infiniband für schnelle Verbindungen mit geringer Latenz). Es könnte auch einen hübschen Cent kosten!

Ryanlim
quelle
1
ScaleMP emuliert keine x86-Umgebung. Sie werden niemals Windows oder ein anderes Standard-x86-Betriebssystem in der virtuellen Umgebung ausführen lassen. Sie Die einzigen unterstützten Varianten sind verschiedene Linux-Versionen, die auf einer SMP-Architektur basieren. Und von dieser Art von Architektur ... gibt es mehrere Geschmacksrichtungen. Sogar freie.
TheCompWiz
OP war nicht spezifisch in Bezug auf die anderen Anforderungen. Ich habe nur geantwortet, was ich von seinem Beitrag erfahren konnte.
Ryanlim
1
Das sieht verdammt cool aus. Ich vermute, dass eine 32-Core-Box (möglich mit 2x 16 Core AMD-Chips) billiger sein könnte als ein Cluster mit Infiniband, aber los geht's. Diese Lösung verdient mehr prahlerische Rechte.
Tom O'Connor
9

Es gibt keine Möglichkeit, genau die gleiche Funktionalität wie bei einem einzelnen 32-Prozessor-Computer mit mehreren separaten Servern zu erhalten. Am besten schauen Sie sich Clustering oder Grid Computing an. Richtig gemacht, können Sie eine vergleichbare Leistung erzielen ... und ein höheres Maß an Hochverfügbarkeit. Viele Ihrer Fragen hängen auch von Ihrem "db" -Typ ab. Microsoft SQL Server funktioniert erheblich anders als MySQL oder Oracle ... und die Skalierbarkeit ist auch völlig anders.

Alternativ ... möchten Sie vielleicht in Betracht ziehen, dass jemand die Datenbank für Sie erstellt ... wie die Verwendung des EC2 RDS ...

Leider gibt es keine Möglichkeit, mehrere physische Server miteinander zu kombinieren und VMware darauf zu platzieren, um einen einzigartigen, überaus leistungsstarken virtuellen Server zu erhalten.

TheCompWiz
quelle
TheCompWiz, danke für die Antwort. OK, wenn die Antwort von meinem DB-Typ abhängt, sei es Oracle oder Microsoft SQL Server. Ist es mit diesen Korrekturen immer noch unmöglich? Ja, wir kennen EC2, aber wir benötigen genau Oracle oder Microsoft SQL Server, um Probleme mit einem Softwareprodukt zu testen, das wir für einen Kunden liefern ...
user54614
Warum sollte nur VMware berücksichtigt werden? Wir haben nichts gegen andere Hypervisoren ...
user54614
Die Möglichkeit, mehrere Server zu durchlaufen, ist ein RIESIGER logistischer Albtraum ... ganz zu schweigen von dem Mangel an verfügbarer Bandbreite zwischen Geräten. Überlegen Sie, wie schnell eine CPU ist ... dann würden all die Dinge, die Sie tun müssten, den Prozess verlangsamen ... dh CPU -> Bus -> PCI-Bridge -> Netzwerkkarte -> Ethernet-Kabel -> Netzwerk Stack -> ... noch bevor es den anderen Server erreicht hat? Sie möchten nicht 1 Sekunde warten, um 1 + 1 hinzufügen zu können. Cluster können dies normalerweise tun, weil Aufgaben in "Jobs" zugewiesen werden und ein Job an einen
Rechenknoten
... und sendet dann die Antworten zurück an den Verwaltungsknoten. Windows nicht. Es gibt keine Möglichkeit, eine virtuelle X86-Umgebung (oder X86_64) einzurichten, die dies überhaupt versuchen würde.
TheCompWiz
2
@ user54614 - Sie werden absolut nicht in der Lage sein, ihr Szenario zu replizieren, indem Sie Maschinen zusammenbinden. Ich würde vorschlagen, sowohl mit Ihrem Kunden als auch mit dem Oracle-Support zu sprechen, um die Probleme zu lokalisieren und zu identifizieren.
Chris Thorpe
-1

"TheCompWiz" hat Ihre Frage sinnvoll beantwortet.

Ich möchte immer noch sagen, dass Sie einen Hypervisor erstellen können, der es einer einzelnen VM ermöglicht, mehrere physische Hosts zu überspannen, und diese VM "korrekt" ausführen kann, wenn alles funktioniert.

Aber selbst bei wirklich guten Hochgeschwindigkeitsnetzwerken zwischen den physischen Hosts wäre die Leistung eines solchen Dings wirklich schrecklich und würde viel langsamer laufen als eine kleinere VM, die in einen einzelnen dieser Hosts passt. Sie müssten die Cache-Kohärenz-Eigenschaften einer einzelnen VM simulieren, indem Sie jeden einzelnen Lese- oder Schreibvorgang des Speichers abfangen, den das Gastbetriebssystem und die Anwendung ausgeführt haben. Dies würde die Kosten für den Speicherzugriff mit Tausenden, wenn nicht Millionen multiplizieren.

Kein kommerzieller Hypervisor-Anbieter ermöglicht so etwas. Es wurde im Labor versucht. Niemand hat sich die Mühe gemacht, daraus ein Produkt zu machen.

Um den Punkt noch einmal zu unterstreichen, suchen Sie nach einer Lösung für das Clustering.

Jake Oshins
quelle
Was aber, wenn ein von uns geliefertes Softwareprodukt für die meisten Kunden einwandfrei funktioniert, jedoch in der Umgebung eines großen Kunden, der unsere Anwendung auf einem 32-Prozess-Oracle-Server mit 64 GB RAM ausführt, nicht ordnungsgemäß funktioniert? Wir wollen diesen Fehler in unserer Umwelt reproduzieren.
user54614
2
Ich weiß nichts von Ihrer Software, aber was passiert bei 32 Prozessoren und 64 GB RAM, was bei 2 Prozessoren und 8 GB RAM nicht passiert? Wenn auf dieser Ebene wirklich etwas wiederholt nicht stimmt, liegt ein Problem mit Oracle / OS / Treiber / E / A / Hardware vor.
Soße Gesicht
Sie werden niemals einen Hypervisor bekommen, der physische Maschinen durchquert. Sie sind immer noch im physischen Kern der Maschine eingeschlossen. Davon abgesehen ... Ich wette, Sie könnten eine Mainframe-Architektur erstellen, die der von archaischen Giganten von vor langer Zeit ähnelt ... aber Sie würden nie etwas x86 darauf laufen lassen.
TheCompWiz
1
Ihr großer Kunde sollte eine zweite QS-Instanz dieses Monster-Datenbankservers haben. Wenn sie das nicht zur Verfügung haben, ist es wirklich ihr Problem. In 15 Jahren IT-Arbeit habe ich noch nie jemanden gesehen, der von einem Softwareanbieter erwartet, dass er seine Infrastruktur dupliziert (es sei denn, dies ist Teil eines Servicevertrags, in dem genau dies festgelegt ist, und der Kunde zahlt dafür). Besonders wenn diese Infrastruktur esoterisch ist (obwohl ein 32-Kern-64-GB-Server heutzutage für etwa 22.000 US-Dollar von Dell erhältlich ist).
Rmalayter
Was ist mit ScaleMP ( scalemp.com )?
user54614
-2

VMWare tut es. Es heißt DRS oder Distributed Resources Scheduler. Sie können die Ressourcen von 16 Servern kombinieren. Sie können diese Summe dann auf eine oder mehrere virtuelle Umgebungen verteilen.

Rick Dettwyler
quelle
Nein, das macht DRS überhaupt nicht. Mit DRS können vMotion-Maschinen im Cluster automatisch auf die Hostknoten verteilt werden. Es gibt in keiner Weise Zugriff auf mehrere Hosts von einer einzelnen VM.
EEAA