АНТОН БОРИСОВ, специализируется на экспертизе аппаратных и программных решений
Веб-топ-решение
на основе Ulteo Virtual Desktop
Для организации работы сервера, предоставляющего инфраструктуру веб-доступа к приложениям компании, вовсе не обязательно использовать платные коммерческие разработки.
В качестве аналога Sun Secure Global Desktop можно попробовать развернуть и GPL-решение – Open Source Enterprise Virtual Desktop от компании Ulteo. Чем хороши коммерческие решения? В первую очередь тем, что стараются предоставить пользователям максимум возможностей, которые по-большому счету многим потребителям и не потребуются. Сравните, например, поддержку работы в Secure Global Desktop (см. №9 за 2009 год) терминалов стандарта TN3270/TN5250, которые используются при коммуникации с серверами IBM iSeries и AS/400. Много ли у нас в стране предприятий, у которых установлен хотя бы один сервер с логотипом IBM? Когда стоит выбор, а что использовать в качестве серверного решения для веб-топов, не последнюю роль играет его стоимость. И хотя для варианта Open Source-затраты на внедрение не являются нулевыми – помните, что затраты косвенно включены в стоимость работы ваших инженерных кадров, – они все же значительно предпочтительнее коммерческих решений. В силу того, что упомянутые кадры, которые разбираются в технологиях, смогут решить нетривиальную задачу, которая может появиться на предприятии при эксплуатации веб-топ-решения. При наличии GPL-продукта решение будет найдено намного быстрее.
Что такое Open Virtual Desktop?
Это связка из двух центров – сервер на основе LAMP (Linux/Apache/MySQL/PHP) для авторизации и управления пользователями и приложениями – Session Manager, и сам сервер приложений – Application Server. И хотя их рекомендуется размещать на разных физических машинах, функционально их можно объединить и разместить на одной платформе (см. рис. 1).
Рисунок 1. Архитектура веб-топ-решения от Ulteo
Пользователям, которые зарегистрированы на Open Virtual Deskop, предоставляется возможность запустить в браузере как приложения с Linux-сервера приложений, так и приложения с сервера приложений на Windows-платформе. К сожалению, такое стороннее ПО, как плагин от Java, должно быть установлено на стороне клиента – иначе вся визуализация, которая реализована на основе VNC-протокола, будет недоступна.
На сервере приложений (Application Server) запускается реализация X-сервера – Xtightvnc. Браузер пользователя исполняет java-апплет, в котором реализован VNC-протокол, и, авторизовавшись на сервере SessionManager, получает доступ к виртуальному столу.
Для авторизации пользователей в Windows-системах может использоваться протокол от Active Directory либо от LDAP-хранилища. Либо, когда развернута информационная среда для супермалой компании, по самому простому варианту – добавить одноименные учетные записи как в Linux, так и в Windows-сервер.
Компания Ulteo распространяет серверные компоненты в качестве RPM-пакетов для RHEL/CentOS/Fedora либо через собственный репозиторий для Debian-систем (или основанных на нем). Можно также взять tarball c исходными текстами. Или же скачать готовый, со всеми компонентами, ISO-образ с Ubuntu. В качестве обзорного примера предлагаю воспользоваться именно этим вариантом, т.к. для выделенной машины выбор дистрибутива не принципиален, а настройка обновлений для системы и приложений в Ubuntu абсолютно аналогична той, что и в Debian.
Сервер приложений
Скачиваем ISO, устанавливаем на выделенную машину, делаем несколько шагов по регистрации пользователей – и через несколько минут Ulteo Virtual Desktop готов и работает. Теперь можно приступить к более тонкой настройке.
Заходим через браузер по адресу http://ovd-server/sessionamanager/admin, где ovd-server – IP-адрес только что развернутого решения. По умолчанию используется внутренний список пользователей. Зайдем под зарезервированной учетной записью – admin/admin. В дальнейшем рекомендуется поменять имя/пароль от администратора. Эти данные хранятся в файле /etc/ulteo/sessionmanager/config.inc.php, причем пароль – это хеш-запись от настоящего пароля, закодированного по методу MD5 (см. рис .2).
Рисунок 2. Сервер приложений найден, но пока не зарегистрирован
Первым делом необходимо будет зарегистрировать Application Server (который в нашем случае находится по такому же адресу, что и OVD-server) – вкладка Servers -> Unregistered Servers. Нажимаем на кнопку Register, а затем переводим в состояние Production – кнопка Switch to Production. В теории сервер готов. Однако стоит зайти в его свойства и вместо имени localhost внести либо его настоящее DNS-имя, либо прописать IP-адрес (см. рис. 3).
Рисунок 3. Тонкая настройка Application Server позволит оптимизировать его работу
И можно расширить количество одновременных подключений к этому серверу приложений – вместо используемых по умолчанию 20 подключений расширить до необходимых для вашего предприятия.
В этой же вкладке, чуть ниже, также видны те приложения, что будут доступны для запуска. Но о них позже.
И заключительный штрих – не забудем добавить пользователей, которые будут обслуживаться данной веб-топ-системой. Перейдем во вкладку Users и создадим наш собственный список пользователей – радиокнопка I want to create my own users. Так как в моем окружении не использовался ни Active Directory, ни LDAP-сервер, я выбрал вариант хранения учетных записей пользователей в собственной базе Ulteo (см. рис. 4).
Рисунок 4. Учетные записи пользователей могут храниться либо во встроенной базе, либо в LDAP/AD-хранилище
Добавление учетных записей также достаточно тривиальное занятие – для этого предназначена вкладка Users. Последовательно проходите все регистрационные шаги – присваиваете уникальные ID пользователю, включаете его учетную запись в определенную пользовательскую группу (например, Department1) и в группу приложений (например, BusinessApps). Чем указанные группы отличаются друг от друга? Последняя, т.е. группа приложений, – это список из пользовательских программ, которые зарегистрированы на сервере приложений Ulteo и которые можно запустить. В то время как пользовательская группа – это список зарегистрированных пользователей, которым назначена та или иная группа приложений. Таким образом можно выделить группы пользователей не только по организационному признаку (подразделения, департаменты), но и по функциональному (выполнение определенного текущего проекта). После этого довольные пользователи могут заходить браузером на Ulteo Virtual Desktop, причем отличить виртуальный рабочий стол, который находится где-то там, на сервере, от реального рабочего места будет сложновато (см. рис. 5).
Рисунок 5. Виртуальный рабочий стол GNOME в окне браузера
Больше приложений, красивых и полезных
Как вы могли заметить, пользователю на данном этапе предлагается сравнительно небольшой выбор по программному обеспечению – только те приложения, что были установлены внутри Application Server, который в свою очередь основан на Linux. Что делать, когда требуется запустить Win32-приложения? Используется ли какая-либо виртуализация или запуск Windows-приложений происходит несколько иначе?
В Ulteo решили не усложнять с виртуализацией и поступили намного проще. Для запуска Windows-приложений все-таки требуется терминальный сервер с включенной RDP-службой. Для экстремально ограниченного варианта, когда нет терминального сервера Windows, можно попробовать выделить машину на базе Windows XP Professional с включенным Remote Desktop Connection (дистанционное управление рабочим столом). В этом случае работа приложений будет возможна только в однопользовательском режиме, т.е. запустить любое Windows-приложение, что зарегистрировано на Windows XP, сможет только один зарегистрированный пользователь Ulteo. На этот сервер устанавливается легкий клиент от Ulteo, который соединяется с главным сервером приложений – Application Server – и «заворачивает» вывод произвольного приложения с терминального сервера в seamless RDP-сессию. То есть разработчики взяли открытый код от проекта SeamlessRDP компании Cendio AB и модифицировали его под задачи виртуального веб-десктопа. Для пользователя, работающего с виртуальным десктопом, никакой принципиальной разницы между приложениями, запущенными из Linux-среды и из Windows, нет – есть, правда, небольшое визуальное отличие в оформлении окон. Вопросы могут появиться, когда необходимо будет переписать/передать/сообщить о расположении сохраненного документа коллегам. И здесь придется подумать, как лучше организовать общее сетевое рабочее пространство – использовать единое SAN-хранилище или что-то еще.
Приступим к практической реализации. Загружаем Windows-агент и устанавливаем на терминальный сервер. В файле C:\Program Files\Ulteo\Open Virtual Desktop\ulteo-ovd.conf вставляем нужные адреса как самого терминального сервера (параметр SERVERNAME), так и сервера приложений Ulteo (IP-адрес в параметре SESSION_MANAGER_URL). Теперь остается перезапустить службу Ulteo Open Virtual Desktop agent и зарегистрировать появившийся сервер в системе Ulteo. И, как это было описано выше с Linux-сервером, перевести его в production mode.
Листинг 1. Пример конфигурационного файла Windows-агента Ulteo
SERVERNAME=10.10.250.10
SESSION_MANAGER_URL=http://10.10.2.10/sessionmanager
LOG_FLAGS="info warn error"
WEBPORT=8082
После этой операции имеет смысл завести новую группу для Windows-приложений и для нужных пользователей подключить эту группу. Тогда у этих пользователей на виртуальном рабочем столе появятся ярлыки от Windows-приложений с терминального сервера.
Однако остановимся на этом шаге. Для развитых инфраструктур, где развернуто множество серверов, встретить доменную или LDAP-авторизацию вполне обычное дело. Иное дело, когда рассматривается малое предприятие – объективных причин заводить домен ради 10 пользователей нет. Проще и быстрее зарегистрировать их вручную на нескольких серверах. Можно ли разворачивать Ulteo в ситуации, когда нет ни LDAP, ни Active Directory? Можно – внесем пару строк в модуль авторизации – файл /usr/share/ulteo/sessionmanager/startsession.php.
Найдите блок авторизации пользователей (строки 1-18) и добавьте новый код default (строки 19-21):
1) switch ($prefs->get('UserDB', 'enable')) {2) case 'activedirectory':3) $prefs_ad = $prefs->get('UserDB', 'activedirectory');4) $windows_login = $user->getAttribute('real_login').'@'.$prefs_ad['domain'];6) break;7) case 'ldap':8) $prefs_ldap = $prefs->get('UserDB', 'ldap');9) if ($prefs_ldap['ad'] == 1) {10) $buf = $prefs_ldap['suffix'];11) $suffix = suffix2domain($buf);12) if (! is_string($suffix)) {13) Logger::error('main', 'LDAP suffix is invalid for AD usage : '.$buf);14) break;15) }16) $windows_login = $user->getAttribute('login').'@'.$suffix;17) }18) break;19) default:20) $windows_login = $user->getAttribute('login');21) break;22) }
Данная процедура позволит добавить на виртуальный рабочий стол ярлыки приложений с терминального сервера. Не забывайте только одинаково именовать учетные записи пользователей во внутренней базе Ulteo и в терминальных серверах на Windows-платформе. И соответственно, у них должны быть одинаковые пароли (см. рис. 6).
Рисунок 6. С помощью SeamlessRDP добавляется возможность работы и с Windows-программами
Что делать, когда нужны другие Linux-приложения, помимо уже установленных внутри Ulteo? С терминальными Windows-серверами понятно – поставил, и они посредством работающего Windows-агента появляются в администраторской панели. С сервером приложений – Application Server – чуть-чуть сложнее. Если вы зайдете по SSH на работающий сервер Ulteo, вы увидите, что это обычный LAMP-сервер. А вот сам Application Server прячется в chroot-окружении в директории /opt/ulteo/ и является обычной Ubuntu-системой. Думаю, что проблем с добавлением источников обновлений пакетов в файл /opt/ulteo/etc/apt/sources.list и дальнейшей работой в chroot-среде не возникнет.
***
Если сравнивать Ulteo Virtual Desktop с такими коммерческими решениями, как Presentation Server (Citrix) и Secure Global Desktop (Sun), то Ulteo будет казаться этаким пигмеем на фоне гигантов. Количество и качество возможностей этих систем превосходят аналогичные от Ulteo. Однако последний даст значительную фору, когда речь заходит о стоимости разворачивания, установки и лицензирования. В целом, используя Ulteo, можно быстрее получить отдачу вложенных в него средств (Return of investment – ROI) по сравнению с любым коммерческим решением и его проще интегрировать с существующими на предприятии системами. Судя по количеству загрузок, это прекрасно понимают в Европе, Азии и в обеих Америках – доля скачиваний из каждого региона примерно треть от общего числа.
Сами разработчики из Ulteo признают, что их продукт используется не только в публичном секторе (в министерствах и ведомствах, администрациях городов, а также в школах и университетах), но также в торговле. И что самое, интересное – некоторые хостинговые компании разворачивают проекты по предоставлению услуг удаленного доступа, посредством веб-топа, для работы в офисных программах. Такие проекты в первую очередь нацелены на малые и средние предприятия. С одной стороны, пользователям, работающим и привыкшим только к Windows-среде, ненавязчиво предлагается целый пакет Linux-приложений. И в то же время Linux-пользователи обеспечены доступом к специфическим Windows-продуктам, альтернатив которым пока нет.
С точки зрения производительности видеоподсистемы следует помнить, что VNC-протокол не самый быстрый и он не ориентирован на просмотр видеофильмов. Работать же в приложениях, нацеленных на офисную работу, также просто и привычно – обновление экрана происходит в незаметном для глаза режиме.
Думаю, что для 80% пользователей будет абсолютно неважно, что же именно скрывается за табличкой Ulteo Virtual Desktop – главное, что все те программы, с которыми они привыкли работать, остались на местах, правда, переместились в окно браузера. А уж сами технические работники, ответственные за поддержание этой виртуальной инфраструктуры, и так знают, сколько они потратили усилий и средств на ее развертывание.
- http://www.ulteo.com/home/en/ovdi/openvirtualdesktop/downloadnow.
- http://www.cendio.com/seamlessrdp.
- http://www.ulteo.com/main/downloads/ulteo-ovd-win.php.