Dieser Artikel beschreibt eine Pilot Umgebung vom Citrix™ Provisioning Server innerhalb einer XenServer Umgebung. Virtuelle Maschinen mit virtuellen Festplatten zu starten, ist eine Variante um schnell (sehr schnell) und unkompliziert neue VMs zur Verfügung zu stellen.
Zuerst sollte natürlich eine XenServer Umgebung zur Verfügung stehen. Ich benutze für dieses Beispiel einen einzelnen XenServer mit local SR. Dadurch ist es möglich dieses Beispiel auch mit der kostenlosen Express Edition vom Citrix™ XenServer nachzustellen. Ich setze Erfahrungen mit der Konfiguration und Administration des XenServers voraus und gehe deshalb nicht weiter darauf ein.
Wichtig ist an dieser Stelle, dass ich nur ein internes Netzwerk für die komplette Umgebung benutze. Wer von den virtuellen Maschinen aus auf das Internet zugreifen will, muss entweder ein externes Netz konfigurieren oder sich zusätzlich noch einen virtuellen Router z.B. mit Debian Etch bauen. Eine gute Anleitung dazu ist auch noch unter CTX116456 zu finden.
Ohne einen Router und somit ohne Zugang zum Internet, müssen wir aber trotzdem an ein paar Sourcen kommen. Deshalb ist es erforderlich, dass der XenServer eine ISO Library hat in der wir solche Sachen (z.B. das W2K3 ISO File) ablegen können um sie später zu installieren.
Weil aber der XenServer ohne externes Netzwerk nur auf ISO Files innerhalb der ISO Library zugreifen kann, haben wir mit allen anderen Sourcen ein kleines Problem. Dafür gibt es das Tool Folder2ISO, damit Erstellen wir uns aus einer Ordnerstruktur ein *.iso File in dem alle anderen Sourcen liegen. Dieses *.iso kopieren wir dann einfach in die ISO Library und dort können wir in der XenCenter Konsole wunderbar darauf zugreifen.
Als erste virtuelle Maschine brauchen wir mal einen Windows 2003 Domänen Controller. Dieser ist zwar für den Citrix™ Provisioning Server nicht unbedingt erforderlich, wir wollen aber unserer vDisk-VMs gleich in eine Domäne aufnehmen.
Wir legen uns also eine virtuelle Maschine (hier DC001) mit folgenden Einstellungen an.
Danach folgt eine Standard-Installation eines Windows Server 2003 (ich benutze die Enterprise R2 Version mit SP2). Nach Abschluss der Installation nicht vergessen gleich die XenTools zu installieren. Zur weitern Konfiguration jetzt noch im Server Manager den „Configure your Server Wizzard“ für den ersten Server durchlaufen lassen (also Rollen für Active Directory, DNS und DHCP) anlegen lassen. Was dann wie folgt aussehen sollte:
Wie ihr euren neuen Domänen Controller konfigurieren wollt, bleibt euch überlassen. Was aber wichtig ist, machen wir jetzt im folgenden noch. Als erstes (weil Windows das mit dem Wizzard irgendwie nicht hinbekommt) legen wir im DNS noch eine Reverse Lookup Zone an, da wir ja eine funktionierende Namensauflösung benötigen.
Der DHCP Server sollte vom Wizzard schon soweit angelegt worden sein und laufen. Das Kontrollieren wir noch schnell.
Um die Sache noch spannender zu machen, legen wir uns eine eigene „Organisation Unit“ im Active Directory, für unsere virtuellen vDisk Maschinen (müssen wir aber nicht zwingend) an.
Das war, was den Domänen Controller angeht, erstmal alles. Machen wir also weiter.
Für den Citrix™ Provisioning Server benötigen wir auch eine virtuelle Maschine (hier PVS001) die sich nicht so wirklich vom Domänen Controller unterscheidet. Ich habe hier folgendes konfiguriert:
Auch hier benutze ich eine Standard Installation mit Windows Server 2003 Enterprise R2 mit SP2. Nach Abschluss der Installation nicht die XenTools vergessen. Alles weitere ist Kosmetik und kann von jedem so konfiguriert werden wie er möchte. Zuerst jedoch nehmen wir diesen Server noch in die Domäne auf. Nachdem Reboot melden wir uns als Domänen-Administrator an der Maschine an.
Hier müssen wir noch über das Disk Management das zweite 30 GB große Laufwerk formatieren, damit wir später unsere vDisks darauf ablegen können.
Da wir ja für den Citrix™ Provisioning Server einen Citrix Lizenzserver benötigen, müssen wir jetzt noch ein paar Kleinigkeiten installieren damit uns nicht die folgende Fehlermeldung begegnet.
Wir brauchen:
Die drei Sachen (.NET Framework und JRE packen wir in ein ISO File wie oben beschrieben) installieren wir in der o.g. Reihenfolge. .NET Framework und JRE über die Setup Routine, den IIS über den „Configure your Server Wizzard“ (mit ASP, ohne Frontpage). Danach können wir mit der Installation des Citrix Lizenzservers beginnen. Bei der Installation auch die “License Management Console“ mit installieren, die benötigen wir später um den Lizenzfile einzubinden. Wenn ihr ebenfalls das J2SE RE5 Update 16 benutzt habt, meckert die Installation noch über eine „nicht unterstützte Java Version“, was wir mit [Yes] aber einfach übergehen.
Da die Installation eine Weile benötigt, ein guter Zeitpunkt den Lizenzfile von der MyCitrix Website runter zu laden (falls ihr einen Account und eine Lizenz habt
), aber unsere Testumgebung funktioniert auch erstmal ohne Lizenzfile. Nach der Tesperiode allerdings fahren eure vDisk Maschinen nach 5 Minuten wieder runter, wenn ihr keinen Lizenzfile hochgeladen habt.
Der nächste Schritt ist die Installation der eigentlichen Citrix™ Provisioning Server. Wir wählen hier „Install Server for x86 Platform“ aus dem Startscreen der PVS4.5 CD (die hoffentlich als *.iso in der ISO Library liegt). Die Installation wird immer schön brav mit [Next] bestätigt, da wir alles auf default lassen. Nach dem letzten Klick auf [Finished] ist die Installation beendet und der „Provisioning Server Configuration Wizzard“ startet.
Nach der freundlichen Begrüßung müssen wir zuerst den DHCP Service angeben. Wir benutzen hier den DHCP Server auf dem Domänen Controller und wählen hier „The service that runs on another computer“.
Danach folgt der PXE Service, den wir auf dem Provisioning Server lassen.
Jetzt folgt noch der Pfad für die Provisioning Server Database, den wir so übernehmen können (den Haken für „Create New Database“ nicht setzen, da der PVS bei der Installation schon eine Datenbank angelegt hat). Nach dem Klick auf [Next] muss jetzt noch der Name des Lizenzservers und der Port angegeben werden. Da wir den Lizenzserver lokal installiert haben, sollte alles vorgegebene so stimmen. Auch die folgende Konfiguration der Netzwerkkarten für den Streaming Service können wir einfach übernehmen.
Als nächstes folgt die Konfiguration der TFTP Option und des Bootstrap Pfades, hier setzen wir einfach das Häkchen und lassen den Pfad wie vorgeschlagen.
Die folgende „Stream Server Boot List“ sollte auch passen und wird mit [Next] einfach bestätigt. Nun folgt eine kurze Zusammenfassung und mit [Finished] (Automatically Start Services sollte angehakt sein) sind wir fertig.
Bevor wir aber jetzt mit unserem „Master Target Device“ loslegen können, müssen wir den DHCP Server auf dem Domänen Controller noch etwas konfigurieren. In der DHCP Konsole auf dem Domänen Controller müssen wir noch die beiden Options 66 und 67 setzen, damit unsere Server auch den PXE Server und das Boot Image finden.
Die Option 066 Boot Server Host Name gibt den Bootserver an, wir tragen hier die IP-Adresse des PVS001 (10.0.0.2) ein und die Option 067 Bootfile Name gibt den Bootfile Namen an (ARDBP32.BIN). Der Bootfile ist auf dem Provisioning Server unter <Installationverzeichnis\Citrix\Provisioning Server\Tftpboot zu finden. Wichtig ist, diese Optionen in den „Server Options“ zu konfigurieren und nicht in den „Scope Options“.
Jetzt starten wir die Provision Server Konsole und erstellen uns eine neue virtuelle Disk.
Wir wählen hier die erste Option, da wir ja für unsere VMs eine gemeinsame Bootdisk haben wollen. Dafür müssen wir jetzt noch ein paar Informationen angeben.
Ich lege auf unserem 30 GB Laufwerk noch Ordner für die einzelnen vDisks an und verweise beim „Directory“ dann in diesen Ordner. Der „Disk name“ sollte ein Name sein, mit dem man die vDisk einfach identifitzieren kann (in unserem Beispiel W2K3R2). Die Größe gebe ich hier mit 8 GB an, was nur für das OS ausreichend sein sollte.
Die angelegte vDisk darf natürlich nicht kleiner sein, als die des Master Target Devices.
Zu guter letzt eine „Description“ mit der auch ein Dummy was anfangen kann angeben. Das Erstellen der Disk dauert jetzt etwas (ca. 30 min.), was uns Zeit für einen Kaffee gibt (oder um schon das Master Target Device schon zu installieren).
Diese neue vDisk ist nur eine Hülle, die später die Informationen von unserem Master Target Device aufnimmt. Vergleichbar ist diese vDisk mit einer leeren Festplatte, die wir nach Fertigstellungauch noch lokal einbinden und formatieren müssen. Wenn die neue vDisk fertig ist, erscheint sie sofort in der Provisioning Server Console. Mit einem Rechtsklick auf die vDisk können wir uns nun die vDisk lokal mappen.
Das kleine Laufwerkssymbol bekommt in der Konsole jetzt ein kleines rotes L was für locked steht. Im Disk Management von Windows taucht nun ein Wechseldatenträger auf, den wir noch formatieren müssen. Leider können wir die Disk, zumindest im Disk Manager nur mit FAT32 formatieren. Deshalb öffnen wir einfach den Arbeitsplatz, wo wir auch den Wechseldatenträger finden. Hier können wir mit einem Rechtsklick auf „Format“ die Disk mit NTFS formatieren.
Nun noch die Disk in der Provisioning Server Console mit einem Rechtsklick auf die Disk „unmappen“ und das war hier erstmal alles.
Was den Citrix™ Provisioning Server angeht sind wir soweit fertig. Was wir jetzt noch brauchen, ist eine vDisk damit wir davon unsere VMs booten können. Hierfür benötigen wir eine Vorlage, ein Master Target Device.
Ein Master Target Device ist nichts weiter als ein fertiger physischer Server von dem wir ein „Image“ erstellen. Zuerst muss mal ein Server mit OS fertig sein den wir jetzt (falls nicht schon erledigt) installieren. Ich habe hier folgende Einstellungen definiert:
Auch hier kommen sofort nach der Installation von unserem altbekannten Windows Server 2003 Enterprise R2 mit SP2 erstmal die XenTools drauf. Der Server sollte auch schon eine IP-Adresse von unserem DHCP Server bekommen. Wenn das alles passt, nehmen wir unser Master Target Device auch gleich in die Domäne auf. Damit auch alles seine Ordnung hat, verschiebe ich den MTD001 auch gleich in die weiter oben erstellte OU (in unserem Beispiel vDisk Server).
Direkt nach dem OS (und den XenTools) müssen wir den Provision Server Client installieren. Dazu benötigen wir wieder die PVS45 CD. Auf der Startseite der CD wählen wir Install Target Device for x86 Platform. Auch hier immer schön [Next] klicken und alles was vorgeschlagen wird übernehmen. Nach dem [Finish] führen wir auch den geforderten Restart durch.
Nachdem unser Server (MTD001) wieder da ist, finden wir in der Taskleite ein neues Symbol mit einem roten „X“. Das zeigt uns lediglich, dass der Client installiert aber die virtuelle Disk inaktiv ist. Was ja auch in diesem Fall noch richtig ist.
An dieser Stelle würden jetzt alle Applikationen installiert werden, die später auf unseren Server vorhanden sein sollen (z.B. XenApp). Für unser Beispiel bleiben wir erstmal nur beim OS.
Im Startmenü gibt es jetzt einen neuen Eintrag für den „Citrix Provisioning Server“ und darunter liegt der „Provisioning Server Device Optimizer“, den wir einfach mal starten.
Mit diesem Tool können wir unser vDisk Image etwas optimieren (oder auch nicht). Alle Einträge sollten bereits ausgewählt sein (was in der regel auch so richtig ist), wer etwas abwählen möchte kann das gern machen. Alle Optionen sind soweit selbst erklärend. Nachdem alles „optimiert“ ist, müssen wir noch die Verbindung mit unserer virtuellen Platte herstellen um unser Image dort abzulegen.
Wir stellen in den Eigenschaften unserer virtuellen Maschine zuerst die Bootreihenfolge auf Netzwork ⇒ CD/DVD Drive ⇒ Harddisk um, denn wir möchten jetzt schon mit PXE booten. Beim booten wird euch auffallen, dass die VM rasend schnell in den Bootloader bootet und dieser euch gleich mit Fragen konfrontiert. Der Provisioning Server hat bemerkt, dass eure Maschine noch nicht in seiner Datenbank ist und benötigt vorab erst noch einige Informationen.
Jetzt kommt die Frage, welche virtuelle Disk ihr verwenden wollt. Da es aktuell nur einen Citrix Provisioning Server mit genau einer vDisk gibt, wählen wir hier die 1. Jetzt aufpassen, wir wollen nicht von der vDisk booten (die ist ja auch leer), sondern von der lokalen Platte (von der müssen wir ja noch das Image erstellen). Hier also unbedingt Boot from hard drive auswählen.
Der Server startet jetzt normal von seiner lokalen Platte. Nachdem wir uns angemeldet haben, sollte das kleine Icon in der Taskleiste kein rotes X mehr haben. Dies zeigt uns, dass die vDisk aktiv ist. Wenn wir jetzt auf die Provisioning Server Konsole gehen, dann sehen wir das unser Master Target Device inklusive der vDisk unter dem Knoten Target Devices angezeit wird.
Wenn wir jetzt wieder zurück auf die Konsole vom MTD001 wechsel, stellen wir fest das im Explorer nur das Laufwerk C: (und D: für das virtuelle cd/DVD Laufwerk von XenServer) zu sehen ist. Das liegt daran, das der Provisioning Server die vDisk als Laufwerk C: einbinden möchte (was später für unsere weiteren Maschinen auch richtig ist). Da dieser Laufwerksbuchstabe bereits durch die lokale Platte belegt ist, weist er der vDisk keinen Buchstaben zu. Wir müssen jetzt also im Disk Management von Windows der Platte (die dort auch vorhanden sein sollte) einen Buchstaben zuweisen. In unserem Beispiel nehmen wir einfach E:.
Nun ist die Platte auch im Explorer zu sehen. machen wir uns also an das Erstellen des Images. Dazu starten wir aus dem Startmenü den Provisioning Server Image Builder und machen unsere Einstellungen wie im nachfolgenden Screenshot.
Zum Abschluss klicken wir noch auf [BUILD], beantworten die Warnung mit [Yes] und das komplette System wird in die vDisk geschrieben. Nach Fertigstellung benötigen wir unser Master Target Device nicht mehr und können es runterfahren (nicht löschen, später haben wir noch Verwendung für dieses System). Jetzt können wir uns mit dem Testen unserer Umgebung befassen.
Bevor allerdings unserer VMs von dieser Platte booten können, müssen wir erst noch den „Lock“ entfernen und unserer vDisk konfigurieren. Als ersten Schritt klicken wir mit rechts auf die vDisk unter dem Knoten PVS001 und wählen Manage disk locks…. Im folgenden Fenster sollte der MTD001 die vDisk exklusiv gesperrt haben. Wir klicken also auf [Remove ALL] und dann auf [Close].
Nun klicken wir erneut mit rechts auf die vDisk unter dem Knoten PVS001 und wählen Prperties. Auf die einzelnen Optionen werde ich später noch eingehen. Zuerst klicken wir die Karteikarte Disk Mode an. Dort sehen wir, dass der Disk Access Mode auf Private Image (single client, read/write access) steht. Für unser weiteres Vorgehen natürlich nicht sehr nützlich, deshalb stellen wird den Access Mode auf Standard Image (multi-client, write cache enabled) um. Die weiteren Felder interessieren uns vorerst nicht, um diese kümmern wir uns später. Jetzt noch alles mit [OK] übernehmen.
Nachdem unsere Umgebung jetzt fertig ist, können wir damit Anfangen VMs anzulegen. Es gibt mehrere Möglichkeiten die virtuellen Maschinen in der Citrix™ Provioning Server Console anzulegen. Wir beginnen mit den zwei leichtesten. Zuerst erstellen wir uns zwei virtuelle Maschinen (ich benutze hierfür das „Other install media“ Template) im XenCenter mit folgenden Eigenschaften:
Die erste der beiden Maschinen können wir gleich mal starten und uns den Startvorgang auf der Konsole der VM anschauen. Das was nun auf der Konsole erscheint, sollte uns bereits vom booten des MTD001 bekannt vorkommen. Was passiert hier beim booten?
Unsere VM startet und bekommt von unserem DHCP Server eine IP-Adresse sowie die PXE Informationen. Dieses Bootimage kontaktiert den Citrix Provision Server der feststellt, dass dieser Server sich noch nicht in der Datenbank befindet. Wir müssen also erstmal ein paar Daten erfassen (das sollte uns auch schon vom Master Target Device bekannt vorkommen).
Mit der „Any Key“ Taste wird die Maschine mit der neuen Konfiguration gestartet und sollte, wenn alles glatt läuft, von der virtuellen Platte starten. Wenn nicht, dann wurde irgendwas von dem oben beschriebenen vergessen.
In der Provisioning Server Konsole sehen wir jetzt auch unseren VM001 mit zugehöriger vDisk.
Dieser Weg hat aber auch enorme Nachteile:
In einer produktiven Umgebung sollten wir dieses „Feature“ natürlich abschalten. Dazu müssen wir in der Provisioning Server Konsole unter den Eigenschaften des Provisioning Servers das Feature „Automatically add new target devices using BIOS promts“ deaktivieren.
Kommen wir nun zur zweiten Möglichkeit, in dem wir unseren Server VM002 in die Provisioning Server Konsole aufnehmen. Hier für benötigen wir zuerst die MAC Adresse unseres Servers. Diese finden wir im XenCenter unter dem Reiter Network.
Mit dieser MAC Adresse können wir nun in der Provisioning Server Konsole ein neues Target Device anlegen. Wir klicken also mit rechts auf den Knoten Target Devices und wählen dort den Menüeintrag [New Target Device…].
Jetzt können wir die Informationen für unser neues Target Device erfassen. Fangen wir mal mit dem Reiter General an.
Alle Informationen sollten Eigentlich selbst erklärend sein (der Port bleibt natürlich auf 6901). Jetzt benötigen wir noch eine Zuordnung zu einer vDisk (wir haben ja nur eine). Diese konfigurieren wir unter dem Reiter Disks. Mit einem Klick auf den [Change] Button fügen wir eine Disk zu unserem Target Device dazu.
Die Fehlermeldung „This virtual drive image is already assigned …“ bestätigen wir einfach mit [Yes]. Jetzt noch ein Klick auf [OK] und unsere vDisk ist zugeordnet. Alle anderen Reiter interessieren uns erstmal nicht und wir schließen den New Target Device Dialog ebenfalls mit [OK].
Unser VM002 Server ist jetzt fertig zum booten (Bootreihenfolge auf Netzwerk zuerst eingestellt?). Ein Blick auf die Konsole des VM002 zeigt uns, dass die Maschine ohne weitere Rückfragen erfolgreich gestartet ist. Auch ein Blick in die Citrix™ Provisioning Server Konsole zeigt uns den VM002 mit zugeordneter vDisk an.
Wer jetzt schon versucht hat sich mit dem Domänen Account an einer der beiden Maschinen (M001 und VM002) anzumelden wird Wissen was jetzt kommt. Alle anderen können sich jetzt mal an einer der beiden Maschinen mit dem Domänen Administrator an der Domäne anmelden.
Ups, was ist das?
Ganz einfach, es existieren für unsere neuen Maschinen keine Computerkonten im Active Directory. Diese können wir aber manuell anlegen. Zuerst jedoch müssen wir im Active Directory die Disable machine account password changes Richtlinie setzen.
Computer Configuration
Windows Settings
Local Policies
Security Options
Domain member: Disable machine account password changes. => Enabled
Mit einem Rechtsklick in der Provisioning Server Konsole auf den entsprechenden Server (hier erstmal VM001) wählen wir den Menüpunkt [Add Target Device to Domain]] und tragen die benötigten Informationen ein.
Nach einem Klick auf [OK] sollte noch eine Success Meldung kommen und unsere Maschine ist in der Domäne. Ein Blick auf unseren Domänen Controller unter Active Direktory Users and Computers sollte uns nun ein Computer Account in der entsprechenden OU anzeigen.
Jetzt müssen wir noch das Computer Account Passwort modifizieren, was wir auf der Kommandozeile machen.
SetComputerAccount /m VM001 /p
Wo wir jetzt ohnehin schon auf der Kommandozeile sind, nehmen wir unseren zweiten Server (VM002) auch gleich in die Domäne auf.
SetComputerAccount /c VM002 SetComputerAccount /m VM002 /p
Und jetzt sollten wir uns auf beiden Maschinen mit dem Domänen Account anmelden können.Was ich etwas erschreckend fand ist, dass alle Maschinen die gleiche SID haben. Was laut Microsoft in einer Domäne nicht problematisch sein soll und nur in Arbeitsgruppen zu seltsamen Verhalten führen kann.
Dies ist für ein oder zwei Server kein Problem. Doch für eine größere Anzahl von VMs mit Sicherheit keine Lösung. Zum testen und für erste Schritte sollte dieser Artikel erstmal ausreichen. In einem zweiten noch folgenden Artikel gehe ich dann näher auf die Citrix™ Provisioning Server Konsole, Provisioning von mehreren Systemen inklusive Domänen Mitgliedschaften, Personalisierung von Systemen sowie einer Citrix ™ XenApp Installation in dieser Umgebung ein.
Ich sehe den Citrix™ Provisioning Server als guten Ansatz, nicht aber als ein Produkt welches im Enterprise Umfeld eingesetzt werden kann. Verschiedene Punkte führen mich zu dieser Ansicht:
Hier besteht noch massiver Handlungsbedarf um dieses Produkt (wir reden hier von Lizenzkosten von ca. € 800 pro Server) auch im Enterprise Umfeld eingesetzt werden kann. Ich behaupte aber, dass zukünftig genau solche Lösungen im Rechenzentrum zu finden sein werden.