Pull to refresh

ncomputing: изобретаем дешёвый автомобиль с педальным приводом на двух колёсах

Reading time6 min
Views3.3K
Уже давным давно по интернетам ходят ссылки на мифические тонкие клиенты по 50-60-70 баксов. Мол, если есть такие, зачем по $200-$500? Более того, несколько компаний у нас в стране их пытаются продавать, и даже двигают на рынок с привлечением тяжёлой артиллерии в форме презентаций, бесплатных фуршетов и роадшоу.

Итак, сначала рыночно-историческая часть, а потом подробно техническая.

История


Была фирма, ncomputing. И изобрела она свой путь изготовления терминальных решений. Подчёркиваю, решений, а не тонких клиентов. Про него подробнее во второй части. Это изобретение было не такое уж дешёвое — под $150. Состояло оно из железа и софта. Софт шёл «как бы бесплатно» (точнее, с железками шла лицензия для них в софт). Но ушлые китайцы… произвели творческое осмысление и сделали своё. Главное, что своего сервера они не написали, а вместо этого банальным образом хакнули старую версию софта. То, что продаётся по $50-70 — это оно. Без техсаппорта, без обновлений (а они ой как там нужны), с ломанной версией критически важной для работы программы. Другими словами, типичные музыкальные центры panafonic и sonny, спортивная одежда от pyma и riibook. Та самая «китайская подделка», от имиджа которой стремятся уйти китайцы.

Впрочем, куда интереснее посмотреть на сам ncomputing, потому что это действительно НЕ RDP, это НЕ цитрикс, и у них ВСЁ своё.

Техническая часть



Любое терминальное решение состоит из серверной и клиентской части. Традиционно, с момента покупки MS технологий у цитрикса и заключения соглашения о том, что цитрикс требует покупки лицензии и на RDP (т.е. TSCAL), основой всех терминальных режимов был режим терминального сервера в Windows. В NT4 это была особая редакция (Terminal Edition, кажется), в 2k, 2003 и 2008 это всего лишь галочка в списке установленных компонент.

Но на самом деле, терминальный сервер, это не просто сервер с запущенным RDP. Майкрософт сгноила тысячи индусов в процессе его реализации, но реализовала. Итак, что в терминальном режиме сервера отличается от режима обычного сервера?

  1. Мелкие тики процессорного времени. Чем меньше тики, тем выше пустая нагрузка на процессор по переключению контекстов процессов, но тем более отзывчивой является система. Это критически важно для интерактивных приложений у кучи людей одновременно.
  2. Равное выделение процессорного времени всем foreground приложениям. В классической системе с виндами foreground приложение одно, а в серверной редакции (могу врать, кажется, вообще ни одного).
  3. Память с приоритетом на приложения, а не на кеш.


Эти три пункта можно включить вручную без терминальных заморочек, в свойствах системы.

А вот дальше начинается святая святых. Это:
  1. Замена глобальных системных мьютексов локальными для пользователя
  2. Автоматическая переадресация запросов в системный каталог в подкаталог в профиле пользователей. В Висте/7 это реализовано даже на десктопе, но впервые эта технология появилась именно в терминальной службе. Правила позволяют задавать какие обращения куда переадресовываются. Это касается как файловой системы, так и HKLM в реестре.
  3. Автоматическое конфигурирование приложения под нужды пользователя. Любой, кто работал с терминальным сервером, знает про странное окошко с кнопочками next, next, finish, появляющимися при запуске установки приложений. Это именно оно.
  4. вручную переключаемые режимы приложений и установки (ручная правка того, что не сумелось определиться на автомате) — команды change user /install и change user /execute.
  5. мало документированный, но вполне работающий режим автоматического притормаживания приложений, которые слишком агрессивно жрут ресурсы (например, в пустом цикле опрашивают клавиатуру), который ещё можно и настраивать вручную. Среди всех решений с многопользовательским доступом, это ЕДИНСТВЕННОЕ, которое я видел, способное регулировать агрессивность дисковых операций приложений.

(возможно я ещё что-то упустил, книжку я давно-давно читал...)

Вот ЭТО и есть терминальный сервер. А tcp-ica и tcp-rdp — это лишь коннекторы к нему.

Но майкрософт хочет за это $75 за пользователя. И Ncomputing решает, что они умнее цитрикса и MS вместе взятых и делает свою систему. Точнее, две системы: X и L серии.

X — серия работает с собственным приложением по витой паре пятой (5e?) категории между устройством и специальной платой, кажется, на 5 устройств, втыкающейся в PCI и PCI-E (есть и такие и такие). Провода весьма ограниченны по длине (я не знаю сколько, в прошлых постах люди говорили о 10 метрах). Плата позволяет каждому из пользователей видеть своё рабочее место, почти (про это «почти» мы сейчас расскажем) почти независимо друг от друга.

Безусловным плюсом X-серии по сравнению с RDP является: высокая пропускная способность (FullHD? Нет вопросов, правда, именно FullHD, т.к. зум меньшего разрешения подтормаживает). Звук и синхронизация звука? Да. Микрофон — да (в RDP только с версии 6+ появился микрофон, так что для windows 2003 или цитрикс, или RDP без микрофона). С флешками фигово (кое-что работает, кое-что нет). С принтерами всё плохо, но это никого не волнует, т.к. принтер втыкается в компьютер, и он (в силу технологии) всегда рядом с пользователями. Вероятнее всего, это же касается сканеров и прочей юсб-бижутерии.

В условиях маленького офиса это вполне себе неплохо.

НО! В советской рекламе ncomputing'а говорят о том, что мол, «вы одну винду на всех юзать будете». Любой, кто ставил лицензионные винды и не поленился почитать ту сортирную бумажку, которую вкладывает ООО «Майкрософт РУС» в эту коробку, мог там прочитать ПРЯМОЙ запрет на применение мультиплексоров, к которым ncomputing и относится (я за пол-года забыл уже, то ли там вообще запрет, то ли требование купить лицензий по числу людей...). Т.е. рассказы про экономию на лицензиях — БРЕХНЯ. Причём не маркетинговая, а наглая и подбивающая на уголовщину.

Помимо описанной выше X-серии есть L-серия, работающая по ip-сети. Работает она с собственным сервисом, запущенным на виндах. Эта версия во-первых дороже, во-вторых, всё то, что было не очень важным в X-серии становится критичным: хреновые флешки, отсутствие принтеров/сканеров, совершенно дикое потребление трафика, чувствительность к потере пакетов, джиттерингу (изменению времени прохождения пакетов) к большим пингам (на 150-200мс оно уже практически неюзабельно, для сравнения, у RDP эта грань проходит по 600мс, у citrix c локальным вводом — по 1000-1500мс).

Собственно, на этом с клиентами всё. Клиенты и клиенты. Грустное начинается на сервере.

Сервер ncomputing


Поскольку ncomputing денег MS не платит и договоров а-ля цитрикс/virtuozzo не заключает, то MS срала на ncomputing. В прямом смысле. Переодически выходящие патчи от MS намертво убивают работающий сервер. Форумы ncomputing полны воплями об этом и ответом саппорта «удалите KB такой-то и не ставьте пока мы это не починим». А чинят далеко не неделю и не месяц. Судите сами о степени надёжности сервера, на котором нет 2-3 месяца нет critical update'а, а очередной kiddo шагает по планете.

Поскольку денег за терминальные лицензии платить не надо, то и юзать терминальный сервис тоже нельзя. А значит, прощай весь файнтюнинг:

1) Глобальные мутексы глобальны. Тысячи приложений ни сном ни духом про терминальный сервер, они хотят проверить «одна копия программы или несколько». Разумеется, в многопользовательской среде они друг другу мешают.
2) Отсутствие переадресации путей. Это значит, куда программа пишет, туда это и идёт. Со всеми вытекающими. Например, совместный доступ к win.ini. Или к c:\program files\bla-bla\bla.dat. Который совсем не ожидаем программистами. Отсюда глюки падение софта.
3) Отсуствие интеграции с AD. Никаких политик, красивых групп, глобальных запретов и разрешений. Всё ручками на каждом сервере и никак не иначе.
4) Отсутствует любая потуга выйти за пределы одного сервера. Ни брокера соединений, ни ферм, ни поддержки кластеров.
5) Отсутствие любого контроля за ресурсами. На презентации ncomputing я сумел с помощью трёх тупых батников, синхронно переливающими по 4Гб из каталога из-под одного пользователя сделать так, что админ локально не смог зайти за разумное время в управлялку серверным сервисом. (В качестве теста там использовали симпатичный квад с саташными винтами — а у меня на работе один из второстепенных терминальных серверов на 4 раза более хреновом железе с IDE-винтами по 20Гб тащил на себе аж 30 человек, которые просто не задумывались о том, что копировать в два потока это зло).
6) В самой серверной программе права выставляются очень дуболомно.

Я лично не проверял, на правах слухов говорю, что в процессе эксплуатации сервис иногда падает. Ну, знаете, как спулер от кривых драйверов. Упал, перезапустился, пользователи снова все подключились, открыли эксели, восстановили автоматически сохранённые файлы, работают себе дальше без проблем.

Таким образом:

X-серия хороша в своей нише. Надо колл-центр или что-то с видео на 2-5 человек? Ок, нормально. Сделали, работает. Если кто-то хулиганит, ему можно в глаза посмотреть и он перестанет. Коллективная ответственность, кооперативная многозадачность.

L-серия — феерическое Г, совершенно не готовое к энтерпрайзу и спокойной жизни сисадмина.

UPD: Как подсказывают в комментариях, есть люди, которые это пытались внедрить (я их только рассматривал, но работать с ними не пробовал):

habrahabr.ru/blogs/sysadm/91060
Tags:
Hubs:
+34
Comments31

Articles

Change theme settings