Remote Desktop Services 2012 Connection Broker с высокой доступностью | Windows для системных администраторов

Remote Desktop Services 2012 Connection Broker с высокой доступностью

Remote Desktop Connection Broker (RD Connection Broker) – это функционал роли терминального сервера Windows Server. RD Connection Broker позволяет равномерно распределить нагрузку между серверам в ферме Remote Desktop (при подключении к RDS пользователя перенаправляет на наименее загруженный сервер), обеспечить доступ пользователей к VDI и RemoteApp, а также реализует возможность переподключения пользователей к своим сессиям (при подключении к новому серверу RDS, RDCB проверяет наличие незавершенной сессии на других серверах фермы, и в случае ее обнаружения новая сессия не создается, а пользователь перенаправляется в старую сессию).

В этой статье мы рассмотрим процесс настройки отказоустойчивого высоко-доступного экземпляра RD Connection Broker, обеспечивающего свой функционал при выходе из строя одного из серверов с ролью RDCB.

Схема Remote Desktop Connection Broker на Windows 2012В отличии от реализации RDCB в предыдущих версиях Windows Server, Connection Broker в Windows Server 2012 обеспечивает высокую доступность в режиме Active/Active, когда каждый из серверов RDCB является активным и обрабатывает входящие запросы. Это позволяет обеспечить высокую доступность и масштабируемость RDCB в больших фермах Remote Desktop. Для хранения данных RDCB используется БД на MS SQL Server.

Примечание. В Windows Server 2008 R2 поддерживалась кластеризация службы RDCB только в режиме Active/Passive. Т.е. для фермы RD серверов поддерживался только один активный сервер Connection Broker.

Требования для внедрения отказоустойчивого RDCB

  • Как минимум 2 сервера с ролью RDCB (под ОС Windows Server 2012 / 2012 R2)
  • SQL Server ( редакция SQL server 2008 R2 Standard или выше) c минимум 4 Гб RAM
  • Наличие установленного SQL Server Native Client
  • Полные права серверов RD Connection Broker на БД SQL и каталог установки SQL
  • Минимум один сервер с ролью Remote Desktop Session Host в ферме
  • Разрешенные исключения для портов SQL server в фаерволе Windows
Важно. Перед началом создания отказоустойчивой конфигурации RDCB, убедитесь, что эта роль установлена только на одном из серверов.

Всем серверам, на которых будут установлены роли RD Connection Broker необходимо назначить статические ip-адреса и включить в домен Active Drectory.

  • RDCB1.domain.ru — 172.25.104.71
  • RDCB2.domain.ru — 172.25.104.171

В Active Directory создадим отдельную группу безопасности RDS Connection Brokers, в которую нужно включить все сервера RDCB.

группа Active Directory: RDS Connection BrokersДалее на отдельном сервере (или SQL-кластере) устанавливается SQL Server версии 2008 R2 или 2012 Standard.

На SQL сервере с помощью SQL Server Management Studio в разделе Security нужно создать новый login и предоставить доменной группе RDCB права с возможностью создания и редактирования баз данных. Также этой группе нужно предоставить полные права на каталог установки SQL.

SQL Server разрешения для группы rdcbНа SQL сервере нужно создать каталог, в котором будут храниться файлы БД, например, C:\SQLDB, и предоставить этой же группе полные права на каталог.

На всех серверах с ролью RDCB необходимо установить SQL Server Native Client. Его нужно скачать отдельно с сайта MS, либо запустить прямо с установочного диска (на установочном диске SQL Server 2012 он хранится в каталоге \1033_ENU_LP\x64\Setup\x64\sqlncli.msi).

SQL Server Native ClientДля SQL server 2008 R2 нужен SQL native client 10, для SQL Server 2012 — SQL Native client 11.

В брандмауэра SQL-сервера создадим новое правило, открывающее порт TCP 1433 для доменных машин. Сделать это можно так:

netsh advfirewall firewall add rule name = SQLSRVPort dir = in protocol = tcp action = allow localport = 1433 remoteip = localsubnet profile = DOMAIN

Следующий шаг – создание в DNS зоне A записей для реализации балансировки нагрузки (Round Robin) между серверами RD Connection Broker. Например, DNS имя нашей фермы RDCB будет RDCB_lb. Создадим две следующие A записи вида:

  • A         RDCB_lb.domain.ru             172.25.104.71 (ip адрес RDCB1)
  • A         RDCB_lb.domain.ru             172.25.104.171 (ip адрес RDCB2)

DNS Round RobinС помощью консоли Server Manager на первом из серверов RDCB устанавливаем роль RD Connection Broker (если еще не установлена).

После установки роли RDCB используется маленькая локальная база SQL, хранящаяся на локальном диске сервера RD Connection Broker в каталоге c:\windows\rdcbDb\.

База данных RDCB rdcms.mdfВ этой базе хранится информация о ферме и терминальный сессиях пользователей. Так как она расположена на локальной машине, другие сервера RDCB не смогут ее использовать. Для создания HA для RDCB нужно перенести ее на выделенный SQL сервер, на котором она будет доступна другим серверам.

Для переноса БД на выделенный SQL Server нужно перейти на вкладку управления Remote Desktop Services -> Overview. Для запуска мастера создания отказоустойчивой конфигурации RD Connection Broker, щёлкнем ПКМ по изображению роли RD Connection Broker и выбираем пункт Configure High Availability. Запустившийся мастер должен создать БД на MS SQL Server и перенести в нее локальную конфигурацию.

Connection Broker: Configure High AvailabilityЗаполним три поля:

  • Database Connection String – строка подключения с базе на SQL сервере.Для SQL 2008 R2: DRIVER=SQL Server Native Client 10.0;SERVER=<SQL Server Name>;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=<DB Name>

    Для SQL 2012:DRIVER=SQL Server Native Client 11.0;SERVER=<SQL Server Name>;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=<DB Name>

  • Folder to store database files – каталог, в котором будут храниться файла БД: C:\SQLDB. Папка находится на SQL сервере, мы ранее ее создали и предоставили доступ группе серверов RDCB.
  • DNS Round Robin name: FQDN имя фермы RDCB, для которой мы создавали записи в DNS для Round Robin (в нашем примере это RDCB_lb). Именно по этому адресу будут обращаться RDP клиенты при подключении к серверам RD Connection Broker.

Configure RD Connection Broker for High AvailabilityЗатем откроем SQL Server Manager на сервере СУБД и убедимся, что была создана новая база. Переходим на вкладку Security, выберем ранее добавленную группу — > свойства, и в качестве БД по-умолчанию выбираем базу RDS. Потом отмечаем роли db_owner и public.

БД rdcbdataДля обеспечения высокой доступности на случай выхода из строя первого сервера, необходимо в текущую конфигурацию добавить второй узел Connection Broker.

Для этого щелкаем ПКМ по иконке RD Connection Broker, и выбираем пункт Add RD Connection Broker Server.

Добавить в ферму второй сервер с ролью RD Connection BrokerУказываем имя второго сервера, на котором нужно установить роль Connection Broker и жмем Далее.

rdcb-second-serverНа этом настройка High Availability конфигурации Connection Broker завершена.

Итак, мы создали высоко доступный сервис RD Connection Broker на Windows Server 2012. Вы можете протестируйте доступность RDCB, отключив один из серверов фермы RDCB. В этом сценарии точкой отказа остается SQL server. Отказоустойчивость SQL сервера можно реализовать с помощью HA SQL кластера или зеркалирования базы SQL.

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

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

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

    А никак нельзя использовать SQL Express? Я когда разворачивал WDS столкнулся, что для того, чтобы разворачиваемые машинки смогли брать параметры из этой базы надо было открыть своеобразный доступ к этой базе из сети, а не только с локально машинки. Разве так нельзя сделать? Эти манипуляции описаны в разделе «Настройка сервера SQL Server 2008 Express» статьи «http://www.oszone.net/11530/Windows-7-install-15″.
    Я к тому, что неужели требуется покупаться дорогущий SQL Server для такой малозатратной с точки зрения ресурсов задачи?

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

      Требования в SQL Server Standart есть в спецификации, но думаю для этих целей подойдет и SQL Express.
      Естественно к SQL Express нужно открыть сетевой доступ:
      1) Включить прослушивание TCP/IP порта 1433 и службу SQL Server Browser
      2) Открыть порт 1433 во входящих соединениях Брандмауэра Windows
      3) В настройках экземпляра базы в разделе Connections поставить флажок «Allow remote connections to this server»
      4) Насколько я помню, инстанс SQL Express как-то особенно назывался, так вот в строке подключения нужно правильно его указать.

      Ответить
  2. Павел | 12.02.2016

    «На SQL сервере с помощью SQL Server Management Studio в разделе Security нужно создать новый login и предоставить доменной группе RDCB права с возможностью создания и редактирования баз данных. Также этой группе нужно предоставить полные права на каталог установки SQL.»

    Вот все понятно, кроме того как привязать созданную группу к этому SQL логину (я так понимаю в результате все запросы с брокеров будут обрабатываться от лица этого логина), ну вот хоть тресни не выходит у меня. Если несложно просветите нуба подробнее по этому пункту

    Ответить
    • dimokkk | 15.02.2016

      Открываете SQL Server Management Studio. В разделе Security->Logins добавляете новый логин (в качестве Login Name находите свою доменную группу RDCB) c правами dbcreator и sysadmin (после создания БД права можно уменьшить, ограничив их только базой RDCB)

      Ответить
  3. Panch | 05.05.2016

    а в чем отказоустойчивость при роунд робине? если 1 сервер не доступен днс продолжит туду слать запросы. нужен nlb

    Ответить
  4. Серж | 26.08.2016

    Роунд робин + неотказоустойчивая SQL-база — аляповатая кластеризация от мягкотелых. Брр.. Придется оставаться на 2008-й

    Ответить
  5. Sasha Odarchuk | 21.11.2016

    есть НА RDCB (2 шт) и 4 штуки RDSH
    Если выключить 1й RDSH то все активные на нем юзеры не могут переподключиться к остальным RDSH 5 и более минут.
    Как уменьшить задержку ??

    Ответить
    • AlektroNik | 21.11.2016

      Вот похожая проблема и решение.
      Цитата с https://blog.it-kb.ru/2013/09/05/remote-desktop-services-rds-rd-session-host-and-web-access-in-farm-high-availability-rd-connection-broker-in-nlb-cluster-on-windows-server-2012/

      Леонид / 01.04.2016 14:19
      Коллеги, способ есть. Как правильно заметил AlektroNik, необходимо лезть в SQL базу CB. Нужно дать ему (брокеру) понять, что одного из серверов больше нет. В случае возникновения вышеописанной ситуации мне помогает небольшой скрипт. Здесь Servername — имя «упавшего» сервера.
      delete from EnvironmentProperty where EnvironmentId in (select id from Environment where name=’Servername’);
      delete from Environment where name=’Servername ‘;
      delete from TargetProperty where targetid in (select id from target where name=’Servername ‘);
      delete from TargetIp where targetid in (select id from target where name=’ Servername’);
      delete from session where targetid in (select id from target where name=’ Servername’)
      delete from target where name=’Servername ‘;

      Используйте на свой страх и риск. Я проверял 3 раза, помогало.

      Ответить
  6. Антон | 06.12.2016

    Развернул точно такую схему, в итоге, при подключении через dns запись циклического перебора, которая ссылается на посредника пользователь подключается к посреднику, а не к хосту. ЧЯДНТ?

    Ответить
    • AlektroNik | 07.12.2016

      Вы не совсем правильно подключаетесь.
      Для начала вам нужно через веб интерфейс хотя бы сохранить файлик подключения к коллекции. Если Вы его откроете в блокноте то там будет строчка с именем Вашей коллекции.
      Например, loadbalanceinfo:s:tsv://MS Terminal Services Plugin.1.Collections-RDS

      Ответить
  7. Антон | 07.12.2016

    Спасибо! Добавил эту строчку в реестр посредника подключений — всё отлично работает, но столкнулся с большой проблемой: на RDP, начиная с win2008 и выше всё работает, на 2003 и тонких клиентах редирект перестаёт работать и продолжает кидать на сервер посредника. Возможно ли решить эту проблему?

    Ответить
  8. Вадим | 08.12.2016

    Добрый день, пытаюсь настроить Настройка высокой доступности Посредника подключений (Connection Broker High Availability) по вашей инструкции, но у меня так и появляется сообщение о не возможности создать базу, хотя в sql сервере подключения я вижу, права группе дал максимальные, sqlncli одинаковой версии с сервером (я использую 2008 r2 sp3)
    Может подскажете, где я мог накосячить?

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

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

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

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



MAXCACHE: 0.27MB/0.00108 sec