RDSH сервер не переводится в режим Drain Mode
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов по системному администрированию Pyatilistnik.org. В прошлый раз мы с вами разобрали, как создать изолированный терминальный стол в рамках одного сервера. В сегодняшней статья я вам хочу показать интересную ситуацию при которой один из серверов в коллекции RDS сервера не переходит в режим стока и не закрывает новые подключения. Давайте разбираться в чем дело.
Описание ситуации
И так у меня в организации есть RDS ферма из 20 хостов на базе Windows Server 2012 R2. Ранее я вам рассказывал, что если нужно произвести обслуживание нужного RDSH хоста, вам необходимо его было перевести в режим стока (Drain Mode). Вроде бы операция рядовая, но в этот раз у меня выскочила ошибка:
Как решается проблема
Первое, что нужно сделать, это провести небольшую диагностику. Первым делом я полез в настройки коллекции RDS фермы, ранее я рассказывал как собирается такая консоль управления. Открываем коллекцию сеансов, меня привлекло на вкладке "Балансировка параметров балансировки нагрузки", что у нужного хоста в столбце памяти стоит "0", у других показаны нормальные значения.
Я попытался подключиться к нужному хосту через оснастку "Tsconfig.msc "Конфигурация узла сеансов удаленных рабочих столов (Remote Desctop Session Host Configuration)", но получил ошибку:
У меня еще была удобная утилита для управления RDSH хостами Terminal Services Manager, и в ней я увидел причину:
Удаленный вызов процедур (RPC) — это механизм, который позволяет процессам Windows взаимодействовать друг с другом как между клиентом и сервером по сети, так и в рамках одной системы. Множество встроенных компонентов Windows используют RPC. RPC использует динамические порты для взаимодействия между системами, но статический порт (TCP-порт 135) также должен использоваться как начальная точка взаимодействия. Данный статический порт прослушивает сопоставителя конечных точек RPC.
Самое интересное, что в данный момент на сервере работали пользователи и мне нужно было в ручную закрыть новые подключения к данному серверу, ввести его в режим стока. Для этого можно воспользоваться настройкой в реестре Windows. Через окно "Выполнить" откройте regedit и перейдите в раздел:
Если у ключа TSServerDrainMod стоит значение "0", то у него нет ограничений на подключение, если вы выставите "2", то включите режим стока (Drain Mode).
Далее вы ждете когда у вас все пользовательские сеансы будут отключены, не забывайте настраивать временные лимиты на подключения к RDSH хостам. Пробуем перезагрузить ваш сервер, в подавляющем количестве случаев это решает проблему с переводом сервера в режим стока. В итоге я вижу, что сервер стал отображать правильно подключения и ресурсы. В оснастке управления RDS серверами, все успешно отработало и ошибка "Не удалось изменить состояние подключения для сервера" исчезла.
Хочу напомнить, чтобы у вас были работающие службы:
- DcomLaunch - Модуль запуска процессов DCOM-сервера
- RpcEptMapper - Сопоставитель конечных точек RPC
- RpcLocator - Локатор удаленного вызова процедур (RPC)
- RpcSs - Удаленный вызов процедур (RPC)
- WiaRpd - События получения неподвижных изображений
Далее ели подключений все нет и вы не можете из оснастке перевести хост в режим стока, то проверьте, доступен ли у вас порт 135. Как проверять открытые порты я уже рассказывал, посмотрите. Далее советую вам проверить, что на сетевом интерфейсе у вас выставлены галки:
- Служба доступа к файлам и принтерам сетей Microsoft
- Протокол Интернета версии 6 (TCP/IPv6)
На этом у меня все. Надеюсь, что у вас все получилось. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.