Настройка терминальной фермы RDS с RD Connection Broker | Windows для системных администраторов

Настройка терминальной фермы RDS с RD Connection Broker

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 с балансировкой нагрузки:


  1. Установите роль RD Connection Broker на сервере (это может быть выделенный сервер, или один из членов будущей фермы).
  2. Добавьте все терминальные сервера в локальную группу безопасности «Session Broker Computers» на сервере с ролью RD Connection Broker.
  3. Настройте всех членов фермы на использование сервера RD Connection Broker
  4. Настройте записи DNS  для реализация механизма «DNS round robin»

Шаг 1 : Установка роли Connection Broker

Если роль Remote Desktop Services уже установлена:

  • Разверните роль Remote Desktop Services.
  • Нажмите кнопку Add Role Services.
  • На странице служб роли выберите Remote Desktop Connection Broker и нажмите Next

В моем стенде 2 сервера, настроенных следующим образом:

RDS01 Настройка сервера терминалов Remote Desktop

RDS02

Настройка сервера терминалов Remote Desktop

Шаг 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

Группа Session Broker Computers

Шаг 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

Настройка терминального сервера RD Session Host Настройка терминального сервера RD Session Host

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)

Консоль Remote Desktop Services Manager

Теперь в дереве RD Connection Broker появится новая терминальная ферма!

Консоль Remote Desktop Services Manager

Еще записи по теме: Windows Server 2008
Понравилась статья? Скажи спасибо и расскажи друзьям!
Назад:
Вперед:

Комментариев: 45

Оставить комментарий
  1. Дмитрий | 23.11.2012

    Если я не ошибаюсь, то для сервера находящегося в AD шаг 2 невозможен из-за отсутствия ветки Local Users and Groups? А практически в начале статьи сказано: «Сервер должен быть членом домена Active Directory.»

    Ответить
  2. itpro | 27.11.2012

    Дмитрий Вы ошибаетесь. Вероятно вы перепутали с тем, что на контроллере домена Active Directory отсутствует оснастка «локальные пользователи и группы».
    В данном случае терминальный сервер не является контроллером домена, он обычный рядовой сервер домена.

    Ответить
  3. burn | 08.12.2012

    Если б обзор был Windiws server 2008 С русским интерфейсом было б намного лучше…

    Ответить
  4. burn | 08.12.2012

    но итак хорош, спс)

    Ответить
  5. Алексей | 20.12.2012

    Да Windiws был бы намного лучше…
    Спасибо за статью!

    Ответить
  6. Vlad | 31.12.2012

    А как сделать то же самое, но только с Server 2012?

    Ответить
  7. Vlad | 31.12.2012

    И возможно ли такое построение без AD, доменов и прочего? Только для локальной сети.

    Ответить
    • itpro | 09.01.2013

      Домен Active Directory нужен обязательно

      Ответить
  8. Serge | 03.04.2013

    Подскажите пожалуйста, в статье http://social.technet.microsoft.com/Forums/en-US/ws2008r2ru/thread/dd7b81a5-7d00-4eb3-b20d-178407b005bc указывается что для востановления сеанса в  случае обрыва связи, необходимо строить NLB cluster, это так? в случае round robin dns мы с вероятностью 50% попадем не на тот сервер с которого «сорвались», верно?

    Ответить
    • itpro | 06.04.2013

      Если сессия пользователя на терминале жива (статус idle или disconnected), то после обрыва связи и повторного подключения Connection Broker должен автоматически перенаправить сессию на терминальный сервер со старой сессией.
      Так что NLB в этом случае не нужен…

      Ответить
  9. Андрей | 05.06.2013

    Вопрос такой: если используется виртуальное имя доступа к ферме, Connection Broker определяет, куда направить запрос пользователя. А если сервер, несущий на себе роль ConnectionBroker’а выходит из строя… вся ферма оказывается недоступна?

    Ответить
    • itpro | 07.06.2013

      Если недоступен Connection Broker — перестанет работать именно балансировка нагрузки — т.е. пользователя при первом подключении будет перенаправлять каждый раз на новый сервер. Ферма будет доступна, т.к. подключение идет не к серверу с ролью Connection Broker, а к имени фермы (round robin в DNS)

      Ответить
  10. Василь | 20.06.2013

    Топик ещё жив? Такая вот непонятная ситуация возникла — ферма поднята из 5-ти серверов, всё работало нормально на протяжении пары месяцев, служба RDSCB установлена на всех серверах, т.е. переезжала по серверам. И вот не так давно перестало работать распредение нагрузки — все пользователи заходят только на один из серверов. При принудительной передаче роли RDSCB на другой сервер часть клиентов отвалилась и они зашли уже на другой сервер, остальные так и продолжают нормально работать на предыдущем сервере. Мастер проверки кластера проводит все проверки с положительным результатом, сети настроены нормально. Может быть кто0либо уже сталкивался? Заранее благодарен за любую оказанную помощь и участие!

    Ответить
    • itpro | 26.06.2013

      Стоп! А разве может быть несколько серверов в одной ферме с активной ролью Connection Broker? Или используется кластеризация? По идее должна работать балансировка на уровне DNS Round Robin… Пользователи подключаются к ферме по имени? В DNS A записи по данной статье создавали?

      Ответить
  11. Alex | 15.08.2013

    при выполнении Task4, на 6-ой картинке не могу у себя найти Import from RD Connection Broker
    Какая версия Windows 2008 R2 (Энтерпрайз или Стандарт) должна быть установлена на терминалах?

    Ответить
    • itpro | 15.08.2013

      Это опциональный таск для проверки работы фермы. Она и без него будет работать.
      А по вопросы согласно документации 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

      Ответить
      • Alex | 19.08.2013

        Ещё вопрос. Почему у меня логин/пароль спрашивает дважды.
        Подключаюсь к ферме, спрашивает логин и пароль. Ввожу. Далее видимо перекидывает на терминальный сервер и опять спрашивает пароль. Как это исправить?

        Ответить
        • Олег | 20.08.2013

          На клиентских машинах используется последняя версия RDP клиента?

          Ответить
          • Alex | 20.08.2013

            Извините что не уточнил. Подключаюсь с линуксового тонкого клиента и приходится 2 раза вводить пароль.
            На виндовых станциях дважды выходит сообщение о сертификате. Первый раз на тот сервер который ДНС выдал по имени фермы, второй раз когда подключаюсь к тому серверу куда меня направили.

            Ответить
        • Sergey | 23.02.2014

          сертификат на всех серверах для RDP коннектора должен быть выдан на имя фермы

          Ответить
  12. itpro | 21.08.2013

    1. Вы не указали версию rdp клиента. Она должна быть не менее rdp 7.0 ? Если нет — поставьте свежую версию
    2. Попробуйте в настройках rdp клиента отключить проверку и предупреждение о сертификатах (Connect and don’t worm me).
    3. Попробуйте уменьшить уровень секьюрности в настройках самого сервера RD

    Ответить
  13. Peps | 12.10.2013

    ув. Автор. подскажите. поставил все по мануалу. на первых парах все нормально, конектился по ДНС имени фермы. а вот теперь столкнулся с проблемой. сейчас не хочет пускать по днс имен фермы. дает ошибку «Удаленному рабочему столу не удалось найти компьютер «ХХХХХ». Это может означать что «ХХХХХ» не принадлежит к указанной сети.
    Подскажите куда капать дальше?)

    Ответить
    • itpro | 14.10.2013

      Проверяйте настройки DNS: резолвится ли имя фермы? Есть ли соотвествующая A запись в зоне, указан ли правильный сервер DNS и т.п.

      Ответить
  14. Данил | 12.11.2013

    а как настроить чтобы и профеля переезжали вместе с пользователями? и как настроить REMApp чтобы также балансировали?
    решил совместить сервер терминалов и сервер удаленных приложений в одной ферме. не всем пользователям нужен рабочий стол многим нужен просто доступ к паре приложений.

    Ответить
    • itpro | 15.11.2013

      1. как настроить чтобы и профиля переезжали вместе с пользователями - используйте перемещаемый профили, информации на сайте достаточно
      2. Что вы имеет в виду под балансировкой REMApp? Remapps по сути усеченный вариант терминальной сессии, настроив балансировку нагрузки  подобным способом, она будет работать и для удаленных приложений
       

      Ответить
  15. Алексей | 01.07.2014

    Доброго времени. Вопрос может и не в эту тему, но все же как раз про ферму. Есть ферма с 5 серверами на 2012 все замечательно, но часто возникает ситуация, что при логоне юзера у него выскакивает ошибка «отказано в доступе». она выскакивает порядка 5 раз, затем затем юзер подключается к серверу.  в логах чисто , ничего нету. как у брокера так и на серверах.
    Подскажите в какую сторону копать.

    Ответить
    • itpro | 07.07.2014

      Плавающий глюк как всегда сложее всего отловить… Почему-то мне кажется проблема только с одним из серверов, либо есть баги в настройках алиасов в DNS.
      Проверяйте настройки службы RDS на всех серверах фермы, чтобы гарантировать что все они настроены одинаково лучше навесить на них отдельность политику, задающую параметры RDS.
      Ну и копайте журнал security на серверах / клиентах  — возможно получится понять какой сервер выдает ошибку

      Ответить
  16. Alexander | 31.07.2014

    Как перенаправить на сервер 2012 USB WEB-камеру ?

    Ответить
    • itpro | 04.08.2014

      Если имеется в виду проброс USB устройства внутри RDP сессии — запустите клиент mstsc.exe, укажите имя сервера, потом на вкладке Local Resources в разделе Local devices and resources нажмите кнопку More и  в появившемся списке отметьте свою USB камеру. Затем Connect…

      Ответить
  17. Сергей | 05.11.2014

    А как быть, если ферма строится в удаленном ДЦ? Там есть локальная сеть, но тамошний ДНС вряд ли сможет резолвить имена за пределами ДЦ.
     
    А еще непонятно с точной вхождения пользователей. Подключения принимаются всеми серверами? Балансировка только ДНС-ом? Тогда, я так думаю, брокер должен стоять на каждой ноде, чтобы быть в курсе, кто где авторизован.

    Ответить
    • itpro | 07.11.2014

      А как вы обращаетесь к серверам в УДЦ, по ip адресу?
      Для работы ConnectionBroker все севера должны быть в одном домене…, а это означает наличие общего пространства имен DNS. Брокер нужен только на одном сервере, причем не обязательно на терминальном.

      Ответить
  18. Артём | 16.10.2015

    Здравствуйте.
    Настроил 3 сервер терминалов. Брокер — 4й сервер он же контроллер домена
    В GPO в политике, которая распространяется только на терминальные сервера стоит Ограничить пользователей службы удаленных рабочих столов одним сеансом служб удаленных рабочих столов — включено. Но некоторым пользователям всё равно удаётся работать одновременно с нескольких удалённых клиентов!
    Не подскажите в какую сторону нужно копать? )))

    Ответить
    • itpro | 26.10.2015

      Проблема воспроизводится на всех терминалах? Одновременные подключения осуществляются к разным серверам терминальной фермы или даже в рамках одного сервера?
      Прочекайте применяемые настройки политик через rsop.msc.

      Ответить
  19. Валерий | 02.04.2016

    Здравствуйте, уточните пожалуйста, для чего включать кроме брокера ещё DNS Round Robin? Ведь они выполняют по сути одну и ту же функцию, т.е. дают общее имя для подключения пользователей к одному из серверов. Если для отказоустойчивости брокера, то по DNS Round Robin пользователи будут подключаться либо брокеру, либо к одному из серверов напрямую.
    В итоге пользователи же подключаются к RDS01.winitpro.ru, а в DNS имя фермы тоже RDS01.winitpro.ru (DNS Round Robin)?

    Ответить
    • itpro | 04.04.2016

      Отчасти да, DNS Round Robin позволяет простейший механизм распределения нагрузки между серверами. Т.е. пользователь всегда использует для подключения имя фермы RDS, например RDS.winitpro.ru (а не конкретного сервера), но при первом подключении он попадает на случайный сервер фермы (на RDS01.winitpro.ru или на RDS02.winitpro.ru). Затем начинает работать брокер

      Ответить
      • Валерий | 04.04.2016

        Если я подключаюсь по DNS Round Robin и попадаю например на RDS02.winitpro.ru, то этот сервер перекидывает меня на брокер RDS01.winitpro.ru, а брокер перекидывает меня уже на менее загруженный сервер?

        Ответить
        • itpro | 06.04.2016

          В общем правильно, но на брокер никто не перекидывает, он анализирует загрузку серверов и запоминает, где осталась сессия подключающегося пользователя и перенаправляет подключение именно на этот сервер.

          Ответить
  20. Игорь | 29.07.2016

    Доброго времени суток!
    Подскажите пожалуйста, возможно ли ситуация, где
    Пользователь завершает сессию на сервере, осуществляет повторных вход и его распределяет на другой сервер?
    Если я правильно понимаю, изменения сделанные пользователем не должны отображаться на новом сервере?

    З.Ы. Я начинающий еще не во всем разобрался, а задача стоит )))

    Ответить
    • Сергей | 29.07.2016

      >>Пользователь завершает сессию на сервере, осуществляет повторных вход и его распределяет на другой сервер?
      Если речь идет о завершении сеанса, а не об отключении, то его (пользователя) при повторном подключении вполне может определить на другой сервер фермы. Брокер выбирает наименее загруженный сервер в ферме. Если пользователь отключился, а не завершил сеанс, то правильно настроенный брокер вернет пользователя в его старую незавершенную сессию, где будут открыты все программы, как на момент отключения.

      >>Если я правильно понимаю, изменения сделанные пользователем не должны отображаться на новом сервере? О каких изменениях идет речь? Если об изменениях в файлах пользователя, то они выгружаются на сервер хранения профилей при завершении сеанса. Если об изменениях в конфигурации сервера фермы, то.. Зачем пользователю делать такие изменения? Серверы в ферме и ПО на них лучше конфигурировать средствами GPO

      Ответить
      • Игорь | 01.08.2016

        Благодарю.

        Ответить
  21. Ramis | 07.11.2016

    Есть ферма серверов, отдельный брокер, на брокере шлюз и вебморда. Все на 2012r2. Клиенты подключаются извне, используя шлюз. Ферма серверов работает если в rdp файле указано loadbalanceinfo:s:tsv://MS Terminal Services Plugin.1.ИМЯ_КОЛЕЕКЦИИ. А если подключаться вручную настроив rdp подключение (например с линукс клиента или мобильного клиента от майкрософт), то в итоге просто подключаюсь на брокера, на котором по сути нет даже роли терминальных серверов.
    Как сделать, чтобы подключение работало на любых клиентах?

    Ответить
    • Ramis | 07.11.2016

      Сам себе отвечаю )). Этот параметр считывается многими RDP клиентами. В том числе и майкрософт клиентом Андроида. Просто нельзя указать явно в приложении, но если в телефон закачать rdp файл, то можно открыть этим клиентом и вуаля — все работает )

      Ответить
  22. Владислав | 11.05.2017

    Если я хочу настроить посредника на КД каким образом добавлять терминальные сервера в группу посредника?

    Ответить
    • Сергей | 12.05.2017

      Сколько шишек набито ролями, совмещенными с КД. Настоятельно не рекомендую ставить что-либо из ролей на сервер с ролями ADDS. Разверните брокер на виртуалке, не скупитесь.

      Ответить
      • Владислав | 12.05.2017

        Уже понял, просто хотел что бы он был брокером и не принимая rdp соединений распределял, сейчас настроил на одном из терминальных все работает.
        P.S. Виртуалок нет, все сервера у меня физические

        Ответить
Полные правила комментирования на сайте winitpro.ru. Вопросы, не связанные с содержимым статьи или ее обсуждением удаляются.

Сказать Спасибо! можно на этой странице или (еще лучше) поделиться с друзями ссылкой на понравившуюся статью в любимой социальной сети(специально для этого на сайте присуствуют кнопки популярных соц. сетей).

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

Я не робот( Обязательно отметьте)



MAXCACHE: 0.32MB/0.00134 sec