Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

терминальные_решения_на_базе_linux [2015/02/23 07:25] (текущий)
vovka Перенос со старой wiki
Строка 1: Строка 1:
 +=====  О технологии "​клиент-сервер" ​ =====
 +В Unix\Linux терминологии,​ слово "​терминал"​ в очень узком смысле означает "​рабочее место оператора ЭВМ",​ обычно представляющее из себя клавиатуру (стандартный ввод) и дисплей (стандартный вывод). На заре компьютерной индустрии,​ в компаниях работал достаточно мощный компьютер,​ его ещё называли мэйнфрейм,​ а к нему подключалось множество "​рабочих мест"​ в виде терминалов,​ состоящих из дисплея и клавиатуры. Все задачи и приложения выполнялись именно на мэйнфрейме,​ а пользователю отдавалось изображение результата выполнения задачи и принимались команды с клавиатуры. Такой принцип взаимодействия называется "​клиент-сервер"​.
  
 +По мере развития микропроцессорной техники,​ компьютеры всё больше становились "​персональными"​ и от технологии мэйнфреймов отошли. Теперь задачи выполняются больше на локальных компьютерах со своей периферией,​ а решение задач, где присутствуют коллективный доступ к данным,​ взяли на себя менее мощные компьютеры (по сравнению с мэйнфреймами) - файловые серверы с большим объёмом дискового пространства. ​
 +Конечно же это не означает,​ что мэйнфреймы канули в лету, совсем нет. В некоторых случаях они до сих пор применяются и весьма успешно для обработки сложных бизнес-процессов и производства ёмких вычислений.
 +
 +В персональных компьютерах и современных операционных системах Unix и Linux, ​ технология "​клиент-сервер"​ работает непосредственно на одном компьютере - он же и "​мэйнфрейм"​ и "​терминал"​. Ничего не мешает их разделить,​ и функцию сервера (мэйнфрейма) оставить на одном компьютере,​ а терминал переместить на другой.
 +
 +Напрашивается очевидный вопрос:​ где это свойство можно применить?​ \\  ​
 +**1**. Удалённый "​Рабочий стол"​ (копия "​Рабочего стола"​ на удалённой машине) - пользователь управляет удалённой машиной,​ как если бы он работал непосредственно на ней. В Windows это делает встроенный RDP-сервер и RDP-клиент,​ а также сторонние программы типа Radmin, VNC, TeamViewer и другие. В *nix: Krdc, oMachineNX,​RealVNCJava,​ Remmina, TeamViewer, TigerVNC, Vinagre и другие.
 +
 +**2.** Удалённое управление через консоль (управление через текстовые команды) - это классические терминальные методы управления:​
 +  *  telnet - (Windows, *nix) наверно один из самых первых,​ простых и незащищённых инструментов управления;​
 +  *  rsh - (*nix) утилиты для выполнения отдельных команд;​
 +  *  SSH (OpenSSH) - (*nix) аналог telnet, только данные передаются по защищённому (шифрованному) каналу;​
 +
 +**3.** Полноценные терминальные решения на базе серверов терминалов и терминальных клиентов.
 +Сюда можно отнести сетевые технологии,​ благодаря которым большое количество пользователей могут изолированно работать (запускать приложения) на одной машине,​ со множества машин, подключённых к сети, как если бы они работали непосредственно на этом компьютере. Это похоже на удалённый рабочий стол, за тем исключением,​ что для каждого пользователя создаётся уникальный сеанс со своим окружением и всё это обслуживает одна машина. \\  ​
 +Примеры таких решений: ​
 +  *  Windows: Terminal Services, Citrix.
 +  *  *nix: LTSP.
 +
 +Теперь рассмотрим варианты применения более подробно.
 +
 +=====  Удалённое управление ​ =====
 +Самое распространённое применение - это удалённое управление машиной (Рабочим столом) через сеть: на одном компьютере запускается серверная часть, на удалённой машине - клиентская. Серверная часть транслирует изображение с монитора на клиентскую часть. В свою очередь,​ клиентская часть отправляет серверной нажатие клавиш клавиатуры и положение курсора мыши. ​
 +
 +Другое применение - удалённое управление,​ но уже с целью разгрузки каналов связи. Например,​ работает предприятие,​ и на сервере функционирует программное обеспечение "1С Бухгалтерия"​. В некоторых случаях,​ производительности 100-мегабитной сети хватает для работы внутри предприятия (если база большая,​ даже на скорости 100 мегабит,​ работа клиентов будет невыносимо медленна),​ а теперь допустим что требуется подключить филиал предприятия,​ располагающийся достаточно далеко от основого и имеющий,​ скажем,​ ADSL-канал со скоростью 1 Мегабит в секунду. При запуске клиентской части бухгалтерской программы,​ в зависимости от задачи,​ может потребоваться перекачка большого объёма базы данных 1С. Учитывая узкий канал, на это может потребоваться достаточно много времени. Вот здесь и проходит на помощь терминальное решение,​ в котором пользовательский сеанс переносится на удалённую станцию,​ а управление (экран,​ клавиатура,​ мышь) "​переносится"​ по сети до удалённого компьютера. В этом случае,​ передаваемый объём данных достаточно мал, и может уместиться в канал со скоростью от 128Кбит\сек. Примеры реализации: ​
 +  *  терминальный сервер Citrix (коммерческое решение), ​
 +  *  встроенная система удалённого управления в Windows по протоколу RDP,
 +  *  в Unix\Linux: удалённый запуск приложений через средства Xorg, клиентские средства типа FreeRDP и VNC. 
 +
 +Также стоит упомянуть и классические (консольные) методы удалённого управления операционными системами:​
 +  *  telnet - (Windows, Linux) наверно один из самых первых,​ простых и незащищённых инструментов управления;​
 +  *  rsh - (Linux) утилиты для выполнения отдельных команд;​
 +  *  SSH (OpenSSH) - (Linux) аналог telnet, только данные передаются по защищённому (шифрованному) каналу;​
 +  *  RDP - (Windows) встроенные в Windows средства удалённого управления;​
 +  *  Xorg - (Linux) может разделять клиентскую часть от серверной и работать по сети.
 +
 +=====  Полноценные терминальные решения ​ =====
 +Ещё вариант применения - снижение затрат на IT-инфраструктуру. Это теже самые терминальные решения,​ но цель их работы заключается в снижении затрат на развёртывание локальной сети и IT-инфраструктуры в целом. Как это работает?​ Достаточно просто. Допустим,​ у Вас на предприятии есть старые машины - на них нельзя запустить даже современный Интернет-браузер или какую-нибудь более-менее современную офисную программу. Обычно такие машины выбрасывают или раздают по школам. Однако даже такие машины можно использовать в роли клиента сервера терминалов. Потребуется одна или несколько достаточно мощных машин для серверов,​ а пользовательские станции могут быть гораздо скромнее. ​
 +
 +Ещё один момент - экономия лицензий на программное обеспечение. Обычно на предприятиях,​ где в основном работает Windows или MacOS, достаточно часто работает платное ПО. Если лицензия привязывается к рабочему месту, то такое ПО закупается для всех рабочих станций. Но если ПО установить на одной машине (сервере терминалов),​ то доступ к работе можно организовать многим пользователям и это не пойдёт в нарушение лицензии. Таким образом можно сэкономить достаточно средств. \\  ​
 +Примеры реализации: ​
 +  *  терминальный сервер Citrix Metaframe (коммерческое решение), ​
 +  *  в Unix\Linux: ​
 +    *  удалённый запуск приложений через средства Xorg,
 +    *  проект LTSP (Linux Terminal Server Project),
 +    *  FreeNX.
 +Кстати,​ проект LTSP успешно применяется в компьютерных классах многих ​ общеобразовательных школ.
 +
 +Единственное,​ на что однако нужно будет потратиться - это мониторы. Если старичёк ЭЛТ-монитор не выдаёт разрешение 1024х768 при 75 герцах,​ то такой монитор нужно заменить на более продвинутый и желательно на ЖК. Это же касается и видеокарт. Вобщем,​ видеоподсистему желательно апгрейдить до рабочего разрешения до 1024х768. Это связано с сохранением здоровья глаз пользователей и, заодно,​ чтобы элементы графических окружений вписывались в экран монитора. Разрешение 800х600 в некоторых случаях,​ без перенастройки размера элементов графических окружений (шрифты,​ кнопки,​ размеры панелей,​ и тд.) не будет удобно пользователю. ​
 +
 +Теперь речь пойдёт о специфике реализаций терминальных решений в Unix\Linux.
 +
 +====  Ограничения ​ ====
 +Стоит упомянуть об ограничениях в работе полноценных терминальных решений (не путать с удалённым управлением!):​
 +  *  как уже говорилось выше, видеоподсистема должна обрабатывать высокое разрешение 1024х768 как минимум,​ и если нужно - больше,​
 +  *  желательно,​ чтобы для видеокарты на терминале работали драйверы с аппаратным ускорением. Это нужно для просмотра видео,
 +  *  в очень старых компьютерах нет портов USB, но если это будет рабочая станция - печатная машинка,​ то usb, а тем более приводы,​ там вообще не нужны,
 +  *  желательно чтобы сервер терминалов работал с сетью на скорости 1Гигабит или выше - это нужно для быстрой обработки действий и минимизации времени реакции при работе пользователя,​ а также ускорения процесса загрузки ПО в терминалы в момент их старта. Для терминалов хватит и 100-мегабитного подключения,​ но в целом, пропускная способность сети должна быть как можно выше,
 +  *  если сеть частично или полностью собрана на сервере терминалов,​ то нужно заранее позаботиться об отказоустойчивости как самого сервера (серверов),​ так и сети. Это очень важный момент,​ поскольку остановка сети или сервера может вызвать прерывание рабочих процессов компании!
 +
 +====  Аппаратура ​ ====
 +Как уже говорилось выше, в качестве сервера нужно применять достаточно мощный компьютер или даже кластер компьютеров,​ в зависимости от количества терминалов и приложений,​ которые нужно запускать. В среднем,​ на сервере должно быть как минимум по 256Мбайт оперативной памяти на каждый терминал.
 +
 +В качестве клиентов подойдут машины начиная от Pentium-133 или AMD K6 или выше с соответствующей периферией (звуковая карта, видеокарта,​ приводы и тд). Обязательно наличие сетевого адаптера и желательно со скоростью 100 Мегабит (Pentium-I, Pentium-II) и выше (Celeron 350МГц, Pentium-III).
 +Если есть старенькие тонкие клиенты - можно применить и их (о таком варианте речь пойдёт в одной из статей). Современные модели готовых тонких клиентов стоят в России дороже чем готовые бюджетные системники.
 +
 +=====  Специфика в Unix и Linux  =====
 +====  X-терминал ​ ====
 +Очень важно понять,​ что в Unix и Linux, организация графического интерфейса работает наоборот! В роли клиента выступает программа,​ результат работы которой нужно отрисовать на экране монитора,​ а серверная часть представляет собой X.org-сервер,​ который перехватывает периферию (клавиатуру,​ мышь) и отрисовывает работу программы,​ которую запустил пользователь. Это выглядит сложно,​ но система достаточно универсальна. ​
 +В связи с этим полноценные терминальные решения в контексте Unix\Linux выглядят тоже наоборот:​ на сервере терминалов выполняется пользовательская программа (клиент для X-сервера),​ а запускает её X-сервер с удалённого компьютера. Существую специализированные рабочие станции,​ на которых исполняется исключительно X-сервер,​ их называют аппаратным X-терминалом. На картинке ниже представлена урощённая схема работы такой системы.
 +
 +[{{ Terminal-scheme01.png?​820 |Упрощённая схема сетевого варианта X-сессии (нажмите для увеличения)}}]
 +
 +На терминале запускается минимальная Linux-система с X.org-сервером. Процесс загрузки не показан,​ но на терминалы Linux-система передаётся по сети от одного готового бинарного образа. На самих терминалах не обязательно наличие даже дисковых накопителей.
 +
 +====  "​Удалённое управление" ​ ====
 +Вариант удалённого управления выглядит вполне стандартно:​ на клиентском компьютере запускается минимальная система,​ для запуска клиента на базе таких протоколов как: VNC, RDP или NX. На сервере терминалов,​ запускается многопользовательский вариант сервиса. Приложение запускается непосредственно на сервере терминалов и запускает его X-сервер,​ выполняющийся там же на сервере! Но обращения от клавиатуры\мыши и вывод изображения перехватываются RDP-сервером и перенаправляются через сеть до удалённого клиента. Упрощённый вариант с RDP-сервером выглядит так:
 +
 +[{{ Terminal-scheme02.png?​820 |Упрощённая схема варианта с RDP (нажмите для увеличения)}}]
 +
 +Здесь на клиенте запускается минимальная Linux-система с полноценным графическим окружением и RDP-клиент. ​
 +
 +====  О выборе метода работы ​ ====
 +Какой метод и где применить?​ Всё зависит от поставленной задачи и средств,​ выделенных на её реализацию. Например:​
 +  *  Если на предприятии уже работают хорошие машины,​ то не имеет смысла делать полноценное терминальное решение,​ разве что только для экономии электроэнергии и затрат на обслуживание. Опять-таки,​ если на предприятии работает с десяток аниматоров 3D-графики,​ то каждому из них нужен не терминал,​ а достаточно мощный компьютер,​ чтобы была возможность производить предварительный рендеринг на своих машинах.
 +  *  Если машины не совсем быстрые - полноценное терминальное решение здорово поможет.
 +
 +Также следует учитывать технический аспект - производительность. В случае с "​удалённым управлением"​ происходит передача уже готового (построенного) изображения на терминал. В X-терминале,​ построения происходят непосредственно на терминале. Поэтому,​ в первом случае,​ динамика изображения практически не влияет на загрузку клиента,​ а во втором - вся нагрузка ложится на X-сервер терминала,​ в связи с чем, производительность видеоподсистемы должна быть как можно выше.
 +
 +=====  Послесловие ​ =====
 +В статье были рассмотрены варианты реализации терминальных решений для операционных систем. Кратко были затронуты и коммерческие решения и не только для Linux. ​
 +
 +Есть также решения,​ которые стоит упомянуть,​ не смотря на их "не сетевую"​ работу - мультисит (multiseat). В этом решении используется один системник на несколько рабочих мест. Суть идеи: Linux (Unix) позволяет подключать множество мониторов,​ клавиатур\мышей,​ звуковых и видеокарт и всё это можно распределить между рабочими местами. Если кого интересует - в конце статьи даны ссылки на материалы. ​
 +
 +В процессе работы над статьёй,​ автор реализовал на стенде вариант решения на базе LTSP. Есть желание протестировать ещё несколько продуктов и описать их. Через некоторое время будут подготовлены и опубликованы статьи,​ освещающие практические реализации терминальных решений под Linux.
 +
 +=====  Смотрите также ​ =====
 +  *  [[http://​nix.zeya.org/​forum/​index.php?​topic=250.0|Обсуждение статьи на форуме]]
 +
 +**Ресурсы по теме**
 +  *  **X.org**
 +    *  Популярно о X.Org: http://​rus-linux.net/​papers/​xwin/​X-Window.html
 +    *  Статья Jasper St. Pierre - "​Графический стек Linux":​ http://​habrahabr.ru/​post/​148954/ ​
 +
 +  *  **LTSP**
 +    *  Официальный сайт проекта:​ http://​www.ltsp.org/​
 +    *  Wiki проекта (много технической информации,​ которая осталась "за кадром"​ на официальном сайте):​ http://​sourceforge.net/​apps/​mediawiki/​ltsp/ ​
 +
 +  *  **Thinstation**
 +    *  Проект Linux-дистрибутива Thinstation (минимальная система для работы в качестве тонкого-клиента с поддержкой нескольких протоколов) : http://​www.thinstation.org/ ​
 +
 +  *  **FreeNX**
 +    *  Устанока FreeNX: https://​help.ubuntu.com/​community/​FreeNX
 +
 +  * **Мультисит**
 +    *  Пример реализации мультисита на Ubuntu: http://​habrahabr.ru/​post/​112534/​
 +    *  Пример реализации мультисита на 2 рабочих места: http://​research.edm.uhasselt.be/​~jori/​page/​index.php?​n=Misc.DualSeatX
 +    *  Пример реализации мультисита переконфигурацией X.org-сервера:​ http://​blog.chris.tylers.info/​index.php?/​archives/​14-Multiseat-X-Under-X11R6.97.0.html
Печать/экспорт