Last Updated on 21. Februar 2022 by Sebastian
Inhaltsverzeichnis
Einleitung
Ich bin schon viele Jahre als Trainer bzw. Dozent tätig. Anfänglich an der Volkshochschule danach bei meinen Arbeitgeber. In der Volkshochschule hatte ich viel Kurse gegeben mit Client-Betriebssystemen wie Windows XP oder Windows 2000. Die VHS stellte dort den Kursteilnehmern genauso wie mir einen entsprechenden PC bereit und anschließend haben wir uns an Hand des Kursbuch durch die einzelnen Menüs geklickt. Meine ersten Serverkurse waren dann mit Windows 2000 Server. Hier stelle mir die Volkshochschule dann nichts mehr bereit. Damals habe ich alle um einen Tisch versammelt und wir haben gemeinsam an einem PC die entsprechenden Basics gelernt wie man z.B. ADS einrichten, DNS oder DHCP Konfigurieren. Ich weis noch das der PC damals einen AMD Athlon X2 enthielt und die Windows Server Umgebung via KVM auf Linux virtualisiert wurde. Warum ich das damals so getan habe? Es war wie in vielen solcher Projekte einfach der Spieltrieb. Neben dem Bereitstellen einer Infrastruktur sollte der eigene Wissensaufbau nicht zu kurz kommen.
Der Anfang
Als ich allerdings dann weitere Windows Server Kurse gegeben habe mit Windows Server 2008 ( R2 ) sah ich mich gezwungen eine andere Lösung zu schaffen. Mein erster Aufbau einer Schulungsumgebung mit Windows Server 2008 war dann mit einem HP Proliant Microserver. Ich bin mir fast sicher das es damals sogar noch mit einem Generation 7 war mit einem AMD Turion II. Es gab für alle Schulungsteilnehmer eine eigene Windows Server VM. Es gab keine Netzwerktrennung… Was allerdings auch für die meisten Übungen nicht nötig war. Über die Jahre hinweg wurde dann aus dem Generation 7 ein Generation 8 Microserver bis hin zu einem Intel NUC mit I5 und 32GB RAM. Die Ansprüche stiegen und ich glaube zum Schluss habe ich dann auch mit unterschiedlichen VLANs und somit eigenen Netzen pro Teilnehmer gearbeitet.
Eine professionelle Umgebung muss her
Seit einiger Zeit gebe ich nun in unregelmäßigen Abständen Schulungen im Bereich Citrix. Als ich die erste Schulung halten sollte habe ich mir intensive Gedanken gemacht wie die Ausgangssituation für die Teilnehmer sein sollte. Der Bedarf an Ressourcen in solchen Schulungsumgebungen ist um einiges höher als in klassischen Windows Server Schulungen. Es müssen viele Usecases wie z.B. das Aufbauen von Hochverfügbarkeit Raum finden. Natürlich hatte ich auch selbst Schulungen im Bereich Citrix besucht und dabei auch die andere Seite kennengelernt. Citrix selbst arbeitet mit Microsoft Azure zusammen und stellt einem Schulungsteilnehmer immer eine recht „Dicke“ VM(64 GB, 8 Kerne) als Hyper-V Instanz zur Verfügung. Damit diese Ressource nicht unnötig Geld kostet muss Sie vor dem bearbeiten von einer Aufgabe erst einmal eingeschaltet werden. Dies dauert dann im Schnitt 15 Minuten. Jede Aufgabe ist dann entsprechend vor konfiguriert und nur die nötigen VMs innerhalb der Hyper-V VM sind eingeschaltet um Ressourcen zu sparen. Wer einmal so ein Schulung besucht hat weis das die Umgebung sehr träge ist und teilweise extrem lange Wartezeiten mit sich bringt. Schade finde ich auch den Aspekt das die Umgebungen immer schon vordefiniert sind. Es ist also nicht möglich eine Farm von Grund auf zu erstellen und durchzuarbeiten. Für mich Stand sehr schnell fest das ich für meine Schulungsumgebung diesen Anspruch habe. Jeder Teilnehmer soll die Möglichkeit haben eine eigene Farm von Grund auf zu Erstellen.
Gewisse Rahmenparameter möchte ich natürlich den Teilnehmern schon mitgeben. Zum einen soll eine Domäne „lab.local“ vorhanden sein. Aber auch eine separate SQL Server Express Instanz möchte ich bereits vorinstalliert haben. Folgende VMs werden pro Schulungsteilnehmer bereitgestellt:
- DC01 – Domain Controller ( DNS, DHCP )
- MS01 – Management Server ( SQL Server Express, Lizenz Server )
- XC01 – 1. Delivery Controller
- XC02 – 2. Delivery Controller
- SF01 – 1. Storefront
- SF02 – 2. Storefront
- PS01 – 1. Provisoning Server
- PS02 – 2. Provisoning Server
- NS01 – Netscaler Fremium
- RD01 – Router
Ihr seht schon die Anzahl der VMs eskaliert hier ziemlich schnell und das führt natürlich dazu das genügend Hardware Ressourcen vorhanden sein müssen. Natürlich könnte man auf einen Management Server verzichten und alles über den DC regeln. Allerdings hatte ich in diesen in einige Schulungen sogar als Core Variante laufen um Ressourcen zu sparen und somit war dieser nicht als Management Server geeignet.
Die ersten Schulungen
Meine erste Citrix Schulung habe ich auf einem Dell PowerEdge R710 mit 2 x 6 Core CPUs und 256 GB RAM. Das Storage war eine Kombination aus 4 x 256 GB SSDs und 4 x 600 GB SAS HDDs als VSAN Konstrukt. Die Performance innerhalb der Schulungsumgebung bei 5 Teilnehmer war leider nicht so Ideal. Gerade der Rollout via MCS oder PVS zwingt den Host CPU und Storagemäßig in die Knie. Das Feedback der Teilnehmer war durchweg negativ. Aber „Lessons learned“. Bei der nächsten Schulung habe ich dann einen weiteren HOST dazu gestellt der mit einem Citrix Hypervisor ausgestattet war. Die Server habe ich mit einem Juniper EX3300 via 2 x 10GBit verbunden. Die Trennung zwischen Control/Access Layer und Ressource Layer hatte tatsächlich einen positiven Effekt und sollte die Basis meiner zukünftigen Lösungen darstellen. Die Schulungsteilnehmer waren zufrieden und dies gab mir die Bestätigung das ich mit dieser Lösung auf dem richtige Weg bin. Auch im Storagebereich habe ich einen anderen Ansatz verfolgt und habe je Teilnehmer eine SSD zugewiesen sowie maximal 2 Teilnehmer die 4 x 600 GB SAS HDDs. Dies sorgte dafür das jeder Teilnehmer fast vollständig die Ressourcen von einer SSD bzw. HDD nutzen konnte. Der neue Citrix Hypervisor Host war ein ein Dell R230 mit E5-2450L CPU und 96GB RAM. Als Festplatten waren 2 x 900 GB SAS HDDs als RAID0. Es war so Problemlos möglich VMs via MCS auszurollen oder auch via PVS vDisk zu streamen dank 10Gbit im Backend.
Der Rückschlag
Nach einigen Schulungen und einsetzender Pandemie war ich gezwungen meine Schulungsumgebung umzubauen. Bisher habe ich die Umgebung immer wieder zuhause abgebaut und am Schulungsort aufgebaut. In Zukunft soll allerdings der Zugriff auf die Umgebung von Überall möglich sein. Ich nutze für den Zugriff von extern meine eigene Laborumgebung die auf einem separaten Hypervisor läuft. Die Teilnehmer bekommen via Netscaler und Citrix den Remote Desktop Client als published application. Leider habe ich in der Zwischenzeit meine Hardware etwas überarbeitet und auf Energiesparende CPUs umgestellt. Dies hatte leider den Effekt das die eingesetzten 6 Core CPUs häufiger zu 100% ausgelastet waren. 50 VMs mit mindestens 2 vCPUs sind schon eine extreme Überbuchung der Hardware. Es wird also für die nächste Schulung wieder eine 8 Core CPU sein. Auch habe ich darauf verzichtet die Hosts mit 2 x 10 Gbit anzubinden. Ich musste allerdings Feststellen das 2 x 1Gbit mit „Round Robin“ nicht wirklich Optimal ist wenn 6 Teilnehmer gleichzeitig ein vDisk Image abziehen oder Streamen. Auch hier wird es in Zukunft wieder 10Gbit geben.
Details zur Schulungsumgebung
Die Schulungsumgebung sollte für jeden Teilnehmer identisch sein. Mir war es wichtig, das wenn wir von Host oder IP Adressen sprechen das niemand umdenken muss. Also musste ich es hinbekommen das jeder Teilnehmer die gleichen Einstellungen verwenden kann. Hierzu habe ich auf VMware Ebene für jede Umgebung eine eigene Port Gruppe erstellt.
Diese Portgruppe wurde mit einem VLAN Tag versehen der auch auf Switchebene gesetzt wurde. Damit wurde ermöglicht das jeder Teilnehmer auf dem Citrix Hypervisor seine eigenen VMs hatte und auch neue VMs innerhalb seiner Farm ausrollen konnte.
Die nächste Aufgabe war das wir einen Weg via RDP rein in die Schulungsumgebung benötigen und umgekehrt die Schulungsumgebung auch einen weg Raus bekommt. Man sollte aus der Schulungsumgebung ins Internet zugreifen können sowie das Management des Citrix Hypervisor erreichen. Hierzu setze ich auf Vyos . Dieser Schlanke auf Debian basierende Router ermöglicht mir durch ein klassisches NAT das ich auf der einen Seite immer das gleiche Labor Netz betrieben kann und auf der anderen Seite das Management/Wan betreiben kann. Hierzu habe ich euch meine Vyos Konfiguration veröffentlicht. Wichtig ist allerdings, wenn ihr später die VM dupliziert müsst ihr vorher die hw-id bei den Interfaces entfernen. Ansonsten legt Vyos immer wieder neue Interfaces an, da er beim starten die Konfiguration nicht zuordnen kann.
delete interface ethernet eth0 hw-id
delete interface ethernet eth1 hw-id
vyos@vyos# show
interfaces {
ethernet eth0 {
address dhcp
hw-id 00:0c:29:55:27:65
}
ethernet eth1 {
address 192.168.1.1/24
hw-id 00:0c:29:55:27:6f
}
loopback lo {
}
}
nat {
destination {
rule 10 {
description "RDP to MS01"
inbound-interface eth0
protocol tcp
translation {
address 192.168.1.11
port 3389
}
}
}
source {
rule 10 {
outbound-interface eth0
source {
address 192.168.1.0/24
}
translation {
address masquerade
}
}
Mit dem Router habt ihr sozusagen das Kernstück das euch den weg ebnet die ganzen VMs auch -n mal zu duplizieren ohne das es zu Probleme kommt. Da ich die Infrastruktur auf VMware betreibe habe ich hierzu ein kleines PowerCLI Skript geschrieben das es mir erleichtert ein ganzes Lab für ein Schulungsteilnehmer zu duplizieren. Die Voraussetzung ist das Ihr die Schulungsumgebungen in Ordner einteilt.
Das Skript ist sehr rudimentär und ein PowerShell/PowerCLI Spezialist weis bestimmt es noch zu optimieren. Ich kopiere in dem Skript nicht nur die VM, ich lasse auch noch das Netzwerkinterface auf die entsprechende Portgruppe anpassen. Damit sind die VMs direkt Einsatzbereit.
Connect-VIServer -Server 10.66.99.80 -User Administrator@vsphere.local -Password Passwort1!
$srcvms = get-vm -location "LAB10" | select -expandproperty Name
Foreach ($srcvm in $srcvms) {
$srvcvms_strip = $srcvm -replace "-LAB10"
new-vm -name "$srvcvms_strip-LAB15" -vm $srcvm -vmhost 10.66.99.4 -datastore "RZ1-DS01-R5" -Location "LAB15"
get-vm "$srvcvms_strip-LAB15" | get-networkadapter | where {$_.NetworkName -eq "LAB10"} | Set-NetworkAdapter -NetworkName "LAB15" -confirm:$false
}
Ich möchte noch ein paar Worte zum Thema Storage verlieren. Um gerade beim Installieren von den Anwendungen nicht so viel Zeit zu verlieren setze ich gerne SSDs ein. Idealerweise auch für jeden Teilnehmer eine eigene SSD. Leider sind SSDs nach 1 – 2 Schulungen ziemlich am Ende mit der Performance da dann alle Blöcke auf der SSD einmal beschrieben wurden und nun erst mal gelöscht werden müssen bevor Sie neu beschrieben werden. Dies merkt man deutliche beim duplizieren der VMs. Ich habe in der letzten Schulung darauf verzichtet für jeden Teilnehmer eine eigene SSD bereit zu stellen sondern habe jeweils aus 4 x 512 GB und 4 x 250 GB SSDs ein Raid 5 gebaut. Dies hat das einbrechen der Performance etwas gemindert. Zudem waren die 512 GB SSDs neu. Teilweise sind auch drehende Platten okay für die Management Umgebung. Wobei ich für den Citrix Hypervisor immer auf SSDs gehen würde. Das Sizing mit knapp 1 TB im Raid 0 war auch absolut ausreichend und ermöglicht auch beim gleichzeitigen Rollout von 6 Schulungsumgebungen via MCS noch optimale Werte.
Fazit
Ich bin mit meiner Schulungsumgebung noch nicht am Ende. Bei jeder Schulung die ich gebe wird Sie weiter entwickelt bzw. umgebaut. Dies führt natürlich auch mal dazu das es vielleicht nicht so optimal läuft wie geplant. Allerdings lerne ich immer wieder etwas dazu. In letzter Zeit z.B. spiele ich viel mit Windows Deployment Service und MDT. Aktuell entsteht nämlich mein Basis LAB immer aus einem VMware Template das ich entsprechend Klone. Viele sind hier schon weiter und lassen sich per MDT ganze Umgebungen zusammen bauen. Die Komplexität von MDT ist allerdings nicht zu verachten. So habe ich es bisher erreicht ein Windows 10 Image auszurollen. Es machte auch von alleine Windows Updates aber die Software Installation die ich geplant hatte wurde leider nicht installiert. Jedenfalls wird dies bestimmt der nächste Schritt sein. Neben der Tatsache das ich natürlich immer Versuche die Performance zu optimieren.
Hi Sebastian,
schau dir mal Scale Computing an. Wenn du auf MCS verzichten kannst.
Wir haben einen grossen Clusterselber im Einsatz und mehrere NUC (HE150) Cluster für portable Demos.
Viele Grüsse,
Fritz