Comments 32
тяжелому, непонятному Remote Connection Broker от MS
коммерческие продукты с таким же функционалом, такие как упоминались выше, стоят приличных денег.
Хм… ничего не имею против HAProxy, но справедливости ради — брокер от MS штатно является частью винды (т.е. при уже имеющихся лицензиях на N серверов, на которых крутятся роли удаленных рабочих столов, попросту бесплатен), ставится по "Next-Next-Next, и работает", ресурсов практически не потребляет и не обладает рядом озвученных для HAProxy проблем.
О проблемах невозможности подключиться к ферме, когда вышел из строя сервер на котором был пользователь, в сети тоже полно сообщений.
Из минусов Remote Connection Broker от MS отмечу необходимость специально подготавливать rdp файлы и невозможность разделять сервера в ферме как в примере.
Но в целом, я не называл бы проблемами отсутствие резервирования брокера, это недостатки. Основная функция брокера на мой взгляд — это горизонтальная масштабируемость.
Из минусов Remote Connection Broker от MS отмечу необходимость специально подготавливать rdp файлы и невозможность разделять сервера в ферме как в примере.
Разве?
Для каждой группы, далается своя RDP Collection, в которую включены необходимые для нее сервера.
Про подготавливать rdp файлы — честно говоря не понял что под эти имеется ввиду.
Случаи с несколькими коллекциями не тестил, возможно там и работает так, как вы описали.
Начиная с 2012 с определенного патча или 2012 R2 все очень сильно поменялось. Правильный способ коннекта — через веб каталог. Ярлычки туда публикуются автоматом. Так же он отлично пристегуется к RemoteApp and Desktop в Win7-10. Без проблем работает как в корп сети, так и за ее пределами через Gateway при правильном сетапе. Балансирует нормально.
Сетап следующий:
2xRD Gateway (Windows NLB)
2xRD Web (Windows NLB)
2xConnection Broker (DNS Round Robin) + External SQL cluster
2xSOFS for user profile vhds
3 коллекции по 2 сервера для RDSH
2 коллекции по 2 сервера для RemoteApp
Gateway и Web прекрасно живут совместно, но были вопросы от IT Security, так что разнесли в разные сети DMZ.
Ну а брокер — он есть всегда. Даже при Single Server — без него это не рабоатет и не инсталлится.
Только стоит упомянуть, что автоматически сформированные RDP файлы, как для полноценных RDP сессий так и для RemoteApp, публикуются на RD Web Access и «ручками» ничего править не надо. ))
Штатно нет резервирования брокера, и соответсвенно нет резервирования активных сессий. Для резервирования брокера нужен выделенный MS SSQL сервер в редакции Standart.
У нас, видимо, разные представления о том, что такое "штатно нет". У MS как раз "штатно есть" документированная Active-Active конфигурация, а вот у HAProxy вам придется колхозить скрипты вручную. И SQL Standard там не нужен, а просто рекомендован, на практике же для не слишком монструозных инсталляций ничто не мешает бесплатный использовать. Плюс брокер от MS штатно не страдает от проблемы "резетнули хост — потеряли базу сессий", поэтому требования к резервированию менее жесткие.
О проблемах невозможности подключиться к ферме, когда вышел из строя сервер на котором был пользователь, в сети тоже полно сообщений.
У любого брокера будут подобные проблемы просто в силу самого принципа работы — если один из серверов лежит, это надо как-то обнаружить и принять меры, чтобы брокер об этом узнал. Для HAProxy вам надо опять вручную прикручивать некий мониторинг, а вот у MS определение живых серверов все-таки работает из коробки. Ситуаций, когда один из серверов в ферме по тем или иным причинам ложился, у меня за почти 10 лет работы с терминальными фермами от MS было достаточно, и я так сразу не вспомню связанных с этим проблем. Охотно верю, что у кого-то они были, но там уже надо разбираться в причинах.
необходимость специально подготавливать rdp файлы
Нет такой необходимости.
невозможность разделять сервера в ферме как в примере
Возможность есть, только реализована в другом компоненте — RD Gateway. А HAProxy в некотором роде сочетает возможности и того, и другого (в усеченном виде, хотя опять-таки кастомными скриптами можно много чего докрутить).
А можете рассказать зачем тогда нужен параметр loadbalanceinfo в rdp файле. Я бы с радостью от него избавился, но незнаю как. Ниже уже писал что без него я попадаю на брокера а не на хост в ферме.
Брокер, вообще говоря, не предназначен для того, чтобы точкой входа быть. Вариантов сходу три:
- RD Gateway (хоть от MS, хоть еще какой)
- Выделенный RDSH в drain mode (или пара с общим DNS именем для отказоустойчивости). Работает исключительно как точка входа, сам никакой нагрузки не несет.
- Совсем просто и сердито — добавить для каждого сервера в ферме в DNS A запись вида terminal.domain.name и подключаться по этому адресу непосредственно на них.
Ниже в комментариях написали, что таки есть, штатное средство в HAproxy для горячего резервирования!, в отличии все таки, нештатного(не средствами сервиса) резервирования от MS(если придираться).
К тому же говоря о штатных средствах и «колхозных скриптах», хочется отметить что Unix Way — это использование стольких средств(сервисов, скрипитов, программ и тп), сколько необходимо для достижения цели. Корче для unix это нормально, и это доказано, и это работает, в этом мире, и хорошо :)
У него своих проблем хватает. К примеру штатно нельзя удалить из фермы выключенный сервер или закрыть на него логон. Или сессии сбросить, которые на нем зависли. Это все приходится делать через БД.
А на сайте Microsoft написано:
To safely remove the server from your RDS deployment, contact Microsoft Customer Support Services. For a complete list of Microsoft Customer Support Services telephone numbers and information about support costs, visit the following Microsoft website
Important
We do not recommend that you manually edit the database that is used by the RDS deployment.
https://support.microsoft.com/en-us/help/2925854/cannot-remove-an-rd-host-from-an-rds-deployment
По вашей ссылке описана ситуация, когда сервер аж из AD удалили, а про ферму позабыли. :) Выстрелить себе в ногу всегда можно, это бесспорно.
В статье говорится про ситуацию, когда в ферме есть выключенный сервер и его учетка удалена в AD. Вы часто такое делаете?
Маленькие уточнения
Так как клиент mstsc не передаёт в куки больше 9 символов, нет смысла делать длинну более девяти
stick-table type string len 9 size 10240k expire 48h peers loadbalancer_replication
причем будет происходить реплика между пирами stick-table
peers loadbalancer_replication
peer spb-ts-haproxy-11 10.101.255.11:7778
peer spb-ts-haproxy-12 10.101.255.12:7778
peer spb-ts-haproxy-13 10.101.255.13:7778
peer spb-ts-haproxy-14 10.101.255.14:7778
Для резервирования HAproxy используйте keepalived (aka VRRP) назначаете общий IP адрес (так как это VRRP между хостами должен бегать мультикаст)
Чекать сервера можно таким образом (в одну строку)
server spb-ts-des-102 10.101.251.102:3389 weight 1 check inter 2000 rise 2 fall 3 minconn 0 maxconn 0 on-marked-down shutdown-sessions verify none
Если коллекция одна то можно заюзать ключ реестра DefaultTsvUrl
а что делать если коллекций 2+ и нужно что б юзерыдля подключния использовали только RR DNS имени брокера ??
Есть N групп юзеров. На кажду группу по 6-10 хостов. Хочу в рамках 1го НА-брокера получить 1 (ну накрайняк N штук) адрес входа для юзеров который они будут вводить в RPD-клиенте. Как? Поднимать на каждую группу свою ферму?
повести разные ИП адреса на HAproxy и с помощью DNS разрулите
Штатные средства WS 2012R2.
нет Remote App — есть полноценные сеансы на RDSH
HAProxy как LoadBalanсer для RDP фермы. Надежное решение за 0$