Как управлять RDS фермой Windows Server 2012-16
Доброго времени суток, многоуважаемые инженеры, системные администраторы и просто начинающие пользователи. Рад вас вновь приветствовать на страницах IT блога Pyatilistnik.org. Если вы мой постоянный читатель, то вы заметили, что я очень часто и много пишу про терминальные сервера и RDS фермы. Сегодня я хочу вам показать, как производится управление RDS фермой Windows Server 2012 и Windows Server 16. Я на сто процентов уверен, что данная информация будет вам полезна, так как я часто видел опытных администраторов, кто не знал как это делается, в виду старых знаний и стереотипов, о данной технологии.
Описание ситуации
Пришел один администратор к нам на работу, пришла заявка, что нужно было для обслуживания вывести из RDS фермы один из узлов подключения, посидев некоторое время и потыкав диспетчер серверов, он не смог выполнить данную задачу, потому что у него было понимание работы терминального сервера, но не фермы.
В чем отличие фермы от терминала
Если посмотреть организацию удаленного доступа в Windows Server 2008 R2, то там схема была простой, где-то в сети устанавливался сервер лицензирования удаленных рабочих столов, а уже на нужно из серверов, куда планировалось подключение, ставилась роль "Службы удаленных рабочих столов". Ему назначались лицензии и пользователь подключался.
Если посмотреть концепцию Windows Server 2012 R2 и старше, то выглядит это уже вот так, есть некое виртуальное имя к которому все подключаются, есть серверная роль "Посредник подключения (RD Connection Broker)", он берет на себя роль распределения нагрузки и количество сеансов пользователей, на сервера удаленного подключения "RD Session Host", где уже работаю пользователи. Вся эта конструкция объединяется в некий пул. называемый RDS фермой, где легко создать отказоустойчивость на уровне посредников подключения и легко обслуживать хосты конечного подключения.
Схема управления RDS фермой
Тот сотрудник не совсем понимая схему и видя ее впервые, наивно подумал, что все управление Remote Desktop Services фермой осуществляется через посредника подключения (Connection Broker). Он попытался к нему подключиться, но его послали с формулировкой "Удаленный компьютер "имя", попытка подключения к которому выполняется, перенаправляет вас на удаленный компьютер "имя", он то и не знал, что для подключения к нужному хосту фермы нужно использовать специальные ключи.
Далее показав ему, как происходит подключение к посреднику, он попытался отыскать оснастку управления, так как в Windows Server 2008 R2, была именно такая реализация работы, но он там ничего не нашел. Он подглядел у меня, что я управляю RDS, через "Диспетчер серверов". Он его открывает и у него там то же ничего не оказалось, в итоге он побился часок и попросил ему показать. Чтобы знающих людей стало больше и грамотность системных инженеров была больше я вам написал небольшую инструкцию. Не подумайте, что я надменно отнесся к своему коллеге, я просто так же был однажды в на его месте и понимал, что это просто отсутствие опыта, что не смертельно.
Собираем консоль управления RDS фермой
Для управления настройками Remote Desktop Services вам потребуется клиентская операционная система Windows 8.1 или Windows 10, либо это могут быть Windows Server 2012 R2 и выше. Там нам потребуется оснастка "Диспетчер серверов".
Если вы знаете всех участников RDS фермы, то это хорошо, вы немного себе выиграете времени, если нет, то придется слегка пописать команды и помучить DNS-сервер.
Откройте командную строку или запустите PowerShell оболочку. Предположим у вас виртуальное имя для подключения к удаленному рабочему столу TERM. Тут у вас два варианта:
- Воспользоваться утилитой nslookup
- Воспользоваться утилитой Resolve-DnsName
nslookup term
Resolve-DnsName term -Type A
Где -Type A, это указание запросить только A записи
И та и другая выдали вам ip-адреса, в которое разрешается ваше виртуальное имя RDS фермы. В моем примере их два. Эти адреса принадлежат посредникам по подключению (Connection Broker), делаем так же запрос:
Стрелками я выделил полученные DNS имена, самое главное мы получили.
Теперь открывает оснастку "Диспетчер серверов" от имени той учетной записи у которой есть права на администрирование RDS фермы. В открывшейся оснастке выберите пункт "Добавить другие серверы для управления"
У вас откроется окно "Добавление серверов", перейдите на вкладку DNS и в поисковой строке укажите нужное имя брокера и нажмите кнопку с изображением лупы. У вас будет осуществлен поиск по базе Active Directory, если такой сервер есть, то он будет отображен в списке. Переносим его в поле выбрано.
Точно так же поступаем и с остальными посредниками подключений к Remote Desktop Services ферме.
У вас начнется процесс добавление в вашу оснастку дополнительных серверов. Когда закончится добавление, то вы увидите, что у вас появились серверные роли, в нашем случае "Службы удаленных рабочих столов" и обратите внимание на иконку "Все серверы", тут стало их уже два.
Переходим в роль "Службы удаленных рабочих столов", в итоге у вас отобразится список всех участников RDS фермы, и для ее управления вам нужно их всех добавить в данных пул серверов.
В итоге у меня добавились все мои хосты подключения и сервера лицензирования. Как видите стало 20 серверов.
Переходим в "Службы удаленных рабочих столов", в этот раз у вас уже откроется полноценное управление коллекциями RDS. Вы увидите схему работы, вам будет представлен список всех ваших серверов и кто за какую роль отвечает. Переходим в саму коллекцию.
Попав в коллекцию удаленных рабочих столов, у вас будет несколько областей:
- Свойства - тут вы зададите права доступа, лимиты и многое другое
- Подключения - тут будут отображены все ваши сеансы пользователей, в моем примере, это всего 338 человек, так как уже не рабочий день, а вечер пятницы, в пиковое время, эта цифра в районе 950 подключений.
- Удаленные приложения RemoteApp
- Серверы узлов - тут вы сможете запрещать или разрешать новые подключения
Так же для удобства администрирования серверов, я вам советую создавать отдельные группы по нужным вам признакам и управлять ими, но об этом уже в другой раз. Либо же вы можете создать группу серверов в Remote Desktop Connection Manager.
Надеюсь вы поняли, как производится управление RDS фермой после ее установки. С вами был Иван Семин, автор и создатель IT блога Pyatilistnik.org.
Круто мужик)5 лет админю маленькую конторку, и на 2012r2, RDS на одном сервере, оказывается все может быть намного круче. Спасибо!
RDS Microsoft давно использую, крутая вещь но и немного закрытая.Бывали моменты кода брокер коллекции сходит с ума. Пользователи не могут подключится к своему сеансу. Прибегали к тому что иногда требовалась влезть в базу sql и командами вычищали подключение, бывало что приходилось всю коллекцию посылать в ребут для очистки следов подключения. Иван у меня к вам такой вопрос: Сталкивались вы с доп ПО (Клиент) сторонней программой по обслуживание Коллекции подключений? Требуется функционал с ограничениями. Например дать Админу доступ к коллекции, подключаться к пользователю, но ограничить права на редактирования(настройки) самого RDS. Возможно есть путь решения с ограничениями обслуживания с родной оснасткой RDS.
Добрый день! К сожалению с таким не сталкивался.
Добрый день, а как сделать чтобы во всех серверах БД инфо было одинаковым ?
ну пустили скажем всех в доступные серверы, скажем 1С8 поднята у всех серверов, а как сделать чтобы БД у 1С8 который на каждом сервере был идентичным ?
Добрый день! Я правильно понимаю ,чт овы хотите чтобы у всех пользователей список баз был одинаковый при открытии 1С?
При перезагрузке одного из брокеров отваливаются все пользователи на ферме. Как с этим бороться? Какие стандарты по минимальному количеству брокеров, серверов лицензирования и т.д. существуют? Windows 2016 std
А они у вас точно в режиме HA?
здравствуйте Иван,
Могу ли я у Вас спросить, мы тестируем POC для одного клинета, и пока не знаем нормально ли то, что при падении одного из RDS в ферме, пользователи которые были на этом сервере в течении 2-3 минут не могут открыть новую сессию или открываеться временный профиль. Такое ощщущение что брокер пытаеться их определить на тот же сервер.
RDS 2019, Broker HA + SQL Express + сервер с VHDX дисками для профилей
Может есть какой параметр для оптимизации обработки таких случаев.
спасибо.
У брокера есть некий кэш, в базе данных в виде активных сессий и он какое-то время пытается людей кидать на предыдущую ноду, их можно отключить вручную и подтюнить значение данного кэша
Иван Семи. Вопрос по поводу падения хоста остался подвешенным в воздухе. Подскажите пожалуйста, что конкретно надо сделать с кэшем ибо проблема насущная.
Вам нужно сбросить активные подключения к данной базе
Получается в самой базе делать ничего не надо? Просто оборвать сессию между MSSQL и RDS ConnectionBroker? Простите за назойливость, хочется подробно в процессе разобраться.
Да все верно, саму БД не нужно трогать
А вот добавить новый сервер в уже существующую коллекцию — вот тут и начинаются танцы с бубном. Надо отключать все действующие политики и настройки, включая лицензирование.
Ни каких танцев не должно быть, я много раз добавлял, все работает как часы
Иван, научите как добавить сервер в существующую коллекцию? С новой коллекцией все понятно. А вот когда имеющихся серверов начинает не хватать — чего делать? Необходимые службы ставятся, роли распределяются, а коллекция не разливается автоматически….
Все просто вы открываете свою коллекцию и где у вас идет список серверов, просто нажимаете добавить, переносите его в область действий и нажимаете установить, все роли сами будут установлены и сервер будет перезагружен
Иван, спасибо за статью, подскажите, есть терминальная ферма, 3 брокера, 4 Session Hosts, как сделать, например, чтобы определенная группа пользователей в домене, например — Руководство, попадали на определенный Session Host, выделенный в отдельную коллекцию. Спасибо.
«Предположим у вас виртуальное имя для подключения к удаленному рабочему столу TERM»
А что значит «виртуальное имя»?
Это имя, которое не привязано к какому-то конкретному компьютеру, считайте это алиасом или точкой входа
Иван, спасибо, что ответили и спасибо за ваши статьи.
Только я все равно не понял, что я должен пинговать через nslookup, чтобы найти и собрать свою RDS ферму?
В большинстве случаев пингуется DNS имя, которое ссылается на брокеров, простой пример у вас есть RDS ферма rds.pyatilistnik.org это имя в ссылается на два брокера broker1 и broker2. Почитайте статью у меня Remote Desktop Services High Availability
То есть если у меня имеется RDP сервер 2012. И я засетаплю на другом хосте «чистый» сервак, и добавлю его в ферму, оно доконфигурирует ему настройки?
Хм.. А получится ли вся эта история если склонировать текущий RDP, с заменой WIN имени, активации лицензии и так далее…
Подскажите, как удалить профиль пользователя коллекции сеансов?
У нас файлы с профилями живут на сетевой папке, в свойствах сервера эти профили не отображаются, в реестре HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList тоже не отображаются.
Можно конечно удалить файл, потом при входе пользователя появиться ошибка, и уже думать что с ней делать, но это не то.
Уже 2ой час шерстю интернет, никто не опубликовал простого ответа на этот вопрос.