Windows Server 2012 Remote Desktop Connection Broker Hochverfügbarkeits-Setup mit PowerShell

 

Update Mai 2013:
Die bisher beschriebene Vorgehensweise zum Setup eines hochverfügbaren RD Connection Brokers hat sich vom Windows Server 2012 Release Candidate zur fertigen Version (RTM - Release to Manufacture) geändert. Der Blog-Artikel wurde entsprechend überarbeitet.

Wie der Titel schon ahnen lässt, geht es in diesem Beitrag um ein bisher wenig betrachtetes Vorgehen bei der Installation und Konfiguration des neuen Windows Server 2012 Remote Desktop (RD) Connection Brokers.

In Windows Server 2012 ist es möglich, den RD Connection Broker mit einer Hochverfügbarkeits-Konfiguration zu versehen. Bereits in früheren Versionen von Windows Server 2003, als der Connection Broker noch Session Directory hieß, bestand die Anforderung sich gegen Ausfälle eines einzelnen Session Directory Servers abzusichern. Dies war auch damals schon mit Hilfe eines Windows Failover-Clusters möglich, es war nur kaum bekannt. Dieser KB-Artikel beschreibt das Vorgehen:
https://support.microsoft.com/kb/840695

Mit Windows Server 2008 R2 wurde es möglich, den RD Connection Broker noch einfacher in einem Windows Failover-Cluster zu betreiben. Der Failover Cluster Wizard kannte direkt den Cluster Resource Type „Remote Desktop Connection Broker“ als Applikation. Eine entsprechende Anleitung dazu befindet sich hier:
https://technet.microsoft.com/en-us/library/ff686148(v=WS.10).aspx

Allen Lösungen bisher war jedoch gemein, dass sie auf eine interne Windows Datenbank zurückgriffen welche in ihren Möglichkeiten für das Management, Sicherung, Wiederherstellung, Replikation, Skalierung usw. begrenzt war.

RD Connection Broker Hochverfügbarkeit in Windows Server 2012

Mit Windows Server 2012 kann der RD Connection Broker hochverfügbar konfiguriert werden, ohne an die Limitierungen der bisherigen Architektur gebunden zu sein.

Erstmals ist es möglich, die vom RD Connection Broker verwalteten Collection- und Sitzungsinformationen in einer Microsoft SQL Server Datenbank zu speichern. Solange man den RD Connection Broker nicht als Hochverfügbar konfiguriert, kommt weiterhin die Windows Interne Datenbank (Windows Internal Database) zum Einsatz.

Eine ausführliche Beschreibung wie man mit Hilfe der grafischen Oberfläche des neuen Windows Server 2012 Server Managers den RD Connection Broker hochverfügbar konfiguriert befindet sich hier:
https://social.technet.microsoft.com/wiki/contents/articles/10390.deploying-rd-connection-broker-high-availability-in-windows-server-2012.aspx

Test-Umgebung

Neben der Nutzung des Server Managers ist es auch möglich, die Einrichtung einer Remote Desktop Services Infrastruktur mit PowerShell durchzuführen. Dies bietet sich vor allem für die automatisierte Installation in größeren Umgebungen an.

Mein exemplarischer Test-Aufbau um die Nutzung von PowerShell zur Konfiguration von hochverfügbaren RD Connection Brokern zu simulieren sieht so aus:

Eine generelle Anleitung zum Aufbau einer RD Session Virtualization Testumgebung ist in diesem Artikel beschrieben:
https://technet.microsoft.com/de-de/library/hh831610

In der Abbildung ist zu erkennen, dass der Microsoft SQL und RD Web Access Server sowie auch der Domain Controller und RD Lizenz Server nur mit einem Server realisiert sind.

In einer produktiven Umgebung muss natürlich auch die Active Directory Infrastruktur hochverfügbar ausgelegt werden.

Für den Microsoft SQL Server bietet sich hier die Nutzung der Hochverfügbarkeitsoptionen von Microsoft SQL Server an. Eine ausführliche Dokumentation zu den möglichen Optionen befindet sich hier:
Microsoft SQL Server 2008 R2
https://technet.microsoft.com/en-us/library/ff658546(v=sql.100)

Microsoft SQL Server 2012
https://msdn.microsoft.com/en-us/library/ms190202(v=SQL.110).aspx

SQL Server AlwaysOn Team Blog
https://blogs.msdn.com/b/sqlalwayson/

 

RD Web Access
Der RD Web Access Server stellt für die Nutzer ein Einstiegsportal zum Zugriff auf die bereitgestellten Anwendungen oder virtuellen Desktops bereit. Da es sich hier um einen Web Server mit Internet Information Server (IIS) handelt, bietet sich die Nutzung einer Loadbalancing Technologie wie Windows Network Loadbalancing (NLB) oder eines Hardware Loadbalancers an.

Voraussetzungen

Auf allen beteiligten Servern muss das Remote Management aktiviert sein. Standardmäßig ist dies bei Windows Server 2012 nach der Installation der Fall. Im Server Manager ist dies direkt hier ersichtlich:

 

In der Windows Firewall müssen die In-Bound Regeln so konfiguriert sein:

Durch eine Gruppenrichtlinie (GPO) kann es in manchen Umgebungen dazu kommen, dass die o.g. Standard-Einstellungen überschrieben werden. Sollte es also schon beim Verbindungsaufbau zu Problemen kommen sollte der Startpunkt der Fehlersuche beim Remote Management und der Windows Firewall sein.

Außerdem muss der Benutzer welcher die Konfiguration via Powershell für die Remote Desktop Infrastruktur durchführt auf allen Servern Mitglied der lokalen Administrator Gruppe sein.

Auf den Servern welche die Rolle der RD Connection Brokers ausführen sind folgende Voraussetzungen zu schaffen:

  1. Installation des .Net Frameworks 3.5
  2. Installation der SQL Server Native Client Tools

Installation des .Net Framework 3.5

Dism /online /enable-feature /featurename:NetFx3 /All /Source:D:\sources\sxs /LimitAccess

Installation der SQL Server Native Client Tools vom Microsoft SQL Server Installationsmedium (z.B. D:\)

D:\setup.exe /ACTION=Install /QS /IACCEPTSQLSERVERLICENSETERMS /FEATURES=Conn

Der Parameter /QS kann auch durch /Q ersetzt werden, in diesem Fall würde dann keine Ausgabe des Setup-Status auf dem Bildschirm erfolgen. Dies ist sinnvoll wenn die Installation komplett unbeaufsichtigt abläuft.

Auf dem Microsoft SQL Server müssen die RD Connection Broker die erforderlichen Berechtigungen gemäß dieser Beschreibung erhalten:
https://social.technet.microsoft.com/wiki/contents/articles/10393.rd-connection-broker-ha-sql-permissions.aspx

Installation des Remote Desktop Session Host Deployments mit Powershell

Unter Windows Server 2012 wird ein neuer Begriff in die Welt der Remote Desktop Services eigeführt, das sogenannte “Deployment”. Ein Deployment ist am besten mit einem Verbund an Remote Desktop Session Host Servern zu umschreiben welche gemeinsame Infrastrukturkomponenten (z.B. RD Connection Broker, RD Web Access) nutzen.

Es ist zu empfehlen, die folgenden Aktionen von dem Server durchzuführen welcher der ersten RD Connection Broker Server in der Infrastruktur sein wird. Zu Beginn startet man die PowerShell-Konsole mit administrativen Rechten und lädt das Modul für die Remote Desktop Services mit dem Befehl

Import-Module RemoteDesktop

Um ein Deployment per PowerShell zu erzeugen ist folgender Befehl zu verwenden:

New-RDSessionDeployment –ConnectionBroker <Connection Broker Name> –SessionHost <Session Host Namen>   –WebAccessServer <Web Access Server Name>

Es kann mit diesem Befehl auch mehr als ein RD Session Host Server installiert und ins Deployment eingefügt werden. Man kann mehrere Server direkt per Komma getrennt in den Befehl einfügen. Dies sieht dann so aus:
 

Durch diesen Befehl werden auf den spezifizierten Servern die nötigen Windows Features automatisch installiert. Man muss nicht auf jedem RD Session Host das Feature einzeln aktivieren.

Danach kann der erste Connection Broker in den Hochverfügbarkeitsmodus gesetzt werden.

set-RDConnectionBrokerHighAvailability –ConnectionBroker <Connection Broker Name> –DatabaseConnectionString “DRIVER=SQL Server Native Client 10.0;SERVER= <SQL Server Name> ;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;Database= <Datenbank Name> ” –DatabaseFilePath <Pfad und Name der Datenbankdatei> –ClientAccessName <Gemeinsamer DNS-Name>

Exemplarisch kann dies dann so aussehen

Folgende Punkte sind dabei zu beachten:

  • Es kann in diesem Schritt nur der erste Connection Broker hochverfügbar konfiguriert werden, alle weiteren folgen in einem nächsten Schritt.
  • Mit dem <Pfad und Name der Datenbankdatei> ist der Pfad auf der SQL Server Festplatte gemeint incl. Dateiname der Datenbank (ohne Dateierweiterung) – dieser ist identisch mit dem vorher spezifizierten Datenbank Namen aus dem Connection String.
  • Der gemeinsame DNS-Name ist der Alias unter dem der Verbund aus Connection Brokern via DNS-Auflösung erreichbar sein soll.

Um den zweiten oder weiter RD Connection Broker in den Hochverfügbarkeits-Verbund aufzunehmen ist folgender Befehl nötig

Add-RDServer -Role RDS-CONNECTION-BROKER -Server <Server Name> -ConnectionBroker rdcb1.contoso.msft


Damit ist die Basis für eine hochverfügbare Bereitstellung von Remote Desktop Services geschaffen.

Erstellen von RD Session Collections mit PowerShell

Um Nutzern den Zugriff zu ermöglich können jetzt sogenannte „Collections“ aus RD Session Hosts definiert werden. Eine Collection bezeichnet eine Sammlung gleichartiger RD Session Hosts. Dies bedeutet, auf allen Servern in dieser Sammlung stehen die gleichen Anwendungen bereit. Es wäre zwar technisch möglich, auch Server mit einem unterschiedlichen Satz an Anwendungen in eine Collection aufzunehmen, es ist aber absolut nicht sinnvoll. Ein Broker verteilt die sich anmeldenden Nutzer auf alle Server in einer Collection. Würden dort unterschiedliche Anwendungen bereitstehen käme es für die Benutzer zu einem inkonsistenten Verhalten. Steht z.B. Microsoft Office nur auf einem von zwei Servern in einer Collection bereit, würde manche Benutzer es nutzen können, manche nicht, abhängig davon auf welchen Server sie durch den Connection Broker gerade geleitet werden. Es ist also immer darauf zu achten, dass alle RD Session Hosts in einer Collection absolut identisch konfiguriert sind.

Zur Erstellung einer neuen Collection wird dieser Powershell befehl verwendet

New-RDSessionCollection -CollectionName "<Name der Collection>" -SessionHost <Namen der Session Hosts in der Collection> -CollectionDescription "<Freitext Beschreibung>" -ConnectionBroker <Connection Broker Name>

Exemplarisch sieht dies dann so aus:

Im Anschluss folgen dann weitere Schritte um die Konfiguration der Remote Desktop Session Host Umgebung zu vervollständigen. Dazu gehört u.a.:

  • Aktivierung und Konfiguration des RD Lizenz Servers
  • Installation und Veröffentlichung von Anwendungen auf den RD Session Hosts
  • Erstellung und Konfiguration von SSL Zertifikaten zur Absicherung der Kommunikation
  • Einrichten von Windows Network Loadbalancing (NLB) oder eines Hardware Loadbalancers für die RD Connection Broker und RD Web Access
  • Installation und Konfiguration eines RD Gateway Servers um den sicheren Zugriff aus dem Internet zu ermöglichen

Wie der Artikel zeigt, gibt es im Windows Server 2012 eine sehr einfache Möglichkeit die Hochverfügbarkeit einer Remote Desktop Infrastruktur sicherzustellen. Mit Hilfe von PowerShell lässt sich die Konfiguration in großen Umgebungen automatisieren und somit reproduzierbar machen um Fehlkonfigurationen zu vermeiden.

Viel Spaß mit den Remote Desktop Services in Windows Server 2012!

Claus Emrich (Microsoft Consulting Services)