Gedankenspiel: HW für Virtualisierung von ~200 Win7 Clients

KillerCow

Lt. Commander
🎅Rätsel-Elite ’25
Registriert
Jan. 2012
Beiträge
1.802
Mahlzeit

Ich bin gerade mit einem Kollegen am Fachsimpeln, was man sich wohl für Hardware in den Schrank stellen müßte, um rund 200 Windows 7 Clients zu virtualisieren. Wir sind uns voll und ganz bewußt, dass solche Fragen nicht pauschal beantwortet werden können, weil es schlicht davon abhängt, was die Clients zu tun bekommen. Insgesamt geht es uns auch eher darum, eine grobe Hausnummer ausfindig zu machen und nicht, um eine konkrete Installation zu planen.

Unser größtest Problem haben wir mit dem Verhältnis von VMs zu CPU Kernen. Laut einem VMWare Dokument wären bis zu 12 VMs pro Kern ok (bei leichter Last). Im Falle von "Poweruser VMs" ist dann noch von 6 VMs pro Kern die Rede. In einem Blogpost (hab die URL leider nicht zur Hand) wird von "4-8 VMs pro Kern" gesprochen (für virtualisierte Windows Desktops).

Wenn ich jetzt einfach mal 5 VMs pro Kern ansetze, müßten demnach theoretisch vier 10-Kerner (Xeons mit sagen wir mal > 2GHz) reichen... für mich klingt das aber irgendwie arg wenig!? Natürlich muß noch ein bisschen Reserve für den Netzwerkverkehr etc. eingeplant werden, das ist klar. Es geht jetzt aber erstmal nur um die VMs.

Ein Speichersubsystem würde dann wahrscheinlich am sinnvollsten per mehrfachem 10GBit Netzwerk (o.Ä.) angebunden werden.

Gedanklich sollen die Client VMs jeweils 2GB Ram bekommen, mit einem Windows 7 laufen und lasttechnisch vielleicht eine kleine Datenbankanwendung mit je einem lokalen MS SQL Advanced Express Server laufen haben.

Falls jemand von euch mit solchen Größenordnungen Erfahrungen hat, würden wir uns freuen, wenn ihr ein paar Kenngrößen einer passenden Installation preisgeben würdet. Wie gesagt, nicht im Detail, sondern einfach mal eine Hausnummer, ob dafür tatsächlich ~40 Kerne mit 2GHz reichen.

Die verwendete Virtualisierungslösung ist uns hierbei völlig Hupe. Wir gehen einfach mal von der effizientesten Lösung für das Szenario aus ;)

Ich danke schonmal Allen, die sich hierfür kurz Zeit nehmen und ich betone nochmal, es ist ein Gedankenspiel und wir sind schlicht an ein paar Kenngrößen interessiert, die bestmöglich aber nicht notwenidiger Weise aus der gelebten Praxis stammen.
 
Wir hatten jetzt erstmal 200 eigenständige Win7 VMs im Kopf.
 
Da stellt sich natürlich die Frage, was man unter "Poweruser VM" zu verstehen hat. Wenn ich auf meinem MacBook eine(!!) Linux VM betreibe, die nur einen Web- und Datenbankserver bereitstellt, dann ist es völlig egal, ob ich 1 oder 8 Kerne zur Verfügung stelle, solang nicht allzuviele Anfragen gestellt werden. Wenn ich dann aber einen Lasttest fahre, spüre ich natürlich jeden einzelnen Kern.

Generell ist es (selbstverständlich) so: 5 virtuelle Maschinen auf einem Kern können maximal 5x 20% der CPU auslasten.

Beispiel #1: Bitcoin Mining. Dafür sind VMs denkbar ungeeignet in dieser Konstellation. Das gilt im Prinzip für alle Szenarien, die die CPU permanent auslasten.

Beispiel #2: Webserver, DB Server, Backup Server. Hier liegt eine unregelmäßige Last an und v.a. Backup Server sind nur alle paar Minuten/Stunden mal aktiv (oder eben Nachts wenn die anderen VMs die geringste Last haben). Hier lässt sich die CPU Power gut aufteilen.

Beispiel #3: Thin clients. D.h. die virtuellen Maschinen stellen quasi die Rechenleistung + grafische Oberfläche bereit und die Thin Clients streamen nur das Bild und übertragen die Eingaben. Das wäre z.B. für ein Büro ganz praktikabel, wo viele Leute mit Word und Excel arbeiten. Da kann man dann sicherlich auch 10-12 Maschinen pro Kern fahren.
 
Also auch wenns nur ein Gedankenspiel ist würde ich auf den Clients lokal nie im Leben eine Datenbank laufen lassen. Sowas gehört auf einen Datenbank Server und nicht auf den Client.

Ansonsten hast du schon recht, es ist sehr schwer zu schätzen ohne die Anforderungen an den Client zu kennen, deine Rechnung ist aber plausibel und man kommt wirklich mit sehr wenig Hardware aus.
Beispiel: Zwei mal HP DL380 G8 mit je zwei E5-2670 v2 ergeben 40 physikalische und 80 logische Kerne. -> 2,5 VMs pro (logischem) Kern.
Jeweils 384 GB RAM im Server -> 3,84 GB RAM pro VM (Overhead und Hypervisor selbst nicht abrechnet).

Mit nur zwei Servern kannst du die 200 Clients also gut bedienen und jedem auch ohne Probleme 3 gig RAM geben. Die Speicheranbindung sollte mit 8Gig FC oder 10G Ethernet ausgelegt sein, mehrfach allerding hauptsächlich wegen der Redundanz und nicht wegen der Bandbreite.
Wichtig ist aber noch das der Storage unten drunter genug IOs liefert um die VMs zu versorgen. Wer eine SSD in seinem Rechner hat weiß das die wichtigste Komponente wenns um die gefühlte Geschwindigkeit geht die Platte ist. Hier sollte also ein potentes Storage System stehen.
 
Ein Verhältnis von virtuellen CPU Kernen (vCPU) zu physikalischen CPU kernen (pCPU) von 5:1 ist ok für Umgebungen mit sehr geringer CPU Last. Desktopvirtualisierung gehört dazu.
Für 200 vCPUs braucht es also eine Hardware Infrastruktur mit rund 40 Kernen, das ist korrekt. Das muss nicht in einem Host sein, obwohl es technisch machbar wäre. Idealerweise ist es sogar ganz bewusst nicht mit einem Host gelöst, damit man Spielraum hat falls mal ein Host ausfällt, gepatcht werden muss und so weiter.

Auf der Storage Seite sehe ich nicht mal zwingend den Bedarf für 10G, schon garnicht mehrfach. Der Durchsatz dürfte relativ überschaubar bleiben.
Eine VM, die im Idle ist, schlägt mit ca. 5 IOPS zu Buche, sodass man den Storage entsprechend danach anpassen muss. Im Idle musst du also mit ca. 1000 IOPS rechnen, was aber ja noch nicht sehr viel ist.

Bei deiner Überlegung würde ich also so mit, je nach dem was ich kriegen kann, vier Hosts arbeiten. Jeder mit ~12 Kernen und 128 GB RAM und entsprechenden Netzwerkkarten oder FC Karten zur Anbindung des Storages.
Beim Storage würde ich, je nach dem welche Gesamtmenge nötig ist, irgendwas auf Basis von FC oder iSCSI nehmen. Aus Gründen der Redundanz dann natürlich zwei, aber das sind dann so tiefergehende Detailüberlegungen. 24 2,5" 10k Platten sollten dafür ausreichen, insgesamt wären damit dann so 24x300 bis 24x1200 GB brutto drin. Zumindest dann, wenn auf den meisten Clients dann auch konstant nicht viel los ist. Ansonsten würd das ganze Konstrukt etwas träge und man sollte auf 15k Platten und mehr Platten setzen.
 
...würde ich auf den Clients lokal nie im Leben eine Datenbank laufen lassen...
Dieser Anspruch kam uns wohl einfach in den Kopf, weil die Anwendung, die bei uns hier in der Firma entwickelt wird, unter anderem auf eine lokale Datenbank setzt. Die Hintergründe möchte, kann und darf ich hier nicht erörtern, da haben sich ein paar kluge Leute aber Gedanken drüber gemacht, das kann ich dir versichern ;) Die Hauptlast wird auch durch eine externe, zentrale Datenbank getragen. Aber das ist ja auch ein anderes Thema.

Ansonsten schonmal Danke an alle für die Hinweise und Infos. Ich muß mich unbedingt mal ein bisschen mit VM Performancemessungen beschäftigen, um ein bisschen ein Gefühl für die Last, die eine VM bei verschiedenen Tätigkeiten auf den Host ausübt, zu bekommen.
 
Ich glaube ein ganz wichtiger Aspekt ist die Frage nach Stoßzeiten...
Ich kenne das aus einem ganz ähnlichen Szenario, wobei man im laufenden Betrieb bei uns etwa 6 VMs/Core hatte. Das funktionierte soweit auch fehler- und einwandfrei, solange die VMs nicht abgemeldet werden, sondern nur getrennt.
Wenn aber (aufgrund von Updates) alle Maschinen abgemeldet wurden und sich tatsächlich "blöderweise" 95% der entsprechenden Mitarbeiter in einem Zeitfenster von 5 Minuten gleichzeitig an ihren Maschinen anmelden, dann kann es richtig lustig werden... mal abgesehen davon, dass die CPUs alle Vollast gefahren haben, war der Speicher ordentlich am arbeiten und Netzwerk hatte eh keine Lust mehr... ist eventuell eine Überlegung für das Szenario...
 
Warum schaltet Ihr nicht 5 bis 10 Keyuser im Vorhinein als Testlauf auf und schaut Euch mal 'ne Woche / zwei die Auslastungen an?

Ich denke ohne eure Software, Datenbanken etc zu kennen kann Euch niemand eine wirklich qualifizierte Antwort geben.
 
@Sun_set_1
Ich betone nochmal, es ist ein Gedankenexperiment und hat nichts mit einer zu realisierenden Umgebung zu tun. Wir haben uns schlicht aus Interesse mal ein bisschen informieren wollen, was man für eine größere Installation an Hardware andenken müsste. Falls sowas tatsächlich hier anstehen sollte, gibts dafür (zum Glück ;) ) eine IT Abteilung, die (hoffentlich) weiß, was sie bereitstellen müssten.
 
DieNicki schrieb:
wäre Oracle Engineered Systems denkbar für Dich?
Da es ein reines Gedankenexperiment ist/war, wäre so ziemlich alles für mich denkbar. Allerdings ist dein Einwurf in keinerlei Hinsicht zielführend für die von mir aufgeworfene(n) Frage(n). Dazu fällt mir eigentlich nur ein: "Wer gelesen hat, ist klar im Vorteil".
 
Zurück
Oben