Citrix

Server 2016 mit Citrix Provisioning auf physikalische und virtuelle Systeme gleichzeitig streamen

Der erste Eintrag – juhuu!

In unserer Infrastruktur, die auf VMware ESXi (6.5) basiert haben wir seit etwas längerer Zeit immer mal wieder Probleme, dass es Performance-Knicks gibt. Dies merkt man insbesondere dann, wenn die Last auf den Systemen über den Tag nach oben geht. Nach etwas Recherche sind wir darauf gestoßen, dass zwar die altbekannte CPU-Ready-Zeit aussagt, dass es den Hosts trotz overcommitment der CPUs noch gut geht. So die Theorie.

Die Systeme sind allesamt Multisockel-Systeme. Die Taktung der Prozessoren liegt im Bereich von 2,x GHz – eben das, was wirtschaftlich erschwinglich ist. Für Applikations-, File- und Datenbankserver reicht die Performance auch aus. Kommen nun aber Terminalserver dazu, reißen diese Systeme schnell auf einem Host Lücken.

Wir haben das durch Performance-Indikatoren noch nicht abschließend bestätigt, aber: Es hilft die beste CPU-Ready-Zeit nichts, wenn ein Peak über 35 Sekunden geht, wo der Terminalserver dann über 5000 MHz braucht, der Rest der Systeme aber deutlich weniger. Trotzdem kommt das System mit seiner ursprünglichen Taktung (2,x GHz) nur schlecht hinterher. Was tun? Back to the roots – „bare metal“ – Provisionierung.

Die Literatur zu diesem Thema ist dünn. Citrix schreibt dazu hier sinngemäß: sieh zu, dass die Treiber stimmen und alles wird gut. Dann guck noch, ob PXE richtig funktioniert und das läuft schon.

Aufbau des Systems:

Gesagt getan. Nach einigem hin und her sind wir bei folgender Konfiguration gelandet:

  • Supermicro SC813M TQ-350CB
  • X11SSL-F-O
  • Xeon E3-1275 V6
  • 48 GB DDR4 – RAM (ECC)
  • Corsair 60 GB SSD
  • USB-Stick
  • MSI GeForce GT 710 2GD3H LP mit RiserCard

Ziel sollte sein, die Terminalserver aus der Virtualisierung loszulösen. Das bietet folgende Vorteile:

  • Wenn ein exklusives System amok läuft, sind 30-50 User betroffen, aber nicht mehr, weil z.B. ein Datenbankserver immer noch fröhlich rechnen kann.
  • Die o.g. Konfiguration ist ein Mono-Sockel-System. Dadurch verschenkt man zwar Lizenzen (ja, danke MS für die tolle Server 2016 – Lizensierung), erreicht aber günstiger die höhere Taktung der CPU. Wer mal nach einer E5-CPU mit 3,8 GHz Takt sucht, wird schnell traurig, wenn der Preis auftaucht…
  • Der single point of failure wird kleiner. Wenn ein ganzer Host mit mehreren Systemen (Terminalservern) ausfällt, sind logischer Weise mehr User betroffen, als auf nur einem System.

Genug Gründe, mehr machen:

Schritt 1 – Konfiguration des Servers

Grundsätzlich gilt, wenn man die Grafikkarte verbaut (wir haben das gemacht, um nicht die CPU des Servers die Grafik rechnen zu lassen), diese richtig zu konfigurieren. Damit sperrt man sich aber vom IPMI-Board (ILO / IRMC) aus! Man kann den Server noch neu starten, braucht dann aber einen direkten Zutritt zum System mit Monitor und Tastaturanschluss. Das ist aber dann nicht mehr notwendig, wenn man das System einmal sauber konfiguriert hat. Die Grafikkarte ist nicht zwingend erforderlich.

Umstellen auf UEFI-Boot:

Damit das gleichzeitige Streamen klappt, empfiehlt es sich, UEFI/EFI zu verwenden. Dazu müssen auf dem Supermicro-Mainboard einige Optionen gesetzt werden:

  • Advanced – PCIe/PCI/PnP Configuration
    • PCH Slot5 OPROM > EFI
    • CPU SLOT6 OPROM > EFI
    • CPU SLOT7 OPROM > EFI
    • Onboard LAN Option ROM Type > EFI
    • Onboard Video Option ROM > (Das entfällt mit der zusätzlichen Grafikkarte)
  • Boot – Boot Mode Select > UEFI
    • Dann noch die entsprechende Startreihenfolge verwenden. In unserem Fall USB-Sticks

Bei Verwenden der / einer zusätzlichen Grafikkarte

  • Advanced – Chipset Configuration – Graphics Configuration
    • Primary PEG (wenn Karte in Slot 6 oder 7, was eigentlich auch nur möglich ist)
    • Primary PCIE (wenn Karte in Slot 4 oder 5)
  • Dazu muss noch der Jumper JPG1 auf dem Board umgesetzt werden, sonst verwendet das System immer noch die integrierte Grafikkarte.

Schritt 2 – V2P und V2V des Images

Der Schritt V2V entfällt, wenn die virtuellen Hüllen bereits auf EFI statt BIOS eingestellt sind. Wichtig ist eine gemeinsame Konfiguration. Eine Anleitung für V2V fällt hier weg, die gibt es z.B. hier. V2P ist im Grunde genommen noch viel einfacher:

  1. Mit der Windows Server Sicherung ein volles Abbild des Systems erstellen
  2. (Entfällt, wen VM schon UEFI/EFI war) bereitstellen der Hyper-V-Rollen auf einem Server 2016 (nicht zur Virtualisierung, sondern zum Management von VHDs)
    1. Die Backup-Platte mounten und mit MBR2GPT konvertieren. Eine Anleitung findet sich hier.
    2. Festplatte ggf. auf die Größe der Zielplatte im Hardware-Server (bei uns „nur“ 60 GB) resizen. Dazu muss die gemountete Platte zuerst in der Datenträgerverwaltung verkleinert werden, danach muss sie ausgehängt werden. Die VHDx lässt sich dann am einfachsten mit dem Hyper-V-Manager verkleinern. Dieser Schritt ist sehr wichtig, weil die Rücksicheurng auf den Hardware-Server sonst nicht funktioniert!

Schritt 3 – Wiederherstellung und Anpassung

Mit der Windows Serverwiederherstellung kann der Server dann auf die Hardwaremaschine wiederhergestellt werden. Fehlende Treiber für das Board gibt es als ISO zum Download. Die Grafikkartentreiber je nach Hersteller herunterladen und ebenfalls installieren. In unserem Test wurde nur ein PCI-Device (wir konnten das an der Vendor-ID nicht identifizieren) nicht erkannt / installiert werden. Das tut der Funktion aber keinerlei Abbruch.

Wir haben als Start-Datenträger für die Hardware USB-Sticks verwendet. Diese müssen mit FAT32 formatiert werden. Erstellen kann man die Startdatenträger, indem man vom PVS-Server folgende Dateien aus dem Programmverzeichnis kopiert:

  • BDM.exe
  • BDMworker.dll

Danach lässt sich mit der BDM.exe das Boot-Device (USB-Stick) erstellen. Wichtig ist hier, die Option „Target device is UEFI firmware“ zu setzen. Im zweiten Fenster muss dann noch der Boot NIC Interface  auf die entsprechende Karte umzustellen (0,1,x)

Mit diesem Stick lässt sich die Hardware dann starten.

Ist das System dann mit Treibern versorgt, kann mit einem P2V wieder ein Provisioning-Image erstellt werden und schon kann von beiden Devices (bei uns: VMware und Hardware) parallel gebootet werden.

Damit die Hardwaremaschine die volle Power bietet, müssen die Energieoptionen (bei uns über GPO) des Systems auf „Höchstleistung“ gestellt werden. Ansonsten taktet die CPU runter und das System ist nicht so berauschend schnell…

Abschließend bleibt dann noch die Anpassung des Systems mit GPOs. Wir haben mit vielen Anpassungen die Benutzererfahrung so gestaltet, dass möglichst viel ausgeblendet wird, was der User nicht sehen soll oder gar nicht bedienen kann. Das obliegt aber dem Admin, was hier ausgeblendet werden soll.

Eine englische Version folgt auch in Kürze 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.