Ошибка Cannot create another system semaphore на RDS ферме
Добрый день! Уважаемые читатели и гости одного из крупнейших 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:
Код ID 802 говорит, о том, что брокеру не удалось переправить запрос пользователя на RDSH хост.
На неактивном брокере была куча растущих ошибок ID 2308:
Данная ошибка означает: Ваш сеанс служб удаленных рабочих столов завершен. Соединение с удаленным компьютером было потеряно, возможно, из-за проблем с сетевым подключением. Попробуйте снова подключиться к удаленному компьютеру. Если проблема не исчезнет, обратитесь к сетевому администратору или в службу технической поддержки.
В тексте ошибки фигурировали именно недавно отваливающиеся RDSH хосты, которые в данный момент были доступны, но были удалены из RDS фермы, так как их невозможно было перевести в режим стока, чтобы пользователей не отправлять на них.
Переходим в журнал Microsoft-Windows-TerminalServices-SessionBroker-Client/Operational. Там вы можете увидеть ошибки ID 1306.
И ошибку 1296:
Все эти ошибки нам говорят, что хоть я и удалил экстренно все сбойные RDSH хосты из RDS фермы, брокер почему-то до сих пор считает их частью фермы, поэтому и пытается их использовать для подключений пользователей.
Как восстановить работу RDS фермы
В моем случае рецепт был очень простой. Вам необходимо повторно переустановить на сбойных RDSH хостах роль подключения 💪, для этого откройте оснастку управления RDS фермой и попробуйте добавить сбойные хосты заново в состав.
Выберите свою коллекцию и в разделе "Host Servers" нажмите "Tasks - Add RD Session Host Servers".
Выбираем нужный сервер и переносим его в правую область.
Соглашаемся, что будет установлена или переустановлена роль, если потребуется перезагрузка, то сделать ее.
Далее дожидаемся успешного добавления хоста в RDS ферму, после чего ошибки "error code 0x80070064" и "successfully added rdsh host"
Дополнительно, что еще можно проверить
- ✅ Обязательно проверьте на конечных RDSH хостах, что там просто включена возможность подключения по RDP. Я уже подробно об этом останавливался в статье, о том как удаленно или локально это проверить. Главное, чтобы стояла заветная галочка
- ✅ Если подключения разрешены, а ошибка все еще появляется, проверьте доступность порта 3389, через PowerShell или Telnet.
- ✅ Следующим пунктом вам нужно попробовать перенести сбойные хосты в другую OU, на которую не распространяются общие групповые политики RDS фермы, имеется ввиду, GPO производящие настройки RDP подключений. Переносите их в другое организационное подразделение, обновляете групповую политику и перезагружаете сервер, так же можете вручную удалить действие данных политик. После данных манипуляций пробуем вернуть RDSH хосты в OU, накатить на них политики и вернуть в RDS ферму.
- ✅ Заново развернуть сбойные RDSH хосты из шаблонов (Переустановка)
- ✅ Очень радикальное решение - это удаление коллекции и ее пересоздание, надеюсь, что у вас до того не дойдет
- ✅Попробуйте на сбойном хосте вручную добавить в список брокеров ваши сервера. Найти Это можно или в gpedit.msc или в отдельной GPO
Русский вариант - Локальный компьютер - Конфигурация компьютера - Административные шаблоны - Компоненты Windows - Службы удаленных рабочих столов - Узел сеансов удаленных рабочих столов - Посредник подключений к удаленному рабочему столу - Настроить имя сервера посредника подключений к удаленному рабочему столу
Через запятую пишем тут полное FQDN имя.
На этом у меня все. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.
Иван добрый день!
Скажите пож-та, на вашей RDS ферме какая версия Windows 2019 установлена на RDSH — Standard или Datacenter?
Спасибо
Добрый день! Standard
Спасибо за ответ Иван. А то мы поставили Data Center и такое ощущение, что с этой редакцией для роли RDS проблемы. Хотим переделать терминальный сервер на Standard и посмотреть будут ли те же проблемы. Поэтому решил у Вас уточнить что Вы используете. Спасибо
Добрый день.
Подскажите пожалуйста, есть RDS и есть шлюз RDS, до обновления Windows до 11 версии самоподписанный сертификат принимался, в Windows 11 ошибка:
Не удалось подключиться к удаленному компьютеру, поскольку сертификат сервера шлюза удаленных рабочих столов просрочен или отозван. Обратитесь за помощью к администратору сети.
А сертификат на Windows 11 с RDS шлюза видится как доверенный или красный с предупреждением?