Dnes jeden příspěvek z IT světa. Nedávno jsem u zákazníka konfiguroval Remote Desktop Services (RDS) na Windows Server 2012. Vyskytly se zde jisté problémy a omezení, které Vám Microsoft neřekne. O ty se zde podělím.
Nyní si v rychlosti nastíníme scénář, o který se u zákazníka jednalo. Na pobočce zákazníka bylo potřeba navrhnou řešení pro provoz nové aplikace více uživateli (okolo 6-ti) najednou, ale z technických důvodů (aplikace používá specifický hardware) musí být spouštěna pouze z jednoho počítače. Celé řešení přitom musí být nezávislé a musí být postavené mimo stávající infrastrukturu na jednom novém serveru.
Řešení s Remote App
Chtěná konfigurace tedy byla tato: Na novém serveru Windows Server 2012 s Remote Desktop Services rolí se aplikace vypublikuje pomoci Remote App. Pro správu přistupujících uživatelů máme dvě možnosti, buď použijeme pouze Workgroup a lokální účty, nebo bude tento počítač doménový řadič (DC) a použijí se doménové účty uživatelů.
Ještě poznámka, vzhledem k tomu, že při instalaci českého Windows Server 2012 a následném přepnutí na EN language pack již zůstanou názvy rolí česky (!!!), budu u nich uvádět i jejich české názvy. Ostatní konfiguraci předpokládám v angličtině (samozřejmě doporučuji použít rovnou pouze anglickou instalaci). A ještě pozor, že v české verzi je role “Remote Desktop Services” překládána pouze jako “Vzdálená plocha”, takže se to dost plete s klasickým Remote Desktop .
Jak se ukázalo, tak tato konfigurace s Remote App není s Windows Server 2012 možná. Proč? Rozebereme si obě možnosti:
1) Počítač ve Workgroupě. Instalace volbou Remote Desktop Services installation (Session-based desktop deployment) není možná, zobrazí se chyba, že počítač musí být v doméně. Pomoci Role-based instalace je možné nainstalovat obě potřebné role tj. Remote Desktop Session Host (Hostitel relací vzdálené plochy) a hlavně role Remote Desktop Connection Broker (Zprostředkovatel připojení k vzdálené ploše) potřebná pro Remote App. Po instalaci je ale problém v tom, že RDS roli nelze spravovat - Server Manager oznámí, že musíme být přihlášení pod doménovým účtem.
2) Server konfigurován jako Doménový řadič s Remote Desktop Services rolemi. Po nainstalování rolí doménového řadiče a provedení promotion pomoci průvodce lze nainstalovat roli Remote Desktop Session Host (Hostitel relací vzdálené plochy). Druhá role potřebná pro Remote App Remote Desktop Connection Broker (Zprostředkovatel připojení k vzdálené ploše) již ale nainstalovat nejde. Prý se dá dočíst (mě se to kromě neoficiálního fóra nepovedlo), že role není podporovaná, pokud je server provozován jako domain controller.
Co mě na tom ale velice udivilo je to, že při instalaci (ať už Role-based nebo Remote Desktop Services installation) lze roli Remote Desktop Connection Broker (Zprostředkovatel připojení k vzdálené ploše)normálně vybrat, poté se role instaluje, ale nedoinstaluje. Wizard nic neoznámí, nikde se nedozvíte, že role nebyla nainstalována, natož nějakou smysluplnou chybovou hlášku. (Jediná hláška co se zobrazí, je že průvodce vyžaduje restart počítače.) Takto si Microsoft představuje “by design” nepodporovaný scénář (*).
Jediné podporované řešení pro Remote Desktop Connection Broker (pokud neuvažujeme downgrade na Windows Server 2008 R2) je tedy pouze s minimálně dvěma servery, jedním jako doménový řadič a druhý s RDC připojený do domény (návod zde). Vzhledem k našemu scénáři 6-ti uživatelů, provozování jedné aplikace a nezávislosti řešení není možné provozovat další server. Od této konfigurace s Remote App jsme tedy upustili.
Řešení pouze s Remote Desktop Session Host (bez Remote App)
Problémy ovšem ale nekončí. Nainstalovali jsme tedy pouze roli Remote Desktop Session Host (Hostitel relací vzdálené plochy), uživatelé se budou připojovat pouze “klasicky” vzdálenou plochou. Pro produkční prostředí je nutno nastavit licence. Nainstalujeme roli Remote Desktop Licensing (Licencování vzdálené plochy) a pomoci Remote Desktop Licensing Manager nastavíme a aktivujeme zakoupené licence.
To ovšem nestačí, Windows stále píší, že licence nejsou nakonfigurované.
To samé pokud spustíme RD Licensing Diagnoser, ten nám oznámí, že nejsou nakonfigurovány licence pro Remote Desktop Session Host. A jak je nakonfigurovat? Ve Windows Serveru 2008 R2 jste prostě spustili nástroj Remote Desktop Session Host Configuration (viz. návod například zde) a hotovo. Na Windows Server 2012 již tento nástroj neexistuje, nahradila ho konfigurace RDS v Server Manageru.
OK, nám ale Server Manager opět nic neumožní nastavit (tentokrát píše, že v Server poolu není ani jeden RD Connection Broker, což samozřejmě nemáme). Našel jsem záchranu v tomto článku, kde je uvedeno řešení pomoci nastavení v lokálních politikách. Postup je následující:
- Spustíme Local Group Policy Editor příkazem gpedit.msc.
- Ve stromě přejdeme na Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host –> Licensing
- Zde nastavíme položky:
Use the specified RD license servers – jméno serveru
Set the Remote Desktop licensing mode – Per User
A konečně jsou licence správně nastaveny.
Tento postup pomoci Group Policy je nutné použít v obou případech správy uživatelů tj. server pouze ve workgroupě i server jako domain controler.
(*) Trochu více jsem zkoumal, proč se role Remote Desktop Connection Broker na doménovém controlleru nenainstaluje. Role ke své činnosti vyžaduje jako dependency Fearure Windows internal Database (WID). Jedná se o takový interní SQL Server, který některé role serveru využívají (například i WSUS).
Problém je v tom, že na doménovém řadiči se role k Windows internal Database snaží přistupovat pod účtem NT AUTHORITY\NETWORK SERVICE, na což nemají práva. K WID se dá dokonce připojit pomoci SQL Server Management Studia (s použitím připojení \\.\pipe\MICROSOFT##WID\tsql\query), a našel jsem i návod, že se pomoci Management Studia může právo pro NETWORK SERVICE do WID přidat. Toto mi ovšem nefungovalo.