Как часто в своей работе вы задумываетесь о необходимости обеспечения удаленного доступа для пользователей? Как насчет 100% бесплатных решений?
Да, такое мы все любим, но уж очень невелик выбор подобных решений под Linux:
TigerVNC, TightVNC - отличное решение, если пользователям для работы достаточно удаленного рабочего стола. Но что, если нужен проброс флешек, USB токенов, принтеров и звука? Всё это можно организовать, но вот чтобы прям сразу, из коробки...
Xrdp - Самый известный сервер RDP для Linux. Возможно подключение с любого стандартного rdp клиента (Window, Linux), проброс флешек, USB токенов, принтеров и звука из коробки. Практически полный аналог Microsoft TS, но для Linux. Проект активно развивается.
NoMachine - это проприетарное программное обеспечение. Однако у них есть очень либеральная бесплатная версия для личного использования (freeware), которая и получила широкую известность. Эта версия имеет почти все функции платных редакций, но с ограничением на количество одновременных соединений (до 2-х).
* В этом списке намеренно не упоминаются VDI решения (a-la Spice от RedHat), т.к. эти тяжеловесы выходят за рамки этой статьи.
Что же делать, если вы остановили свой выбор на практически идеальном решении Xrdp, но количество пользователей продолжает расти, и перестает вмещаться на один сервер? В целом ответ прост, нужен еще один Xrdp сервер!
Но тут же возникает проблема, а как балансировать доступ пользователей к двум Xrdp серверам? А если серверов больше двух?
Теперь ответ есть здесь: Xrdp broker project
Или прямая ссылка на github: https://github.com/AAAPops/rdp-broker.git
Переходим по ссылке, читаем Readme, и видим, что вышла версия 0.0.9, которая содержит не только исходный код для самостоятельной сборки, но и deb пакет для Debian 13.

Стоит попробовать реализовать схему, приведенную на картинке. Для этого и четырех виртуалок с Debian 13 не жалко -)
На трех буду разворачивать связку Xrdp + rdp-agent, а на четвертой будет rdp-broker.
rdp-agent буду ставить из deb пакета, а rdp-broker попробую собрать из исходников.
Установка, конфигурирование и запуск проходит штатно, если не спешить, и прочитать файл Readme на гитхабе.
Очень интересно наблюдать в логах, как брокер принимает решение о перенаправлении пользователя на тот или иной сервер. Всё понятно и информативно.
В документации написано, что проект базируется на библиотеках проекта freerdp3. А как быть, если дистрибутив Linux достаточно старый, и содержит только библиотеки freerdp2? Возьму Debian 10, и попробую собрать исходники rdp-broker.
Тут к сожалению не всё так радостно, как на свежих дистрибутивах. Сначала нужно собрать все нужные библиотеки freerdp3 и libwinpr3 из проекта FreeRDP. А также возможно и библиотеку libnng из проекта NNG
После этого rdp-broker успешно собирается. Не думаю, что все промежуточные шаги нужно описывать здесь. Любой опытный админ легко воспроизведет их.
Что могу сказать, в целом заявленный функционал работает. Новая Xrdp сессия для пользователя создается, старая вполне успешно ищется на одном из 3 агентов. А чего еще можно требовать от брокера соединений?
На мой взгляд задача объединения Xrdp серверов в единый кластер успешно решена. Попробуйте сами, и поделитесь своим опытом!