Citrix Virtual Apps and Desktops Service

Dynamische Maschinenbereitstellung

Dynamische Bereitstellung von Maschinen mit Autoscale

Autoscale bietet die Möglichkeit, Maschinen dynamisch zu erstellen und zu löschen. Sie können das Feature mithilfe eines PowerShell-Skripts nutzen. Mit dem Skript können Sie die Anzahl der Maschinen in einer Bereitstellungsgruppe basierend auf aktuellen Lastbedingungen dynamisch nach oben oder unten skalieren.

Das Skript bietet u. a. folgende Vorteile:

  • Senkung der Speicherkosten. Anders als bei Autoscale, das zur Senkung der Rechenkosten beiträgt, bietet das Skript eine kostengünstigere Lösung für die Bereitstellung von Maschinen.

  • Effektive Handhabung von Laständerungen. Mit dem Skript können Sie Laständerungen handhaben, indem Sie die Anzahl der Maschinen basierend auf aktuellen Lastbedingungen in einer Bereitstellungsgruppe dynamisch nach oben oder unten skalieren.

Skript herunterladen

Das PowerShell-Skript ist unter https://github.com/citrix/Powershell-Scripts/tree/master/XAXD/AutoscaleMcs verfügbar.

Funktionsweise des Skripts

Wichtig:

  • Sie können keinen Maschinenkatalog in mehreren Bereitstellungsgruppen für die Verwaltung per Skript angeben. Mit anderen Worten: Wenn mehrere Bereitstellungsgruppen einen Maschinenkatalog verwenden, funktioniert das Skript bei diesen Bereitstellungsgruppen nicht.
  • Sie können das Skript für ein und dieselbe Bereitstellungsgruppe nicht gleichzeitig von mehreren Sites aus ausführen.

Das Skript funktioniert auf Bereitstellungsgruppenebene. Es misst die Last (anhand Lastindex) und bestimmt, ob Maschinen erstellt oder gelöscht werden sollen.

Maschinen, die mit diesem Skript erstellt wurden, erhalten ein eindeutiges Tag (über den Parameter ScriptTag) zur späteren Identifizierung. Das Erstellen und Löschen von Maschinen basiert auf:

  • Maximale prozentuale Last einer Bereitstellungsgruppe. Gibt die maximale Last an, bei der Maschinen für die Handhabung weiterer Last durch Autoscale erstellt werden sollen. Wenn dieser Schwellenwert überschritten wird, werden Maschinen gruppenweise erstellt, damit die aktuelle Last auf oder unter den Schwellenwert fällt.

  • Minimale prozentuale Last einer Bereitstellungsgruppe. Gibt die minimale Last an, bei der mit dem Skript erstellte Maschinen, die keine aktiven Sitzungen haben, gelöscht werden sollen. Wenn dieser Schwellenwert unterschritten wird, werden Maschinen, die mit dem Skript erstellt wurden und keine aktiven Sitzungen haben, gelöscht.

Das Skript soll eine Bereitstellungsgruppe überwachen und Maschinen erstellen und löschen, wenn das Auslösekriterium erfüllt ist. Es funktioniert auf Ausführungsbasis. Dies bedeutet, dass Sie das Skript regelmäßig ausführen müssen, damit es wie vorgesehen funktioniert. Es wird empfohlen, das Skript in einem Mindestintervall von fünf Minuten auszuführen. Dadurch wird die Reaktionsfähigkeit insgesamt verbessert.

Das Skript verwendet folgende Parameter:

Parameter Typ Standardwert Beschreibung
DeliveryGroupName Zeichenfolge X Name der Bereitstellungsgruppe, die auf die aktuelle Last überwacht werden soll. Sie können eine durch Semikola getrennte Liste von Namen angeben. Beispiel: Invoke-AutoscaleMachineCreation.ps1 -DeliveryGroupName ‘dg1;dg2;dg3’ -XdProfileName profile.
XdProfileName Zeichenfolge X Name des Profils, das für die Authentifizierung bei Remoteservern verwendet werden soll. Weitere Informationen zur Authentifizierung bei Remoteservern mithilfe dieses Parameters finden Sie unter Authentifizierungs-API.
HighWatermark Ganzzahl 80 Maximale prozentuale Last (anhand Lastindex), bei der Maschinen für die Handhabung zusätzlicher Last durch Autoscale erstellt werden sollen.
LowWatermark Ganzzahl 15 Minimale prozentuale Last (anhand Lastindex), bei der mit dem Skript erstellte Maschinen, die keine aktiven Sitzungen haben, gelöscht werden sollen.
MachineCatalogName Zeichenfolge X Name des Maschinenkatalogs, in dem Maschinen erstellt werden sollen.
MaximumCreatedMachines Ganzzahl -1 Maximale Anzahl an Maschinen, die in einer angegebenen Bereitstellungsgruppe erstellt werden können. Ist der Wert gleich oder kleiner 0, verarbeitet das Skript diesen Parameter nicht.
ScriptTag Zeichenfolge AutoscaledScripted Tag, das auf Maschinen angewendet wird, die mit dem Skript erstellt werden.
EventLogSource Zeichenfolge X Name der Quelle, der in der Windows-Ereignisanzeige angezeigt wird.

Hinweis:

Ein “X” gibt an, dass für diesen Parameter kein Standardwert angegeben ist.

Standardmäßig erfordert das Skript alle Parameter (mit Ausnahme von ScriptTag), wenn es zum ersten Mal ausgeführt wird. Bei nachfolgenden Ausführungen sind nur die Parameter DeliveryGroupName und XdProfileName erforderlich. Optional können Sie die minimale und maximale prozentuale Last aktualisieren.

Beim ersten Ausführen des Skripts müssen Sie eine einzelne Bereitstellungsgruppe angeben. Das Skript funktioniert nicht, wenn Sie beispielsweise beim ersten Ausführen mit dem folgenden PowerShell-Befehl zwei Bereitstellungsgruppen angeben:

  • Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName ‘dg1;dg2’ -XdProfileName profile -LowWatermark 20 -HighWatermark 70 -MachineCatalogName ‘cat1’\

Geben Sie stattdessen zunächst eine einzelne Bereitstellungsgruppe (in diesem Beispiel dg1) mit dem folgenden Befehl an:

  • Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName ‘dg1’ -XdProfileName profile -LowWatermark 20 -HighWatermark 70 -MachineCatalogName ‘cat1’\

Verwenden Sie dann den folgenden Befehl, um das Skript für die zweite Bereitstellungsgruppe (in diesem Beispiel dg2) auszuführen:

  • Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName ‘dg1;dg2’ -XdProfileName profile

Voraussetzungen

Um das Skript auszuführen, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:

  • Die Maschine befindet sich in der Domäne, in der Maschinen erstellt werden.
  • Das Remote PowerShell SDK ist auf dieser Maschine installiert. Weitere Informationen zum Remote PowerShell SDK finden Sie unter SDKs und APIs.
  • Weitere Voraussetzungen:
    • Zu überwachende Bereitstellungsgruppe
    • Ein mit den Maschinenerstellungsdiensten (MCS) erstellter Maschinenkatalog, der über ein zugeordnetes Provisioningschema (Vorlage) verfügt
    • Ein Identitätspool, der dem Provisioningschema zugeordnet ist
    • Eine zu erstellende Ereignisprotokollquelle, damit das Skript Informationen in das Windows-Ereignisprotokoll schreiben kann
    • Ein sicherer Client, mit dem die Authentifizierung bei Remoteservern möglich ist

Berechtigungen, Empfehlungen und Hinweise

Beachten Sie beim Ausführen des Skripts Folgendes:

  • Zur Authentifizierung bei Remoteservern mit dem Parameter XdProfileName müssen Sie ein Authentifizierungsprofil mithilfe eines sicheren API-Zugriffsclients definieren, der in der Citrix Cloud-Konsole erstellt wurde. Einzelheiten finden Sie unter Authentifizierungs-API.

  • Sie benötigen Berechtigungen zum Erstellen und Löschen von Maschinenkonten in Active Directory.

  • Es wird empfohlen, das PowerShell-Skript mit der Windows-Aufgabenplanung zu automatisieren. Einzelheiten finden Sie unter Erstellen einer automatisierten Aufgabe mit der Windows-Aufgabenplanung.

  • Wenn Sie das Skript Informationen (z. B. Fehler und Aktionen) in das Windows-Ereignisprotokoll schreiben soll, müssen Sie einen Quellnamen mit dem Cmdlet New-EventLog angeben. Beispiel: New-EventLog -LogName Application –Source <sourceName>. Sie können die Ereignisse dann im Bereich Anwendung der Windows-Ereignisanzeige anzeigen.

  • Treten während der Ausführung des Skripts Fehler auf, führen Sie das Skript manuell aus und beheben Sie dann Probleme, indem Sie Skriptüberprüfungen durchführen.

Authentifizierungs-API

Bevor Sie das Skript ausführen, müssen Sie ein Authentifizierungsprofil mithilfe eines sicheren API-Zugriffsclients definieren. Sie müssen den sicheren Client mit dem Konto erstellen, unter dem das Skript ausgeführt wird.

Der sichere Client muss die folgenden Berechtigungen haben:

  • Erstellen und Löschen von Maschinen mit MCS.
  • Bearbeiten von Maschinenkatalogen (zum Hinzufügen und Entfernen von Maschinen).
  • Bearbeiten von Bereitstellungsgruppen (zum Hinzufügen und Entfernen von Maschinen).

Wenn Sie einen sicheren Client erstellen, stellen Sie sicher, dass Ihr Konto über die oben genannten Berechtigungen verfügt, da der sichere Client automatisch die Berechtigungen von Ihrem aktuellen Konto erbt.

Führen Sie die folgenden Schritte aus, um einen sicheren Client zu erstellen:

  1. Melden Sie sich an Citrix Cloud an und navigieren Sie zu Identitäts- und Zugriffsverwaltung > API-Zugriff.

  2. Geben Sie einen Namen für den sicheren Client ein und klicken Sie auf Client erstellen.

Verwenden Sie den PowerShell-Befehl Set-XDCredentials für die Authentifizierung bei Remoteservern. Beispiel:

  • Set-XDCredentials -APIKey <key_id> -CustomerId <customer_id> -SecretKey <secret_key> -StoreAs <name specified by the XdProfileName parameter>

Erstellen einer automatisierten Aufgabe mit der Windows-Aufgabenplanung

Sie können das PowerShell-Skript mit der Windows-Aufgabenplanung automatisieren. Dadurch kann das Skript automatisch in bestimmten Intervallen oder bei Auftreten bestimmter Bedingungen ausgeführt werden. Um dieses Skript mit der Windows-Aufgabenplanung auszuführen, müssen Sie auf der Registerkarte Task erstellen > Einstellungen die Option Keine neue Instanz starten auswählen. Dadurch wird verhindert, dass die Windows-Aufgabenplanung eine neue Instanz des Skripts ausführt, wenn dieses bereits ausgeführt wird.

Beispiel für die Skriptausführung

Unten finden Sie ein Beispiel für die Ausführung des Skripts. Beachten Sie, dass die Skriptdatei mehrmals aufgerufen wird. In diesem Beispiel wird eine Sitzung gestartet und dann beendet, um die Last zu simulieren.

Beispiel für Skriptausführung

Prüfliste zur Problembehandlung für das Skript

Das Skript schreibt Informationen (z. B. Fehler und Aktionen) in das Windows-Ereignisprotokoll. Anhand der Informationen können Sie Probleme mit der Skriptausführung behandeln. Dabei kann folgende Prüfliste zur Fehlerbehebung hilfreich sein:

  • Fehler bei der Kommunikation mit Remoteservern. Mögliche Maßnahmen:
    • Überprüfen Sie die Verbindung zum Server.
    • Vergewissern Sie sich, dass der verwendete API-Schlüssel gültig ist.
  • Fehler beim Erstellen von Maschinen. Mögliche Maßnahmen:
    • Vergewissern Sie sich, dass das Benutzerkonto, auf dem das Skript ausgeführt wird, über ausreichende Berechtigungen zum Erstellen von Benutzerkonten in der Domäne verfügt.
    • Vergewissern Sie sich, dass der Benutzer, der den API-Schlüssel erstellt hat, Berechtigungen zum Bereitstellen von Maschinen mit MCS hat.
    • Überprüfen Sie die Gültigkeit des Maschinenkatalogs (das heißt, das Image ist noch vorhanden und in gutem Zustand).
  • Fehler beim Hinzufügen von Maschinen zu einem Maschinenkatalog oder einer Bereitstellungsgruppe. Mögliche Maßnahmen:
    • Vergewissern Sie sich, dass der Benutzer, der den API-Schlüssel erstellt hat, Berechtigungen zum Hinzufügen und Entfernen von Maschinen zu und aus Maschinenkatalogen und Bereitstellungsgruppen verfügt.