Skip to content
Go back

Einführung in Citrix Natural Reboots

Published:  at  07:00 PM

Table of contents

Open Table of contents

Introduction

In der Version CVAD version 2103 wurde ein neues Feature NaturalReboot veröffentlicht. Die Release Notes sagen dazu:

Another restart duration option is available when using PowerShell to create a machine restart schedule. The UseNaturalReboot option restarts all machines after draining all sessions. When the restart time is reached, machines are put into the drain state and are restarted when all sessions are logged off. See Restart after drain.


Die Idee ist die Server zu rebooten ohne User aktiv abzumelden sondern abzuwarten bis auf dem Server keine User mehr sind.

Voraussetzungen

Was sind die Voraussetzungen damit das Feature funktionieren kann?

Konfiguration

Wir starten mit dem klassischen Restart Schedule:

Reboot Schedule

Die generellen Voraussetzungen sind:

Alle Funktionalitäten die folgend diskutiert werden gelten für die oben angeführte Konfiguration.

Aktivieren des NaturalReboot Features

Wie kann man das NaturalReboot Feature für den oben angeführten Restart Schedule aktivieren?

Es gibt unterschiedliche Wege wie man das erreichen kann, ich verwende den folgenden:

Auswählen des RebootSchedule um NaturalReboot zu aktivieren

> Get-BrokerRebootScheduleV2 -DesktopGroupName "DG Server 2022"

Active                : False
Day                   :
DayInMonth            :
Description           :
DesktopGroupName      : DG Server 2022
DesktopGroupUid       : 2
Enabled               : True
Frequency             : Daily
FrequencyFactor       : 1
IgnoreMaintenanceMode : False
MaxOvertimeStartMins  : 0
MetadataKeys          : {}
MetadataMap           : {}
Name                  : Daily Reboot
RebootDuration        : 60
RestrictToTag         :
StartDate             :
StartTime             : 01:00:00
Uid                   : 1
UseNaturalReboot      : False
WarningDuration       : 0
WarningMessage        :
WarningRepeatInterval : 0
WarningTitle          :
WeekInMonth           :

Der Parameter -DesktopGroupName wird verwendet um die Delivery Group anzugeben und gibt alle Restart Schedules zurück.
In unserem Fall haben wir nur einen Reboot Schedule. Wir können also das Get- Query so lassen wie es ist.

Enable UseNaturalReboot

Get-BrokerRebootScheduleV2 -DesktopGroupName "DG Server 2022" | Set-BrokerRebootScheduleV2 -UseNaturalReboot $true

Keine Fehlermeldung ist ein gutes Zeichen.

Überprüfen ob die Einstellung aktiviert ist

> Get-BrokerRebootScheduleV2 -DesktopGroupName "DG Server 2022"

Active                : False
Day                   :
DayInMonth            :
Description           :
DesktopGroupName      : DG Server 2022
DesktopGroupUid       : 2
Enabled               : True
Frequency             : Daily
FrequencyFactor       : 1
IgnoreMaintenanceMode : False
MaxOvertimeStartMins  : 0
MetadataKeys          : {}
MetadataMap           : {}
Name                  : Daily Reboot
RebootDuration        : 60
RestrictToTag         :
StartDate             :
StartTime             : 01:00:00
Uid                   : 1
UseNaturalReboot      : True
WarningDuration       : 0
WarningMessage        :
WarningRepeatInterval : 0
WarningTitle          :
WeekInMonth           :

Das ist alles. Es ist sehr einfach zu aktivieren (und hoffentlich wird es eine Checkbox im Studio).

Wie funktioniert das Feature?

Zu Beginn hatte ich Probleme zu verstehen wie das Feature funktionieren (soll). Die öffentlich verfügbare Dokumentation ist leider nicht gerade umfangreich. Danke an Citrix Support die mit geholfen haben und mir einige Sachen erklärt haben.

Okay, starten wir…

Es gibt drei Szenarien an die ich denke:

  1. 0 Sessions auf beiden VDAs wenn der Reboot Schedule started.
  2. 0 Sessions auf einem VDA und 1 Session auf dem anderen VDA wenn der Reboot Schedule started. Die eine Session wird abgemeldet während der Reboot Duration Time.
  3. 0 Sessions auf einem VDA und 1 Session auf dem anderen VDA wenn der Reboot Schedule started. Die eine Session wird abgemeldet nach der Reboot Duration Time.

Scenario 1: 0 Sessions auf beiden VDAs

Zero sessions on both VDAs

Im oberen Bild sind zwei Sachen interessant:

  1. Drain mode
  2. Gleichzeitiges Rebooten

Der Citrix Artikel Reboot Schedule Internals hat ein paar Wörter über den Drain mode:

Firstly, all VDAs in the phase are put into drain mode; this prevents new sessions being launched but allows existing sessions to be reconnected.

Der “Citrix drain mode” hat nichts zu tun mit dem “Microsoft drain mode”. Der Drain Mode ist nicht wirklich wichtig für das erste Szenario, weil das System sowieso direkt neustartet, aber es wird noch wichtig werden.
\

Wenn du das oben gezeigte Verhalten vergleichst mit dem -UseNaturalReboot $false Szenario, dann siehst du dass während dem Natural Reboot die Maschinen gleichzeitig neustarten. Das bedeutet, die Delivery Group ist für einige Minuten nicht verfügbar (abhängig davon wie lange die Maschinen wieder brauchen zum registrieren). Ich hätte aber gern, dass die Reboots verteilt sind und das Problem kann man mit Tags und zwei Reboot Schedules lösen. Ab in unserem Szenario (einen Restart Schedule für alle Maschinen) ist das Verhalten wie oben gezeigt. Im Grunde wollen wir aber NaturalReboot aktivieren, da ja oft Benutzer noch angemeldet sind.

Scenario 2: 1 session auf dem VDA aber er meldet sich innerhalb des Reboot Duration Time ab

Logoff session within reboot duration

Okay gehen wir zu einem fortgeschrittenen Szenario. Wir triggern den Reboot Schedule um 1 Uhr in der Früh, aber ein User ist noch immer angemeldet auf einem VDA. Unser Ziel ist das wir rebooten, ohne die vorhandene Session abzumelden - und da wird Natural Reboot praktisch.
VDA 1 verhält sich wie im Szenario 1.
VDA 2 geht in den Citrix drain state und wartet bis der User sich abgemeldet hat. Sobald der User sich abgemeldet hat (innerhalb der Reboot Duration Time), wird der VDA auch (fast nahtlos) neugestartet.

Nun reden wir über Verfügbarkeit. Wenn der VDA 1 rebooted hat und wieder registriert ist, wird ein neuer Benutzer zum VDA 1 verbunden. Warum? Weil der VDA 2 noch im Drain Mode ist.
Aber was passiert wenn ein User möchte um 01:05 eine Session aufbauen möchte und sagen wir das VDA 1 ist noch immer unregistriert? Der Benutzer verbindet sich auf den VDA 2. In diesem Szenario, eine User Sitzung wird immer hergestellt und wir haben keine downtime.
Der kleine “Nachteil” ist das nun zwei Benutzer sich erst abmelden müssen bevor VDA 2 neugestartet wird.

Scenario 3: 1 Session auf dem VDA aber die Abmeldung erst nach der Reboot Duration Time

Logoff session beyond reboot duration

Das letzte Szenario ist wenn der User sich abmeldet nach der Reboot Duration Time. In meinen Tests war das Verhalten allerdings wie im Szenario 2. Die Maschine startet einfach neu wenn der Session Count auf 0 ist.

In meinen Tests war es egal ob es innerhalb der Reboot Duration Time war oder außerhalb.

[!TIP] Im Citrix Studio kann man den Status der Maschinen anzeigen um zu sehen ob die Rebooted wurden oder nicht. Dafür die Spalte “Scheduled Reboot” einblenden in der respektiven Delivery Group. Wenn der Status None ist, wurde die Maschine erfolgreich rebooted. Wenn der Status ist Natural, dann wird die Maschine noch rebooted.

Abschließendes

Natural Reboot ist ein cooles Feature und ich könnte mir vorstellen, dass wenn es eine Integration im Studio gäbe, dass es mehr Citrix Admins ausprobieren würden. Einige Sachen sind noch nicht super intuitiv (z.B. die Reboot Duration Time macht keinen Unterschied) und vielleicht ist das der Grund warum es noch nicht ins Studio integriert ist.



Previous Post
Microsoft Edge reagiert nicht nach dem starten
Next Post
PVS Failover graceful - eine Netzwerk Betrachtung