Citrix Workspace Environment Management Installation

Im September 2016 hat Citrix die Software-Firma Norskale, einen Hersteller von UEM und App Performance Software, akquiriert und dessen Produkt VUEM als Citrix Workspace Environment Management (WEM) relaunched. Für Kunden mit einer XenApp/XenDesktop Enterprise Lizenz ist WEM inklusive und kann damit ohne zusätzliche Kosten genutzt werden.

Ab Version 4.5 lässt sich der WEM Broker auch auf eine Server Core Installation bereitstellen, wenn die PowerShell Cmdlets verwendet werden und für die DB ein dedizierter SQL Server verwendet wird.

Einleitung

Im folgenden Beispiel konfiguriere ich eine WEM Broker Instanz mit folgenden Einstellungen:

  • Active Directory Domain: lab.local
  • WEM Version: 4.07.00
  • WEM Broker Server: WEMSRV01
  • WEM Broker Datenbank Name: WEM_DB
  • SQL Server: SQLSRV01 mit Standardinstanz/Standardport – wird eine eigene Instanz und/oder ein eigener Port verwendet müsste diese im Parameter -DatabaseServerInstance z.B. mit SQLSRV01\SQLExpress,1433 angegeben werden.
  • SQL Datenpfad: D:\MSSQL\
  • SQL Logpfad: L:\MSSQL\
  • Citrix Lizenzserver: LICSRV01
  • Citrix Lizenzserver Port: 27000
  • WEM Broker Service Account: LAB\service_citrix.wem
  • WEM Broker Service Account Passwort: ADWEM!654321
  • vuemUserSQL User Passwort: SQLWEM!123456

Der WEM Agent wird mit Standardeinstellungen installiert.

WEM Infrastructure Services (Broker)

Installation

Die Installation von WEM (Broker und Management Konsole) erfolgt über einen Standard-PowerShell-Befehl.

Start-Process "<Pfad>\Workspace-Environment-Management-v-4-07-00\Citrix Workspace Environment Management Infrastructure Services Setup.exe" -ArgumentList '/S /v/qn' -Wait -PassThru
Start-Process "<Pfad>\Workspace-Environment-Management-v-4-07-00\Citrix Workspace Environment Management Console Setup.exe" -ArgumentList '/S /v/qn' -Wait -PassThru

Nach Abschluss der Installation ist die Einrichtung eines Service Principal Names (SPN) im AD notwendig. Die SPN-Parameter sind abhängig von der Entscheidung, wie man seine WEM Infrastruktur betreibt.

Besteht die WEM Infrastruktur aus nur einem WEM Broker Server und wird SQL Authentifizierung für die Datenbankanmeldung verwendet, muss der WEM Broker Server Hostname als SPN registriert werden.

setspn -C -S Norskale/BrokerService WEMSRV01.lab.local

Wird der WEM Broker Service auf mehrere WEM Broker Server verteilt (Load Balancing) und/oder Windows Authentifizierung zur Anmeldung an der SQL Datenbank verwendet (zwingend erforderlich bei Load Balancing), muss der WEM Broker Service Account als SPN registriert werden.

setspn -U -S Norskale/BrokerService LAB\service_citrix.wem

Hinweis: SPNs sind Case-Sensitiv einzugeben! Daher empfiehlt es sich bei der Einrichtung des Service Accounts und/oder Servers auf die Schreibweise des Objekts im AD zu achten.

Konfiguration

Für die Einrichtung von WEM stehen 2 Wege zur Verfügung. Einerseits PowerShell-Cmdlets des SDKs und andererseits das WEM Database Management Utility für die Datenbankeinrichtung, bzw. das  WEM Infratructure Service Configuration Tool für die Konfiguration des Services.

In dieser Anleitung gehe ich auf die PowerShell-Variante ein, für die Konfiguration über die GUIs sind analog dazu die entsprechenden Werte in den jeweiligen Tools einzugeben.

Aus den o.g. Parametern wird die Konfiguration in 2 Schritten durchgeführt.

# define variables
$WEMServer = "WEMSRV01.lab.local"
$WEMSvcAcc = "LAB\service_citrix.wem"
$WEMSvcAccPwd = ConvertTo-SecureString "ADWEM!654321" -AsPlainText -Force
$WEMSvcAccCred = New-Object System.Management.Automation.PSCredential($WEMSvcAcc, $WEMSvcAccPwd);
$WEMAdminGroup = "LAB\Domain Admins"
$WEMLicServer = "LICSRV01.lab.local"
$WEMLicServerPort = "27000"
$DBServer = "SQLSRV01.lab.local"
$DBName = "WEM_DB"
$DBDataPath = ("D:\MSSQL\"+$DBName+"_Data.mdf")
$DBLogPath = ("L:\MSSQL\"+$DBName+"_Log.ldf")
$DBVuemUserPwd = ConvertTo-SecureString "SQLWEM123456" -AsPlainText -Force
# import PowerShell components
Import-Module 'C:\Program Files (x86)\Norskale\Norskale Infrastructure Services\SDK\WemDatabaseConfiguration\WemDatabaseConfiguration.psd1'
# create/configure WEM database
New-WemDatabase -DatabaseServerInstance $DBServer -DatabaseName $DBName -DataFilePath $DBDataPath -LogFilePath $DBLogPath -DefaultAdministratorsGroup $WEMAdminGroup -WindowsAccount $WEMSvcAcc -VuemUserSqlPassword $DBVuemUserPwd
# configure WEM Infrastructure service
Set-WemInfrastructureServiceConfiguration -InfrastructureServer $WEMServer -EnableInfrastructureServiceAccountCredential Enable -InfrastructureServiceAccountCredential $WEMSvcAccCred -DatabaseServerInstance $DBServer -DatabaseName $DBName -SetSqlUserSpecificPassword Enable -SqlUserSpecificPassword $DBVuemUserPwd -EnableScheduledMaintenance Enable -PSDebugMode Enable -GlobalLicenseServerOverride Enable -LicenseServerName $WEMLicServer -LicenseServerPort $WEMLicServerPort -SendGoogleAnalytics Disable -UseCacheEvenIfOnline Disable -DebugMode Enable
# restart service
Restart-Service -name "Norskale Infrastructure Service"

Der User, in dessen Kontext die Installation durchgeführt wird, muss auf dem SQL Server sysadmin Rechte besitzen, da während des Prozesses die Datenbank und der SQL User vuemUser angelegt wird.

Hochverfügbarkeit

Möchte man einen zusätzlichen WEM Server in die Infrastruktur einbinden um z.B. eine Hochverfügbarkeit zu gewährleisten, reicht die Installation der Komponenten und die Konfiguration des Infrastruktur Dienstes.

# define variables
$WEMServer = "WEMSRV02.lab.local"
$WEMSvcAcc = "LAB\service_citrix.wem"
$WEMSvcAccPwd = ConvertTo-SecureString "ADWEM!654321" -AsPlainText -Force
$WEMSvcAccCred = New-Object System.Management.Automation.PSCredential($WEMSvcAcc, $WEMSvcAccPwd);
$WEMLicServer = "LICSRV01.lab.local"
$WEMLicServerPort = "27000"
$DBServer = "SQLSRV01.lab.local"
$DBName = "WEM_DB"
$DBVuemUserPwd = ConvertTo-SecureString "SQLWEM123456" -AsPlainText -Force
# import PowerShell components
Import-Module 'C:\Program Files (x86)\Norskale\Norskale Infrastructure Services\SDK\WemDatabaseConfiguration\WemDatabaseConfiguration.psd1'
# configure Infrastructure service
Set-WemInfrastructureServiceConfiguration -InfrastructureServer $WEMServer -EnableInfrastructureServiceAccountCredential Enable -InfrastructureServiceAccountCredential $WEMSvcAccCred -DatabaseServerInstance $DBServer -DatabaseName $DBName -SetSqlUserSpecificPassword Enable -SqlUserSpecificPassword $DBVuemUserPwd -EnableScheduledMaintenance Enable -PSDebugMode Enable -GlobalLicenseServerOverride Enable -LicenseServerName $WEMLicServer -LicenseServerPort $WEMLicServerPort -SendGoogleAnalytics Disable -UseCacheEvenIfOnline Disable -DebugMode Enable
# restart service
Restart-Service -name "Norskale Infrastructure Service"

Um nun beide WEM Server im HA zu nutzen, müssen die Server über einen Loadbalancer angesprochen werden. Eine Anleitung, wie dies z.B. über den NetScaler bewerkstelligt wird, findet ihr hier:
https://support.citrix.com/article/CTX227144

„Stolperfallen“

Fehlermeldung Database creation error! und Eintrag im Debug Log:

Exception -> CreateVuemdb.Run() : SQLDatabaseHelper.GrantAccessOnSQLDB connection Error : 15063 | The login already has an account under a different user name.

Der Fehler tritt auf, wenn die Installation im Kontext des Broker Service Account Users durchführt. Dieser ist folglich schon auf dem DB Server angelegt und kann von der Setup-Routine nicht nochmal angelegt werden. Die Installation muss daher im Kontext eines anderen DB SysAdmins durchgeführt werden.

Fehlermeldung Database creation error! und Eintrag im Debug Log:

Exception -> CreateVuemdb.Run() : SQLDatabaseHelper.() connection Error : 102 | Incorrect syntax near '-'.

Die Ursache hierfür ist, dass der DB Name einen Bindestrich (‚-‚) enthält (z.B. WEM-DB). Der WEM Installer kann keine Datenbanken anlegen, die einen Bindestrich enthalten. Entweder verwendet man einen DB Namen ohne Bindestrich oder legt die DB vorab auf dem SQL Server an.

Fehlermeldung Database creation error! und Eintrag im Debug Log:

Exception -> CreateVuemdb.Run() : SQLDatabaseHelper.() connection Error : 1803 | CREATE DATABASE statement failed. The primary file must be at least 100 MB to accommodate a copy of the model database..

Auf diesen Fehler stößt man, wenn die Model Database mit einer initialen Größe von 100 MB für das PRIMARY File konfiguriert ist und nicht mit dem Default Wert von 3 MB. Um dies zu lösen muss in den Eigenschaften der Model Database auf dem SQL Server der Wert für die initiale Größe der PRIMARY File Group auf 3 MB gesetzt werden.

WEM Agent

Installation

Der WEM Agent wird auf den Workern mit den gleichen Parametern installiert, wie vorher die Infrastructure Services und die Management Konsole auf dem Broker Server.

Start-Process "<Pfad>\Workspace-Environment-Management-v-4-07-00\Citrix Workspace Environment Management Agent Setup.exe" -ArgumentList '/S /v/qn' -Wait -PassThru

Konfiguration

Die Konfiguration des WEM Agents erfolgt über Gruppenrichtlinien und ist übersichtlich. Normalerweise (bei Standardkonfigurationen) reicht die Angabe des WEM Broker Namens oder der IP, bzw. der Name oder die IP der WEM Broker Load Balancing Resource, wenn man mehrere Broker betreibt. Die dafür benötigten ADMX Files befinden sich in den Installationssourcen von WEM.

Computer Configuration
  Policies
    Administrative Policies
      Citrix
        Workspace Environment Management
          Agent Host Configuration
            Infrastructure server -> <WEM-Broker-Name/-IP>

In früheren Versionen von WEM musste zusätzlich noch eine Site (jetzt: Configuration Set) in den GPOs konfiguriert werden, in die sich der Agent registrieren soll. Dies ist in neueren Versionen (ab 4.3) nicht mehr nötig (und die entsprechende Policy ist auch aus den ADMX Templates entfernt), da sich der WEM Agent inzwischen anhand seiner OU-Zugehörigkeit oder des Hostnamens automatisch im richtigen Configuration Set registriert.

Antivirus

Sowohl auf dem WEM Broker Server, als auch auf den WEM Agents sollte der komplette WEM Installationsordner (i.d.R. C:\Program Files (x86)\Norskale) vom Scannen mit einem Antivirenprogramm ausgenommen werden. Falls ein Ausschluss ganzer Ordner nicht möglich ist, sollten folgende Dateien und/oder Prozesse ausgenommmen werden:

WEM Broker Server

%ProgramFiles(x86)%\Norskale\Norskale Infrastructure Services\Norskale Broker Service.exe
%ProgramFiles(x86)%\Norskale\Norskale Infrastructure Services\Norskale Broker Service Configuration Utility.exe
%ProgramFiles(x86)%\Norskale\Norskale Infrastructure Services\Norskale Database Management Utility.exe

WEM Agent

%ProgramFiles(x86)%\Norskale\Norskale Agent Host\Norskale Agent Host Service.exe
%ProgramFiles(x86)%\Norskale\Norskale Agent Host\VUEMDesktopInitMsg.exe
%ProgramFiles(x86)%\Norskale\Norskale Agent Host\VUEMUIAgent.exe
%ProgramFiles(x86)%\Norskale\Norskale Agent Host\Agent Log Parser.exe
%ProgramFiles(x86)%\Norskale\Norskale Agent Host\AgentCacheUtility.exe
%ProgramFiles(x86)%\Norskale\Norskale Agent Host\AppsMgmtUtil.exe
%ProgramFiles(x86)%\Norskale\Norskale Agent Host\PrnsMgmtUtil.exe
%ProgramFiles(x86)%\Norskale\Norskale Agent Host\VUEMAgentMsg.exe
%ProgramFiles(x86)%\Norskale\Norskale Agent Host\VUEMAppCmd.exe
%ProgramFiles(x86)%\Norskale\Norskale Agent Host\VUEMAppCmdDbg.exe
%ProgramFiles(x86)%\Norskale\Norskale Agent Host\VUEMAppHide.exe
%ProgramFiles(x86)%\Norskale\Norskale Agent Host\VUEMCmdAgent.exe
%ProgramFiles(x86)%\Norskale\Norskale Agent Host\VUEMMaintMsg.exe
%ProgramFiles(x86)%\Norskale\Norskale Agent Host\VUEMRSAV.exe

Firewall / Ports

Ist die Kommunikation der WEM Komponenten durch eine Firewall geschützt, müssen folgende Ports für die Freischaltung beachtet werden:

TCP/8284 – Agent Port vom WEM Agent zum WEM Broker
TCP/8285 – Agent Sync Port vom WEM Agent zum WEM Broker SQL
TCP/8286 – Admin Port von der WEM Admin Konsole zum WEM Broker
TCP/8287 – Monitoring Port vom Citrix Director zum WEM Broker
TCP/49752 – Agent Port vom WEM Broker zum WEM Agent

Quellen:
https://support.citrix.com/article/CTX218196
https://support.citrix.com/article/CTX228086
https://support.citrix.com/article/CTX228982
https://developer-docs.citrix.com/projects/workspace-environment-management-sdk/

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.