Ошибка Cannot create another system semaphore на RDS ферме

Обновлено 11.10.2021

Cannot create another system semaphoreДобрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org🔝. В прошлый раз мы с вами разобрали "Как поменять часовой пояс в Windows Server 2019". Идем далее, сегодня у меня случился день траблшутинга с терминальной фермой. Произошел инцидент, в результате которого отвалился LUN, где располагался ряд виртуальных машин из RDS фермы. После восстановления работоспособности, стали поступать жалобы от 10% людей, что они не могут подключиться на терминал, в логах на брокерах я увидел огромное количество ошибок с текстом "Cannot create another system semaphore". Давайте разбираться в чем дело и как все починить.

Ошибки Cannot create another system semaphore и 0x80070064

Как я и писал выше у меня есть RDS HA ферма на базе Windows Server 2019, после аварии 6 хостов вышли из строя и вновь были восстановлены. Успокоившись, что все хороша я продолжил заниматься делами, начали поступать некоторые ошибки подключения к терминалу. Ошибка была стандартная:

не удается подключиться к удаленному компьютеру

не удается подключиться к удаленному компьютеру

Проверив под тестовой учетной записью, я так же получил данную ошибку. Первое, что нужно делать в такой ситуации, это делать диагностику на активном брокере подключений. Для начала заходим в журнал событий Microsoft-Windows-TerminalServices-SessionBroker/Admin. Он весь был забит событиями 802:

RD Connection Broker failed to process the connection request for user name. Error: Cannot create another system semaphore.

Код ID 802 говорит, о том, что брокеру не удалось переправить запрос пользователя на RDSH хост.

RD Connection Broker failed to process the connection request for user name

На неактивном брокере была куча растущих ошибок ID 2308:

ID 230: Failed to retrieve server status, Desktop term139.root.pyatilistnik.org, Collection Term-Coll, error code 0x80070064

Данная ошибка означает: Ваш сеанс служб удаленных рабочих столов завершен. Соединение с удаленным компьютером было потеряно, возможно, из-за проблем с сетевым подключением. Попробуйте снова подключиться к удаленному компьютеру. Если проблема не исчезнет, ​​обратитесь к сетевому администратору или в службу технической поддержки.

В тексте ошибки фигурировали именно недавно отваливающиеся RDSH хосты, которые в данный момент были доступны, но были удалены из RDS фермы, так как их невозможно было перевести в режим стока, чтобы пользователей не отправлять на них.

error code 0x80070064

Переходим в журнал Microsoft-Windows-TerminalServices-SessionBroker-Client/Operational. Там вы можете увидеть ошибки ID 1306.

ID 1306: Remote Desktop Connection Broker Client failed to redirect the user. Error: NULL

Remote Desktop Connection Broker Client failed to redirect the user

И ошибку 1296:

Remote Desktop Connection Broker Client failed while getting redirection packet from Connection Broker. User : name. Error: Element not found

Remote Desktop Connection Broker Client failed while getting redirection packet from Connection Broker. User :Error: Element not found.

Все эти ошибки нам говорят, что хоть я и удалил экстренно все сбойные RDSH хосты из RDS фермы, брокер почему-то до сих пор считает их частью фермы, поэтому и пытается их использовать для подключений пользователей.

Как восстановить работу RDS фермы

В моем случае рецепт был очень простой. Вам необходимо повторно переустановить на сбойных RDSH хостах роль подключения 💪, для этого откройте оснастку управления RDS фермой и попробуйте добавить сбойные хосты заново в состав.

✅Если у вас они уже добавлены, то попробуйте их корректно удалить сначала

Выберите свою коллекцию и в разделе "Host Servers" нажмите "Tasks - Add RD Session Host Servers".

Добавление RDSH хоста

Выбираем нужный сервер и переносим его в правую область.

Добавление RDSH в серверный пул

Соглашаемся, что будет установлена или переустановлена роль, если потребуется перезагрузка, то сделать ее.

Переустановка роли RDSH

Далее дожидаемся успешного добавления хоста в RDS ферму, после чего ошибки "error code 0x80070064" и "successfully added rdsh host"

успешно добавленный rdsh хост

Дополнительно, что еще можно проверить

  • ✅ Обязательно проверьте на конечных RDSH хостах, что там просто включена возможность подключения по RDP. Я уже подробно об этом останавливался в статье, о том как удаленно или локально это проверить. Главное, чтобы стояла заветная галочка

Разрешить удаленное подключение к этому компьютеру

  • ✅ Если подключения разрешены, а ошибка все еще появляется, проверьте доступность порта 3389, через PowerShell или Telnet.
  • ✅ Следующим пунктом вам нужно попробовать перенести сбойные хосты в другую OU, на которую не распространяются общие групповые политики RDS фермы, имеется ввиду, GPO производящие настройки RDP подключений. Переносите их в другое организационное подразделение, обновляете групповую политику и перезагружаете сервер, так же можете вручную удалить действие данных политик. После данных манипуляций пробуем вернуть RDSH хосты в OU, накатить на них политики и вернуть в RDS ферму.
  • ✅ Заново развернуть сбойные RDSH хосты из шаблонов (Переустановка)
  • ✅ Очень радикальное решение - это удаление коллекции и ее пересоздание, надеюсь, что у вас до того не дойдет
  • ✅Попробуйте на сбойном хосте вручную добавить в список брокеров ваши сервера. Найти Это можно или в gpedit.msc или в отдельной GPO

Английский вариант - Local Computer Policy - Computer Configuration - Administrative Templates - Windows Components - Remote Desktop Services - Remote Desktop Session Host - RD Connection Broker - Configure RD Connection Broker server name

Русский вариант - Локальный компьютер - Конфигурация компьютера - Административные шаблоны - Компоненты Windows - Службы удаленных рабочих столов -  Узел сеансов удаленных рабочих столов - Посредник подключений к удаленному рабочему столу - Настроить имя сервера посредника подключений к удаленному рабочему столу

Через запятую пишем тут полное FQDN имя.

Настроить имя сервера посредника подключений к удаленному рабочему столу

На этом у меня все. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.

Автор - Сёмин Иван

5 Responses to Ошибка Cannot create another system semaphore на RDS ферме

  1. Денис:

    Иван добрый день!
    Скажите пож-та, на вашей RDS ферме какая версия Windows 2019 установлена на RDSH — Standard или Datacenter?
    Спасибо

  2. Иван Семин:

    Добрый день! Standard

  3. Денис:

    Спасибо за ответ Иван. А то мы поставили Data Center и такое ощущение, что с этой редакцией для роли RDS проблемы. Хотим переделать терминальный сервер на Standard и посмотреть будут ли те же проблемы. Поэтому решил у Вас уточнить что Вы используете. Спасибо

  4. Павел:

    Добрый день.
    Подскажите пожалуйста, есть RDS и есть шлюз RDS, до обновления Windows до 11 версии самоподписанный сертификат принимался, в Windows 11 ошибка:
    Не удалось подключиться к удаленному компьютеру, поскольку сертификат сервера шлюза удаленных рабочих столов просрочен или отозван. Обратитесь за помощью к администратору сети.

  5. Иван Семин:

    А сертификат на Windows 11 с RDS шлюза видится как доверенный или красный с предупреждением?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *