Remote Desktop Connection Broker is not ready for RPC communication

J’ai récemment eu à travailler sur un problème de lancement de « remote app » sur une ferme RDS 2012R2 ayant la topologie suivante :

-1 Broker
BROKER.CNAUDY8.LAB

-1 RDS Host
RDSHost.cnaudy8.lab

-1 Server Web Access et Gateway
WebGate.cnaudy8.lab

Le client arrivait à se connecter sur le site RDWeb et lançait alors sa "remote application".
Malheureusement, au lieu de bien lancer son application, il était face au message d’erreur suivant :

Error

Il reproduisait le problème avec toute « remote application ». Nous avons donc utilisé un exemple simple avec notre bonne vieille calculatrice (calc.exe).

Le message d’erreur, très générique, ne permettait pas vraiment d’en savoir plus :
==
This computer can't connect to the remote computer.

Try connecting again. If the problem continues, contact the owner of the remote computer or your network administrator.
==

Les seuls symptômes visibles sur les serveurs étaient cette erreur sur le broker du déploiement RDS :

Error       5/2/2016 7:50:40 PM          TerminalServices-SessionBroker-Client            1306      RD Connection Broker Client processes request from a user
Remote Desktop Connection Broker Client failed to redirect the user XXXX\XXXXXXXX.
Error: NULL

Error       5/2/2016 7:50:40 PM          TerminalServices-SessionBroker-Client            1296      RD Connection Broker Client processes request from a user
Remote Desktop Connection Broker Client failed while getting redirection packet from Connection Broker.
User : XXXX\XXXXXXXX
Error: Remote Desktop Connection Broker is not ready for RPC communication.

Verbose  5/2/2016 7:50:40 PM          TerminalServices-SessionBroker-Client            1301      RD Connection Broker Client processes request from a user
Remote Desktop Connection Broker Client received request for redirection.
User : XXXX\XXXXXXXX
RDP Client Version : 5

Cette erreur est visible dans l’event log :
Event viewer/Application And Services Logs/Microsoft/Windows/TerminalServices-SessionBroker-Client/Operational

L’analyse de la situation avec des outils internes au support technique Microsoft nous a permis de déterminer la cause de ce message d’erreur.
Le problème se situe dans une des valeurs de la clé de registre :
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\ClusterSettings]

Sur la machine broker de mon client, la valeur de « SessionDirectoryLocation » était vide :
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\ClusterSettings]
"SessionDirectoryAdditionalParams"=""
"SessionDirectoryPerf"=dword:00000001
"SessionDirectoryClusterName"=""
"SessionDirectoryLocation"=""
"SessionDirectoryRedirectionIP"=""
"DeploymentServerName"="Broker.domain.com"

Sur une machine fonctionnant, cette valeur est positionnée et contient le nom du broker (exemple sur ma machine de test) :[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\ClusterSettings]
"SessionDirectoryAdditionalParams"=""
"SessionDirectoryPerf"=dword:00000001
"SessionDirectoryClusterName"=""
"SessionDirectoryLocation"="BROKER.CNAUDY8.LAB; "
"SessionDirectoryRedirectionIP"=""
"DeploymentServerName"="Broker.cnaudy8.lab"

Afin de solutionner le problème, nous avons donc mis la bonne valeur dans cette clé sur le broker.
Puis nous avons redémarré le service TermService (nommé Remote Desktop Service) afin que le changement soit pris en compte :

restart

A la suite de quoi tout a fonctionné comme prévu.

Merci d’avoir pris le temps de lire cet article.

Comments

  • Anonymous
    September 12, 2016
    Thank you so much for this excellent analysis. We had a case where the automated deployment mechanism put a wrong machine name (cluster ip) into the SessionDirectoryLocation albeit our RDCB was not clustered.