Remote Desktop Connection Broker (RD Connection Broker), ранее известный под именем Terminal Services Session Broker (TS Session Broker), — это роль сервера Windows 2008 R2, предоставляющая следующий функционал:
- Позволяет пользователям переподключаться к своим текущим сессиям в ферме серверов RD Session Host (терминальные сервера Windows). Тем самым предотвращается создание новых пользовательских подключений на других серверах фермы при наличии подключения в состоянии «disconnected».
- Позволяет равномерно распределить нагрузку между серверами терминальной фермы RD.
RD Connection Broker отслеживает все сессии пользователей в ферме терминальных серверов Windows Server 2008 R2. База данных RD Connection Broker хранит сессионную информацию, включая имена серверов RD Session Host, на которых находятся сессии пользователя, идентификатор сессии (session ID) и имя пользователя, ассоциированное с сессией. Служба RD Connection Broker использует эту информацию для перенаправления пользователя, уже имеющего активную терминальную сессию на тот сервер, на котором она запущена.
В том случае, если пользователь отключился (disconnect) от своей сессии (из-за сетевого сбоя или осознанно), все приложения, которые он запустил на сервере продолжают работать. И когда пользователь пытается вновь подключиться к ферме терминалов, Connection Broker определяет сервер, на котором уже имеется сессия пользователя и перенаправляет подключение пользователя именно туда.
Балансировка нагрузки RD Connection Broker Load Balancing, позволяет при подключении пользователя (предполагается, что у него не осталось подключений в состоянии disconnect) к ферме, перенаправить его на наименее загруженный сервер фермы (с наименьшим количеством пользовательских сессий). Чтобы более гибко управлять балансировкой нагрузки в ферме терминальных серверов, администратор может в зависимости от вычислительных мощностей серверов фермы назначить каждому из них относительный вес.
Компоненты RD Connection Broker
Для построения фермы терминальных серверов с балансировкой нагрузки нужны два компонента:
Сервер RD Connection Broker. Это сервер с запущенной службой Remote Desktop Connection Broker, который отслеживает сессии пользователей и осуществляет балансировку нагрузки между членами фермы RD. Существует имя сервера RD Connection Broker, с помощью которого можно отнести конкретный терминальный сервер к той или иной ферме.
Сервера RD Session Host, настроенные на использование Connection Broker. Это рядовые члены терминальной фермы. Для того, чтобы являться членом фермы под управление RD Connection Broker, терминальный сервер должен соответствовать следующим критериям:
- На сервере должна быть установлена роль RD Session Host.
- Сервер должен быть членом домена Active Directory.
- Сервер должен входить в локальную группу «Session Broker Computers» на сервере с ролью RD Connection Broker.
Последовательность настройки терминальной фермы RD Connection Broker с балансировкой нагрузки:
- Установите роль RD Connection Broker на сервере (это может быть выделенный сервер, или один из членов будущей фермы).
- Добавьте все терминальные сервера в локальную группу безопасности «Session Broker Computers» на сервере с ролью RD Connection Broker.
- Настройте всех членов фермы на использование сервера RD Connection Broker
- Настройте записи DNS для реализация механизма «DNS round robin»
Шаг 1 : Установка роли Connection Broker
Если роль Remote Desktop Services уже установлена:
- Разверните роль Remote Desktop Services.
- Нажмите кнопку Add Role Services.
- На странице служб роли выберите Remote Desktop Connection Broker и нажмите Next
В моем стенде 2 сервера, настроенных следующим образом:
RDS02
Шаг 2 : Добавляем сервера RD Session Host в локальную группу Session Broker Computers.
Для этого на сервер с установленной ролью RD Connection Broker:
- Нажмите Start -> Administrative Tools -> Computer Management.
- В левой панели разверните узел Local Users and Groups, и выберите Groups.
- Найдите локальную группу Session Broker Computers , и выберите пункт Properties.
- На вкладке General, нажмите Add.
- В окне выбора нажмите кнопку Object Types.
- Отметьте пункт Computers, и нажмите OK.
- Последовательно укажите и добавьте имена всех серверов, которые будут участвовать в терминальной ферме
- Нажмите OK.
На RDS01
Шаг 3 : Включаем сервера RD Session Host в ферму RD Connection Broker, настраиваем балансировку нагрузки
На каждом из терминальных серверов RD Session Host выполните следующее:
- На сервер RD Session Host откройте консоль Remote Desktop Session Host Configuration (Start ->Administrative Tools->Remote Desktop Services -> Remote Desktop Session Host Configuration).
- В разделе Edit settings, щелкните по полю Member of farm in RD Connection Broker.
- На вкладке RD Connection Broker нажмите кнопку Change Settings.
- В окне RD Connection Broker Settings выберите Farm member.
- Введите имя сервера с ролью RD Connection Broker.
- В окне Farm name, укажите имя создаваемой фермы.
- Чтобы активировать балансировку нагрузки в ферме RD Connection Broker отметьте опцию Participate in Connection Broker Load-Balancing.
- В случае необходимости можно настроить относительный вес каждого из серверов в ферме (Server weight). Значение по умолчанию — 100. В том случае, если вы зададите вес одного сервера 100, а другого 50, это будет означать, что сервер с меньшим весом будет получать в 2 раза меньше подключений.
- По умолчанию используется перенаправление по IP адресу (IP address redirection), также можно использовать перенаправление по токену (Use token redirection).
Я выполнил соответствующую настройку на обоих серверах RDS01 и RDS02
Task 4 : Настройка DNS round robin
Для балансировки нагрузки в терминальных фермах RD Session Host, можно использовать балансировку нагрузки RD Connection Broker Load Balancing совместно с функцией DNS round robin. Во втором случае, вы должны для каждого из серверов членов фермы создать DNS запись (тип A), создающую соответствие между IP адресом каждого сервера RD Session Host и DNS именем фермы.
Я опишу процедуру настройки DNS записей на контроллере домена Windows Server 2008 R2. Сразу стоит отметить, что для выполнения данной процедуры у вас должны быть права Domain Admins/ Enterprise Admins / DNS Admins.
- Откройте оснастку DNS (Start->Administrative Tools-> DNS).
- Разверните сервер, и в зонах прямого просмотра (Forward Lookup Zones), разверните ветку с именем вашего домена.
- Щелкните по зоне и выберите New Host (A or AAAA).
- В поле Name укажите имя фермы (именно фермы, а не конкретного сервера в ней), а в поле IP address укажите ip адрес первого сервера в ферме.
Эти действия необходимо повторить для каждого из серверов-членов фермы RDS (в каждом случае меняться будет только ip адрес)
Проверим, что наша ферма создалась, для чего откройте Remote Desktop Services Manager. Щелкните правой кнопкой по Remote Desktop Services Manager и выберите Import from RD Connection Broker и укажите FQDN имя сервера с ролью Connection broker(в моем случае RDS01.winitpro.ru)
Теперь в дереве RD Connection Broker появится новая терминальная ферма!
Если я не ошибаюсь, то для сервера находящегося в AD шаг 2 невозможен из-за отсутствия ветки Local Users and Groups? А практически в начале статьи сказано: «Сервер должен быть членом домена Active Directory.»
Дмитрий Вы ошибаетесь. Вероятно вы перепутали с тем, что на контроллере домена Active Directory отсутствует оснастка «локальные пользователи и группы».
В данном случае терминальный сервер не является контроллером домена, он обычный рядовой сервер домена.
Если б обзор был Windiws server 2008 С русским интерфейсом было б намного лучше…
но итак хорош, спс)
Да Windiws был бы намного лучше…
Спасибо за статью!
А как сделать то же самое, но только с Server 2012?
И возможно ли такое построение без AD, доменов и прочего? Только для локальной сети.
Домен Active Directory нужен обязательно
Подскажите пожалуйста, в статье http://social.technet.microsoft.com/Forums/en-US/ws2008r2ru/thread/dd7b81a5-7d00-4eb3-b20d-178407b005bc указывается что для востановления сеанса в случае обрыва связи, необходимо строить NLB cluster, это так? в случае round robin dns мы с вероятностью 50% попадем не на тот сервер с которого «сорвались», верно?
Если сессия пользователя на терминале жива (статус idle или disconnected), то после обрыва связи и повторного подключения Connection Broker должен автоматически перенаправить сессию на терминальный сервер со старой сессией.
Так что NLB в этом случае не нужен…
Вопрос такой: если используется виртуальное имя доступа к ферме, Connection Broker определяет, куда направить запрос пользователя. А если сервер, несущий на себе роль ConnectionBroker’а выходит из строя… вся ферма оказывается недоступна?
Если недоступен Connection Broker — перестанет работать именно балансировка нагрузки — т.е. пользователя при первом подключении будет перенаправлять каждый раз на новый сервер. Ферма будет доступна, т.к. подключение идет не к серверу с ролью Connection Broker, а к имени фермы (round robin в DNS)
Connection Broker стоит на 1-ом сервере фермы, допустим он упал. по DNS попали на 2-ой сервер фермы, поработали, создали кучу новых документов и прочее. тут поднялся 1-й сервер, что с файлами? объясните, пожалуйста, как происходит репликация, синхронизация или что вообще?)
Топик ещё жив? Такая вот непонятная ситуация возникла — ферма поднята из 5-ти серверов, всё работало нормально на протяжении пары месяцев, служба RDSCB установлена на всех серверах, т.е. переезжала по серверам. И вот не так давно перестало работать распредение нагрузки — все пользователи заходят только на один из серверов. При принудительной передаче роли RDSCB на другой сервер часть клиентов отвалилась и они зашли уже на другой сервер, остальные так и продолжают нормально работать на предыдущем сервере. Мастер проверки кластера проводит все проверки с положительным результатом, сети настроены нормально. Может быть кто0либо уже сталкивался? Заранее благодарен за любую оказанную помощь и участие!
Стоп! А разве может быть несколько серверов в одной ферме с активной ролью Connection Broker? Или используется кластеризация? По идее должна работать балансировка на уровне DNS Round Robin… Пользователи подключаются к ферме по имени? В DNS A записи по данной статье создавали?
при выполнении Task4, на 6-ой картинке не могу у себя найти Import from RD Connection Broker
Какая версия Windows 2008 R2 (Энтерпрайз или Стандарт) должна быть установлена на терминалах?
Это опциональный таск для проверки работы фермы. Она и без него будет работать.
А по вопросы согласно документации RD Connection Broker is available in the following editions of Windows Server 2008 R2:
Windows Server 2008 R2 Standard
Windows Server 2008 R2 Enterprise
Windows Server 2008 R2 Datacenter
Ещё вопрос. Почему у меня логин/пароль спрашивает дважды.
Подключаюсь к ферме, спрашивает логин и пароль. Ввожу. Далее видимо перекидывает на терминальный сервер и опять спрашивает пароль. Как это исправить?
На клиентских машинах используется последняя версия RDP клиента?
Извините что не уточнил. Подключаюсь с линуксового тонкого клиента и приходится 2 раза вводить пароль.
На виндовых станциях дважды выходит сообщение о сертификате. Первый раз на тот сервер который ДНС выдал по имени фермы, второй раз когда подключаюсь к тому серверу куда меня направили.
сертификат на всех серверах для RDP коннектора должен быть выдан на имя фермы
1. Вы не указали версию rdp клиента. Она должна быть не менее rdp 7.0 ? Если нет — поставьте свежую версию
2. Попробуйте в настройках rdp клиента отключить проверку и предупреждение о сертификатах (Connect and don’t worm me).
3. Попробуйте уменьшить уровень секьюрности в настройках самого сервера RD
ув. Автор. подскажите. поставил все по мануалу. на первых парах все нормально, конектился по ДНС имени фермы. а вот теперь столкнулся с проблемой. сейчас не хочет пускать по днс имен фермы. дает ошибку «Удаленному рабочему столу не удалось найти компьютер «ХХХХХ». Это может означать что «ХХХХХ» не принадлежит к указанной сети.
Подскажите куда капать дальше?)
Проверяйте настройки DNS: резолвится ли имя фермы? Есть ли соотвествующая A запись в зоне, указан ли правильный сервер DNS и т.п.
а как настроить чтобы и профеля переезжали вместе с пользователями? и как настроить REMApp чтобы также балансировали?
решил совместить сервер терминалов и сервер удаленных приложений в одной ферме. не всем пользователям нужен рабочий стол многим нужен просто доступ к паре приложений.
1. как настроить чтобы и профиля переезжали вместе с пользователями — используйте перемещаемый профили, информации на сайте достаточно
2. Что вы имеет в виду под балансировкой REMApp? Remapps по сути усеченный вариант терминальной сессии, настроив балансировку нагрузки подобным способом, она будет работать и для удаленных приложений
Доброго времени. Вопрос может и не в эту тему, но все же как раз про ферму. Есть ферма с 5 серверами на 2012 все замечательно, но часто возникает ситуация, что при логоне юзера у него выскакивает ошибка «отказано в доступе». она выскакивает порядка 5 раз, затем затем юзер подключается к серверу. в логах чисто , ничего нету. как у брокера так и на серверах.
Подскажите в какую сторону копать.
Плавающий глюк как всегда сложее всего отловить… Почему-то мне кажется проблема только с одним из серверов, либо есть баги в настройках алиасов в DNS.
Проверяйте настройки службы RDS на всех серверах фермы, чтобы гарантировать что все они настроены одинаково лучше навесить на них отдельность политику, задающую параметры RDS.
Ну и копайте журнал security на серверах / клиентах — возможно получится понять какой сервер выдает ошибку
Как перенаправить на сервер 2012 USB WEB-камеру ?
Если имеется в виду проброс USB устройства внутри RDP сессии — запустите клиент mstsc.exe, укажите имя сервера, потом на вкладке Local Resources в разделе Local devices and resources нажмите кнопку More и в появившемся списке отметьте свою USB камеру. Затем Connect…
А как быть, если ферма строится в удаленном ДЦ? Там есть локальная сеть, но тамошний ДНС вряд ли сможет резолвить имена за пределами ДЦ.
А еще непонятно с точной вхождения пользователей. Подключения принимаются всеми серверами? Балансировка только ДНС-ом? Тогда, я так думаю, брокер должен стоять на каждой ноде, чтобы быть в курсе, кто где авторизован.
А как вы обращаетесь к серверам в УДЦ, по ip адресу?
Для работы ConnectionBroker все севера должны быть в одном домене…, а это означает наличие общего пространства имен DNS. Брокер нужен только на одном сервере, причем не обязательно на терминальном.
Здравствуйте.
Настроил 3 сервер терминалов. Брокер — 4й сервер он же контроллер домена
В GPO в политике, которая распространяется только на терминальные сервера стоит Ограничить пользователей службы удаленных рабочих столов одним сеансом служб удаленных рабочих столов — включено. Но некоторым пользователям всё равно удаётся работать одновременно с нескольких удалённых клиентов!
Не подскажите в какую сторону нужно копать? )))
Проблема воспроизводится на всех терминалах? Одновременные подключения осуществляются к разным серверам терминальной фермы или даже в рамках одного сервера?
Прочекайте применяемые настройки политик через rsop.msc.
Здравствуйте, уточните пожалуйста, для чего включать кроме брокера ещё DNS Round Robin? Ведь они выполняют по сути одну и ту же функцию, т.е. дают общее имя для подключения пользователей к одному из серверов. Если для отказоустойчивости брокера, то по DNS Round Robin пользователи будут подключаться либо брокеру, либо к одному из серверов напрямую.
В итоге пользователи же подключаются к RDS01.winitpro.ru, а в DNS имя фермы тоже RDS01.winitpro.ru (DNS Round Robin)?
Отчасти да, DNS Round Robin позволяет простейший механизм распределения нагрузки между серверами. Т.е. пользователь всегда использует для подключения имя фермы RDS, например RDS.winitpro.ru (а не конкретного сервера), но при первом подключении он попадает на случайный сервер фермы (на RDS01.winitpro.ru или на RDS02.winitpro.ru). Затем начинает работать брокер
Если я подключаюсь по DNS Round Robin и попадаю например на RDS02.winitpro.ru, то этот сервер перекидывает меня на брокер RDS01.winitpro.ru, а брокер перекидывает меня уже на менее загруженный сервер?
В общем правильно, но на брокер никто не перекидывает, он анализирует загрузку серверов и запоминает, где осталась сессия подключающегося пользователя и перенаправляет подключение именно на этот сервер.
что происходит с файлами пользователей? при перебросах содержание файлов на серверах не разнится?
Вам нужно использовать перемещаемые профили на общем сетевом ресурсе (желательно кластере). В этом случае профиль пользователя будет хранится в сетевой папке и загружаться на нужном сервере RDS
Доброго времени суток!
Подскажите пожалуйста, возможно ли ситуация, где
Пользователь завершает сессию на сервере, осуществляет повторных вход и его распределяет на другой сервер?
Если я правильно понимаю, изменения сделанные пользователем не должны отображаться на новом сервере?
З.Ы. Я начинающий еще не во всем разобрался, а задача стоит )))
>>Пользователь завершает сессию на сервере, осуществляет повторных вход и его распределяет на другой сервер?
Если речь идет о завершении сеанса, а не об отключении, то его (пользователя) при повторном подключении вполне может определить на другой сервер фермы. Брокер выбирает наименее загруженный сервер в ферме. Если пользователь отключился, а не завершил сеанс, то правильно настроенный брокер вернет пользователя в его старую незавершенную сессию, где будут открыты все программы, как на момент отключения.
>>Если я правильно понимаю, изменения сделанные пользователем не должны отображаться на новом сервере? О каких изменениях идет речь? Если об изменениях в файлах пользователя, то они выгружаются на сервер хранения профилей при завершении сеанса. Если об изменениях в конфигурации сервера фермы, то.. Зачем пользователю делать такие изменения? Серверы в ферме и ПО на них лучше конфигурировать средствами GPO
Благодарю.
Есть ферма серверов, отдельный брокер, на брокере шлюз и вебморда. Все на 2012r2. Клиенты подключаются извне, используя шлюз. Ферма серверов работает если в rdp файле указано loadbalanceinfo:s:tsv://MS Terminal Services Plugin.1.ИМЯ_КОЛЕЕКЦИИ. А если подключаться вручную настроив rdp подключение (например с линукс клиента или мобильного клиента от майкрософт), то в итоге просто подключаюсь на брокера, на котором по сути нет даже роли терминальных серверов.
Как сделать, чтобы подключение работало на любых клиентах?
Сам себе отвечаю )). Этот параметр считывается многими RDP клиентами. В том числе и майкрософт клиентом Андроида. Просто нельзя указать явно в приложении, но если в телефон закачать rdp файл, то можно открыть этим клиентом и вуаля — все работает )
Если я хочу настроить посредника на КД каким образом добавлять терминальные сервера в группу посредника?
Сколько шишек набито ролями, совмещенными с КД. Настоятельно не рекомендую ставить что-либо из ролей на сервер с ролями ADDS. Разверните брокер на виртуалке, не скупитесь.
Уже понял, просто хотел что бы он был брокером и не принимая rdp соединений распределял, сейчас настроил на одном из терминальных все работает.
P.S. Виртуалок нет, все сервера у меня физические
Доброго времени суток, коллеги!
Ситуация следующая. Была поднята терминальная ферма из трёх виртуальных (на VSphere) серверов 2008r2. Всё работало себе нормально, всё было хорошо. Но тут потребовалось поставить заплатки windows от wannacry и т.п., что требовало перезагрузку. Перезагрузили их по очереди, больше ничего не меняли, никаких настроек. И тут возникла проблема. Клиенты подключаются только к тому серверу, на котором работает служба посредника подключений, все сессии только на одном сервере. Если перенести службу на другой, то та же история, подключения только к нему. Выполнял проверку конфигурации средствами самого компонента, всё в норме, пересматривал все настройки, выполнял последующие перезагрузки (по очереди и одновременно), ничего не меняется. Понятия не имею, куда здесь ещё копать. Помогите советом, пожалуйста!!!
1. На какой адрес подключаются клиенты ?
2. В DNS заведены общие записи для RoundRobin?
3. Что указано в настройках RDCB
На адрес, где посредник. В днс все записи кластера, т.е. сам кластер, посредник, у каждого узла прописаны адреса как кластерной сети, так и нашей локальной сети.
Все узлы и сети указаны в настройках диспетчера отказоустойчивости кластера. Узлы входят в группу компьютеры посредника сеансов, узлы являются членом фермы
Видимо остается времменно оставить пока для пользователей только один сервер (без брокера), и пересобрать полность ферму на двух ВМ с полным удалем всех ролей RDS.
Добрый день!
упёрся на третьем шаге в одну странность… ферма из двух терм.серверов (TS-1 и TS-2), оба на виртуалках, но на разных физических хостах. Брокер установлен на TS-1. при попытке добавить TS-2 к ферме в окне IP-адреса (использовать перенаправление IP-адресов) нет ни одного IP-адреса… следовательно сохранить настройку не могу(( при подключении к ферме TS-1 с этим все было хорошо. подсобите, пожалуйста, куда копать?)
В настройках TS2 нужно указывать имя брокера руками. Не понял, при чем тут перенаправление IP-адресов
Если честно, уже забыл как это выглядит в 2008 R2 🙂
В опции «IP Address redirection (recommended)» по идее должен сразу присуствовать ip адрес сетевого интерфейса. То что его нет, довольно странно. Проверьте настройки сетевого интерфейса и включенные протоколы, сравните их на TS-1 и TS-2. если дело не в этом, попробуйте переустановить роль RDSH на втором сервере
Уважаемый автор, подскажите пож-ста, насколько схема описанная в сабже актуальна на середину 2019 года. Есть решения более эффективные или нет. Есть потребность пересобрать терминальные сервера на 2016 лицензии, а новых веяний не нахожу в поисковиках.
win 2012 R2.
Веб доступ к удаленным рабочим столам,
Шлюз удаленных рабочих столов,
Посредник подключений к удаленному рабочему столу,
Коллекция из двух узлов удаленных рабочих столов.
Все работает, пользователи распределяются между двумя узлами равномерно.
Как сделать, чтобы один пользователь, допустим «Vasia» всегда попадал на первый узел, а на второй ни когда. При этом остальные пользователи балансировались как обычно?
Сделать для пользователя отдельную коллекцию, в которо будет только один хост. Дать пользователю доступ на эту коллекцию, из основной удалить
Добрый день уважаемые коллеги! А можно ли каким-то способом изменить имя уже созданной коллекции?
Извиняюсь, поменять не имя коллекции, а fqdn для кластера
Речь про имя фермы RDS, или о sql кластере для RDCB?
Добрый день.
Можно ли именно в такой реализации управлять какой из пользователей к какому терминальному серверу цепляется?
Нужно сделать, что бы один пользователь (или группа) коннектился только к определенному серверу из фермы.
Спасибо.
Нет. К чему эти трудности? Просто создайте еще одну коллекцию на вашей ферме и отправьте на нее эту группу пользователей. Коллекций может быть сколько угодно и количество серверов в них тоже ни как не ограничивается.
Ну то есть….
— Это вы мне ответили? 🙂
— Правильно понял, что создаем коллекцию на ферме, куда добавляем только один терминальный сервер и назначаем ее на группу пользователей? Звучит как вот прям то что нужно….
Да, Вам 🙂
Да, у вас может быть много коллекций, с разными серверами, вы так можете специальный софт, например, вынести в отдельную колекуию и дать доступ к коллекции отдельным группам или даже персонально пользователям.
При чем коллекции могут быть разные по типу. Пару-тройку коллекций с терминальными серверам (Session Collectio), коллекции с опубликованными приложениями (RemoteApp — удаленный доступ только к приложению, вместо полноценного RDP-сеанса), VDI Pool — коллекция виртуальных удаленных рабочих стоов. И все это будет в рамках одной фермы.
Добрый день. Возник вопрос, созданы разные коллекции, группы, с клиента windows все работает через ярлык. Но вот вопрос — как быть с тонкими клиентами raspbery на основе wtware ? В конфиге прописывается адрес сервера подключения и все…и он заходит на брокер…
Скачайте с web-access файл подключения и откройте его блокнотом. Один из параметров там будет отвечать как раз за то, на какую коллекцию перенаправить подключение, когда оно поступит на брокер. Вас будет интересовать параметр loadbalanceinfo, но в целом, стоит почитать документацию по клиенту wtware. Возможно он не поддерживает перенаправление подключений. Возможно.