Citrix DaaS™

Maschinen dynamisch bereitstellen

  • Autoscale™ bietet die Möglichkeit, Maschinen dynamisch zu erstellen und zu löschen. Sie können diese Funktion mithilfe eines PowerShell-Skripts nutzen. Das Skript hilft Ihnen, die Anzahl der Maschinen in der Bereitstellungsgruppe basierend auf den aktuellen Lastbedingungen dynamisch hoch- oder herunterzuskalieren.

Das Skript bietet die folgenden Vorteile (und mehr):

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

  • Effektive Bewältigung von Laständerungen. Das Skript hilft Ihnen, Laständerungen zu bewältigen, indem es die Anzahl der Maschinen basierend auf der aktuellen Last der Bereitstellungsgruppe automatisch hoch- oder herunterskaliert.

Skript herunterladen

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

Funktionsweise des Skripts

Wichtig:

  • Sie können einen Maschinenkatalog nicht in mehr als einer Bereitstellungsgruppe angeben, die vom Skript verwaltet werden soll. Anders ausgedrückt: Wenn mehrere Bereitstellungsgruppen denselben Maschinenkatalog gemeinsam nutzen, funktioniert das Skript mit keiner dieser Bereitstellungsgruppen.
  • Sie können das Skript nicht gleichzeitig für dieselbe Bereitstellungsgruppe von mehreren Standorten aus ausführen.

Das Skript arbeitet auf Ebene der Bereitstellungsgruppe. Es misst die Last (gemessen am Lastindex) und entscheidet dann, ob Maschinen erstellt oder gelöscht werden sollen.

Maschinen, die über dieses Skript erstellt werden, werden eindeutig getaggt (über den Parameter ScriptTag), damit sie später identifiziert werden können. Das Erstellen oder Löschen von Maschinen basiert auf:

  • Maximale prozentuale Last einer Bereitstellungsgruppe. Gibt die maximale Auslastung an, bei der Maschinen für Autoscale erstellt werden sollen, um zusätzliche Lasten zu bewältigen. Wenn dieser Schwellenwert überschritten wird, werden Maschinen in Batches erstellt, um sicherzustellen, dass die aktuelle Last auf oder unter den Schwellenwert sinkt.

  • Minimale prozentuale Last einer Bereitstellungsgruppe. Gibt die minimale Auslastung an, bei der über dieses Skript erstellte Maschinen ohne aktive Sitzungen gelöscht werden sollen. Wenn dieser Schwellenwert überschritten wird, werden über dieses Skript erstellte Maschinen ohne aktive Sitzungen gelöscht.

Dieses Skript ist dazu gedacht, eine Bereitstellungsgruppe zu überwachen und Maschinen zu erstellen oder zu löschen, wenn das Auslösekriterium erfüllt ist. Es wird pro Ausführung ausgeführt. Das bedeutet, dass Sie das Skript regelmäßig ausführen müssen, damit es wie vorgesehen funktioniert. Wir empfehlen, das Skript in einem Mindestintervall von fünf Minuten auszuführen. Dies verbessert die allgemeine Reaktionsfähigkeit.

Das Skript basiert auf den folgenden Parametern:

Parameter Typ Standardwert Beschreibung
  • DeliveryGroupName String X Name der Bereitstellungsgruppe, die überwacht werden soll, um die aktuelle Last zu bestimmen. Sie können eine durch Semikolons getrennte Liste von Namen angeben. Beispiel: Invoke-AutoscaleMachineCreation.ps1 -DeliveryGroupName 'dg1;dg2;dg3' -XdProfileName profile.
    XdProfileName String X Name des Profils, das zur Authentifizierung an Remoteservern verwendet werden soll. Einzelheiten zur Authentifizierung an Remoteservern mit diesem Parameter finden Sie unter Authentifizierungs-API.
  • HighWatermark Integer 80 Maximale prozentuale Last (gemessen am Lastindex), bei der Maschinen für Autoscale erstellt werden sollen, um zusätzliche Lasten zu bewältigen.
    LowWatermark Integer 15 Minimale prozentuale Last (gemessen am Lastindex), bei der über dieses Skript erstellte Maschinen ohne aktive Sitzungen gelöscht werden sollen.
    MachineCatalogName String X Name des Maschinenkatalogs, in dem Maschinen erstellt werden sollen.
  • MaximumCreatedMachines Integer -1 Maximale Anzahl von Maschinen, die in einer angegebenen Bereitstellungsgruppe erstellt werden können. Wenn der Wert gleich oder kleiner als 0 ist, verarbeitet das Skript diesen Parameter nicht.
  • ScriptTag String AutoscaledScripted Tag, das auf über das Skript erstellte Maschinen angewendet wird.
    • EventLogSource String X Quellname, der in der Windows-Ereignisanzeige erscheint.
    • Hinweis:

    • Ein „X“ bedeutet, dass für diesen Parameter kein Standardwert angegeben ist.

Standardmäßig erfordert das Skript bei der ersten Ausführung alle Parameter (außer dem Parameter ScriptTag). Bei nachfolgenden Ausführungen sind nur die Parameter DeliveryGroupName und XdProfileName erforderlich. Optional können Sie die minimale und maximale prozentuale Last aktualisieren.

-  Beachten Sie, dass Sie bei der ersten Ausführung des Skripts eine einzelne Bereitstellungsgruppe angeben müssen. Das Skript funktioniert beispielsweise *nicht*, wenn Sie den folgenden PowerShell-Befehl verwenden, um bei der ersten Ausführung des Skripts zwei Bereitstellungsgruppen anzugeben:
  • Invoke-AutoscaleMachineCreations.ps1 -DeliveryGroupName 'dg1;dg2' -XdProfileName profile -LowWatermark 20 -HighWatermark 70 -MachineCatalogName 'cat1'\

  • Geben Sie stattdessen zuerst 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 derselben 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:

    • Eine zu überwachende Bereitstellungsgruppe
    • Ein über Machine Creation Services™ (MCS) erstellter Maschinenkatalog mit einem zugehörigen Bereitstellungsschema (Vorlage)
    • Ein Identitätspool, der dem Bereitstellungsschema zugeordnet ist
    • Eine zu erstellende Ereignisprotokollquelle, damit das Skript Informationen in das Windows-Ereignisprotokoll schreiben kann
    • Ein sicherer Client, der Ihnen die Authentifizierung an Remoteservern ermöglicht

Berechtigungen, Empfehlungen und Hinweise

-  Beachten Sie beim Ausführen des Skripts Folgendes:

-  Um sich mithilfe des Parameters `XdProfileName` bei Remoteservern zu authentifizieren, müssen Sie ein Authentifizierungsprofil mithilfe eines sicheren API-Zugriffsclients definieren, der in der Citrix Cloud-Konsole erstellt wurde. Weitere Informationen finden Sie unter [Authentifizierungs-API](/de-de/citrix-daas/manage-deployment/autoscale/dynamic-machine-provisioning.html#authentication-api).
  • Sie müssen über Berechtigungen zum Erstellen und Löschen von Maschinenkonten in Active Directory verfügen.

  • Wenn das Skript Informationen (z. B. Fehler und Aktionen) in das Windows-Ereignisprotokoll schreiben soll, müssen Sie zunächst 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.

  • Wenn während der Ausführung des Skripts Fehler aufgetreten sind, führen Sie das Skript manuell aus und beheben Sie Probleme, indem Sie Skriptprü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 einen sicheren Client mit demselben Konto erstellen, unter dem das Skript ausgeführt wird.

Der sichere Client muss über die folgenden Berechtigungen verfügen:

  • Maschinen mit MCS erstellen und löschen.
  • Maschinenkataloge bearbeiten (zum Hinzufügen und Entfernen von Maschinen).
  • Bereitstellungsgruppen bearbeiten (zum Hinzufügen und Entfernen von Maschinen).

Stellen Sie beim Erstellen eines sicheren Clients sicher, dass Ihr Konto über die oben genannten Berechtigungen verfügt, da der sichere Client die Berechtigungen automatisch von Ihrem aktuellen Konto erbt.

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

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

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

Verwenden Sie zum Authentifizieren bei Remoteservern den PowerShell-Befehl Set-XDCredentials. Beispiel:

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

Automatisches Erstellen einer 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 wenn bestimmte Bedingungen erfüllt sind, ausgeführt werden. Um dieses Skript mit der Windows-Aufgabenplanung auszuführen, stellen Sie sicher, dass Sie auf der Registerkarte Aufgabe 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 das Skript bereits ausgeführt wird.

Skriptausführungsbeispiel

Nachfolgend finden Sie ein Beispiel für die Ausführung des Skripts. Beachten Sie, dass die Skriptdatei mehrmals aufgerufen wird. In diesem Beispiel wird zur Simulation der Last eine Sitzung gestartet und dann beendet.

Beispiel für Skriptausführung

Checkliste zur Fehlerbehebung für das Skript

Das Skript schreibt Informationen (z. B. Fehler und Aktionen) in das Windows-Ereignisprotokoll. Die Informationen helfen Ihnen bei der Behebung von Problemen, die bei der Ausführung des Skripts auftreten. Es kann hilfreich sein, die folgende Checkliste zur Fehlerbehebung zu beachten:

  • Fehler bei der Kommunikation mit Remoteservern. Mögliche Aktionen:
    • Überprüfen Sie Ihre Verbindung zum Server.
    • Überprüfen Sie, ob der von Ihnen verwendete API-Schlüssel gültig ist.
  • Fehler beim Erstellen von Maschinen. Mögliche Aktionen:
    • Überprüfen Sie, ob das Benutzerkonto, das das Skript ausführt, über ausreichende Berechtigungen zum Erstellen von Benutzerkonten in der Domäne verfügt.
    • Überprüfen Sie, ob der Benutzer, der den API-Schlüssel erstellt hat, über ausreichende Berechtigungen verfügt, um MCS zum Bereitstellen von Maschinen zu verwenden.
    • Überprüfen Sie die Gültigkeit des Maschinenkatalogs (d. h., dass sein Image noch vorhanden und in gutem Zustand ist).
  • Fehler beim Hinzufügen von Maschinen zu einem Maschinenkatalog oder einer Bereitstellungsgruppe. Mögliche Aktion:
    • Überprüfen Sie, ob der Benutzer, der den API-Schlüssel erstellt hat, über ausreichende Berechtigungen verfügt, um Maschinen zu Maschinenkatalogen und Bereitstellungsgruppen hinzuzufügen und daraus zu entfernen.
Maschinen dynamisch bereitstellen