Полноценный терминальный сервер на базе Ubuntu Linux


Администрирование операционных систем на базе Linux (Debian/Ubuntu и Centos/RedHat)
apt cv linux терминальный сервер x2go сервер на базе ubuntu терминальный сервер установка серверной части
 
 

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


(последние правки 5 дней, 18 часов)

В Linux графическая подсистема изначально была спроектирована таким образом, что приложение использует удаленный графический X-сервер, но в реальной практике большинство об этом просто не догадываются, так как приложение и X-сервер расположены на одном компьютере, но никто не запрещает вам запустить приложение указав для отрисовки удаленный X-сервер. И как вы наверное догадались, сегодня мы поговорим о графических терминальных станциях в Linux

Я не понимаю почему, но факт остается фактом, и вопросам создания терминального сервера для удаленного запуска графических приложений в Linux уделяется очень мало внимания. Могу предположить, что это ,скорее всего, связано с отсутствием тяжеловесных приложений наподобие 1С, которые требуется запускать локально на сервере с предоставлением удаленного доступа (хотя сейчас уже есть нативная Linux-реализация платформы 1С предприятие). Скорее всего причина более банальная, а именно - в Windows удаленный доступ к графической консоли используется для администрирования серверов и рабочих станций, а в Linux и Unix для этих же целей используется удаленный консольный доступ при помощи SSH.

Выше вы прочитали небольшое лирическое отступление на тему: почему все так плохо, а сейчас мы рассмотрим удаленный запуск графических приложений в Linux и проверим реально ли вообще создать из Ubuntu Linux терминальный сервер.

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

Проще всего это сделать добавив к команде подключения по ssh параметр -X:

$ ssh -X chernousov@192.168.3.160

Теперь вы можете запустить удаленное приложение и в качестве X-сервера для отрисовки графики будет использоваться ваш локальный X-сервер. Вот ,казалось бы, на этом можно и закончить, но такая техника работала очень давно и последнее время Xorg получил возможности 3D и 2D ускорения и работа X-сервера теперь уже не сводится к банальному рисованию графических примитивов.

Если у вас и получится запустить полноценное графическое приложение наподобие интернет-браузера с запущенным на нем YouTube , то для полноценной передачи данных для отрисовки графики вам понадобится ,как минимум, гигабитный канал, да и обычное приложение наподобие OpenOffice Writer удивит вас требовательностью к сетевой подсистеме, так как текст теперь передается не в виде параметров отрисовки шрифта, а в виде растра.

Нагрузка на сетевую подсистему при пробросе графики через SSH

Как вы видите из представленного ниже видео, бессмысленно даже пытаться запустить браузер в режиме ssh -X если у вас сетевая карта 100 Мбит, так как минимальная нагрузка на сетевую подсистему 120 мегабит (в холостом режиме).

 

Как вы поняли, это не самый эффективный метод запуска удаленных графических приложений в Linux и конечно есть и другие, более эффективные методы.

В Windows ,в отличие от Linux, при терминальном доступе передаются не графические примитивы ,а изображения, точнее изменившиеся части рабочего стола или приложения в случае использования RemoteAPP и этот метод отлично себя зарекомендовал, и в процессе развития протокола RDP механизмы кэширования, и сжатия передаваемого изображения постоянно улучшались. Если вы поинтересуетесь современной модификацией RDP протокола, а точнее, надстройкой RemoteFX, позволяющей передавать по сети потоковое видео, то удивитесь тому, что имеется некоторое сходство с технологией рисования примитивов при помощи удаленного Xorg-сервера.

Вернемся к реализации терминального сервера в Linux и ,как вы наверное поняли, пустой эта ниша не осталась и был разработан механизм проксирования, кэширования и сжатия передаваемых данных.

Изначально этим вопросом занималась компания NoMachine, но эти ребята предлагают коммерческое решение с поддержкой и стоимость их продуктов совсем не маленькая что нам ,соответственно, не подходит. В мире OpenSource это обычное дело. Вариантов всегда два бесплатный и коммерческий, первый надо ковырять и допиливать, а второй - вот вам готовый и с поддержкой.

Мы будем рассматривать первый вариант, который не будет стоить нам ни копейки. Он ,кстати сказать, построен на тех же технологиях, что и коммерческий, но периодически доставляет много головной боли.

Сборка x2go клиента или сервера это большое приключение у меня ,например, ушло около месяца что бы его собрать и запустить.

В Ubuntu Linux имеется репозиторий содержащий уже собранные пакеты и вы можете просто выполнить несколько команд для установки клиента или сервера. Они не очень свежие и ,судя по активности в GIT, проект довольно активно дорабатывается.

Установка серверной части:

# apt-add-repository ppa:x2go/stable
# apt-get update
# apt-get install x2goserver x2goserver-xsession

Установка клиентской части:

# apt-add-repository ppa:x2go/stable
# apt-get update
# apt-get install x2goclient

После установки соответствующих пакетов вы сразу можете использоваться x2go клиентом и сервером.Серверная часть не требует каких либо настроек, так же нет и графического интерфейса управления подключенными клиентами, хотя есть возможность интегрировать серверную часть терминального сервера x2go и базу данных PostgreSQL, что в дальнейшем позволит сделать web-интерфейс для полноценного управления авторизованными пользователями.

Так как эта заметка больше обзорная и более подробно настройка будет рассматриваться в следующих частях, мы проведем замер нагрузки на сетевую подсистему при использовании x2go и заодно продемонстрируем как пользоваться x2go-клиентом.

Создать новое подключение проблем не составляет, к вашим услугам удобное графическое приложение:

 

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

 

Как вы видите, нагрузка на канал гораздо меньше, но имеются артефакты и рывки при прокрутке. Хотя версия из GIT-репозитария ведет себя гораздо лучше, но так же не лишена ряда недостатков.

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

Моя официальная страница на FaceBook
Мой микроблог в твиттер

Как вы наверное понимаете, бесплатно сейчас работать никто не будет и если ответ на ваш вопрос потребует больше трех минут времени и вам требуется полноценная консультация, то расценки на мои услуги представленны ниже.


Есть вопросы?
Спрашивайте и я обязательно вам отвечу!

* Поля обязательные для заполнения .