Практический пример реализации тонкого клиента

Как все начиналось,
или Неповоротливый клиент

Организация, где я работаю системным администратором, для обеспечения своей
коммерческой и хозяйственной деятельности на протяжении ряда лет использовала
сетевую бухгалтерскую систему "1С:Предприятие" (версии 6.0). Количество
отдельных бухгалтерских баз росло пропорционально количеству подразделений непрерывно
трансформирующегося предприятия. Помимо этого, каждые шесть месяцев "закрывались"
для модификации старые базы, а бухгалтерские "остатки" переносились
в новые. Делалось все это только с одной целью — для ускорения функционирования
программы. В результате работа с отдельными базами несколько ускорялась, но порой
приходилось подолгу разыскивать ту или иную бухгалтерскую операцию в полусотне
отдельных баз. Других преимуществ, кроме некоего иллюзорного выигрыша в скорости,
в таком подходе увидеть невозможно. А при запланированном переходе на новую версию
программы "1С:Предприятие 7.7" ожидать какого-либо прироста производительности
и вовсе не приходилось.

Дополнительным ограничением в быстродействии программы являлись более чем скромные ресурсы отдельных рабочих станций. Парк вычислительной техники закладывался давно, и то, что мы сегодня имеем в качестве рабочих мест (общим количеством более ста), так и хочется назвать "зоопарк": начиная от младших моделей на базе Pentium 75 и до более современных систем на базе Pentium III 550 MHz. О полной замене ПК "преклонного возраста" говорить не приходилось — не прошел срок их амортизации. Все, что можно было предпринять, основываясь на выделенном бюджете, — усовершенствовать младшие модели до уровня WinChip-200 и оснастить их дополнительной памятью. Прямо скажем: WinChip-200, 96 MB RAM и 550 MB HDD — хорошо, но совсем не густо, даже по меркам начала 1999 г.

Кроме того, примерно через три-четыре месяца после начала эксплуатации очередной базы возникали другие проблемы — "ошибка таблицы базы данных", а в результате — аварийное отключение всех пользователей и полная переиндексация базы, которую приходилось делать мне, так как цифровой код ошибки рядовому бухгалтеру не говорил ровным счетом ничего. И так почти каждый день. Нужно было что-то делать. Дополнительным шагом по обеспечению "устойчивости" обновленных рабочих станций стало полное вытеснение 16-битовой ОС Windows 3.11 новой Windows 95 и затем, минуя Windows 98, переход на 32-битовую платформу Windows NT Workstation 4.0. Увы, на этом путь экстенсивного развития вычислительной среды оказался полностью пройденным. Следовало что-то менять принципиально.

Сетевая конфигурация "1С:Предприятия" с файловой моделью доступа к базе данных не давала надежд на какой-либо успех. В качестве возможного варианта стоило рассмотреть переход с идеологии "файловый сервер" на "клиент-сервер", т. е. в случае "1С:Предприятия" — на SQL-версию. Благодаря сокращению сетевого трафика и переносу части вычислительной нагрузки на SQL-сервер я мог рассчитывать на определенный прирост производительности, но ограниченность ресурсов рабочих станций все еще заметно влияла бы на скорость отдельных вычислений. Перенос всех вычислительных затрат на сервер — вот что мне необходимо, тонкий клиент, т. е. превращение рабочих станций в эквивалент GUI-терминалов.

Тонкие Windows-клиенты,
или Решения от Microsoft и Citrix

Идея реализации тонкого клиента заставила меня обратить внимание на новинку
1998 г. от Microsoft — Windows NT 4.0 Terminal Server Edition (WTSE). История
появления WTSE, как оказалось, весьма удивительна, и следует сказать об этом несколько
слов.

После выпуска в 1995 г. компанией Microsoft усовершенствованной версии Windows
NT Server 3.51 с целью расширения функциональных возможностей последней компания
Citrix Systems приобретает
у Microsoft лицензию на эту ОС. В результате работы, проведенной в Citrix, в августе
1995 г. на свет появился новый продукт — WinFrame.

Чем же хорош WinFrame, кроме того, что это модифицированный вариант Windows NT Server 3.51? Новшество от Citrix позволило превратить традиционную однопользовательскую операционную систему в многопользовательскую, предоставляющую терминальный доступ к GUI-интерфейсу Windows с разнообразных по своей архитектуре и производительности клиентов. Эта система, реализуя идею X-терминала, но не используя для этого X-протокол, позволяла запускать Windows-приложения на сервере WinFrame и отображать информацию на удаленных клиентах, которые взаимодействовали с сервером с помощью нового протокола ICA (Independent Computing Architecture). "Независимая архитектура вычислений" от Citrix в качестве транспортного протокола задействовала любой из доступных в сети стандартных протоколов: TCP/IP, NetBEUI, IPX/SPX.

Системные требования
к Windows NT Server 4.0 Terminal Edition

Сервер:
процессор Pentium 200 MHz; 32 MB ОЗУ плюс дополнительно 4—8 MB для каждого
пользовательского сеанса; 175 MB дискового пространства для файлов операционной
системы; видео VGA;
CD-ROM; одна или более сетевых плат; поддержка сетевого протокола TCP/IP.
Клиент: Windows-терминал или PC с процессором
i386; ОС Windows for Workgroups или более поздняя версия; 4 MB ОЗУ; 4 MB
дискового пространства; сетевой протокол TCP/IP; клиент RDP.
Цена:
$1299 за одну серверную лицензию на Terminal Server,
пять клиентских лицензий на Terminal Server и пять клиентских лицензий на
Windows NT Server 4.0.

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

Такие преимущества операционной системы WinFrame, как централизованное управление и администрирование и полная "непритязательность" клиентских мест, в данном случае налицо. Сохраняя все прежние аппаратные средства (включая даже архаичные системы с процессором i286 и MS-DOS), можно было использовать самые современные Windows-приложения вроде MS Office 97 и "1С:Предприятие 7.7 для SQL". А ведь это — именно то, что мне надо!

Но вернемся к истории WinFrame. Успех этого продукта заставил Microsoft задуматься, и она уже не предоставила фирме Citrix лицензии на очередную версию операционной системы Windows NT. Наоборот, она просто выкупила (за 75 млн. долл.) у Citrix Systems лицензию на их идеологию MultiWin, реализующую тонкий клиент для персональных компьютеров, и занялась ее интеграцией в Windows NT 4.0 Server.

Так, летом 1998 г. появился новый продукт — Windows NT 4.0 Terminal Server Edition (WTSE). Функционально WTSE содержит в себе все средства обычной Windows NT Server 4.0 (превратившейся теперь в Standard Edition), дополняя их возможностями WinFrame. WTSE поддерживает стандартный набор протоколов: NetBEUI, TCP/IP и IPX/SPX. Собственно же протокол обмена данными между сервером и клиентами, реализованный Microsoft, называется RDP (Remote Desktop Protocol). Так как на WTSE возлагается нагрузка по выполнению приложений, то он не должен быть контроллером домена (ни PDC, ни BDC). К WTSE могут обращаться RDP-клиенты на базе Win32 (включая Windows CE) и Windows for Workgroups.

Впрочем, не все так просто. Вскоре выяснилось, что приложениям, выполняющимся на WTSE, доступны только серверные диски и принтеры. Как производить обмен данными, накопленными на локальных дисках и дискетах, и что делать с принтерами? Ведь будучи физически удаленным от сервера (пусть даже всего на несколько десятков метров), пользователь, скоре всего, не обрадуется тому факту, что его документ печатается, например, в серверной комнате… Как всегда, существует оборотная сторона медали, которая не афишируется производителем: администратору придется предоставить доступ к локальным принтерам для каждого пользователя — та еще работенка…

Тут опять на сцену выходит Citrix Systems. В июле 1998 г. компания представляет свой новый продукт MetaFrame. После версии 1.0 вскоре появляется очередной релиз с номером 1.8. MetaFrame 1.8 — это серверное расширение Microsoft Windows NT 4.0 Terminal Server Edition, которое обеспечивает его всеми возможностями WinFrame. Но MetaFrame, в отличие от своего предшественника WinFrame, не является полноценной операционной системой.

Экран
Из единой консоли можно управлять
всей "фермой" — и серверами, и клиентами, и опубликованными приложениями

MetaFrame позволяет пользоваться 32-разрядными приложениями Windows вне зависимости
от платформы, оборудования, топологии сети и используемых LAN- и WAN-протоколов.
Поддержка Web-броузеров — так называемый запуск и внедрение приложений (Application
Launching and Embedding, ALE) — реализована как элемент управления ActiveX для
Microsoft Internet Explorer и в виде модуля plug-in для Netscape Navigator. Компонент
ALE превращает Web-броузер в полноценный клиент MetaFrame. Одновременно с выпуском
версии 1.8 были также созданы новые ICA-клиенты для Linux и SCO Unix.

Особенности Citrix MetaFrame 1.8

Клиентские терминалы.
Возможно использование любых клиентов, работающих с Windows, включая Windows
9х, Windows CE, Windows NT Workstation, Windows for Workgroups и Windows
3.x, а также DOS, Unix, Mac OS, Java, OS/2 Warp и большую часть устаревшего
клиентского оборудования.
Сетевые соединения.
Стандартные телефонные линии, WAN-соединения (T1, T3, 56 Kbps, X.25), широкополосные
соединения (ISDN, Frame Relay, ATM), беспроводные соединения, корпоративные
сети и Internet.
Протоколы LAN.
TCP/IP, IPX/SPX, NetBEUI и прямые асинхронные соединения.
Требования к серверу.
Процессор Pentium Pro 200 MHz; 128 MB памяти для работы 32 рядовых или 16
профессиональных пользователей.

Варианты поставки MetaFrame
MetaFrame с базовой лицензией
на 15 пользователей ($4995).

Могут быть закуплены дополнительные пользовательские лицензии на 5, 10,
20 или 50 пользователей (соответственно, $995, 1995, 3990 и $9975).
MetaFrame/Workgroups
— 5-пользовательская версия MetaFrame ($1995) для малых и франчайзинговых
предприятий. Этот пакет нельзя расширить на большее количество пользователей.

MetaFrame/Terminals Software для
ICA Windows-терминалов
и других ICA-устройств ($995).
Пакет
рассчитан на 5 пользователей, можно купить дополнительные лицензии.
WinFrame-to-MetaFrame Migration
Software.
Миграционный пакет
с WinFrame 1.X на MetaFrame ($1495). Миграцию дополнительно установленных
пакетов, таких, как, например, Load Balancing, при этом производить не нужно.

Приложения работают на сервере MetaFrame изолировано друг от друга, но они совместно используют память и прочие вычислительные ресурсы. Главное различие между Terminal Server и MetaFrame связано с протоколами вывода изображений этих продуктов (уровня представления), которые передают действия клиента на сервер для их интерпретации, а результаты работы серверного приложения — клиенту для отображения. Так, в отличие от RDP, протокол ICA поддерживает копирование данных через Clipboard между локальными и удаленными приложениями, обмен файлами между локальными и серверными накопителями, доступ к локальным COM-портам, печать на локальные и серверные принтеры. Возможно даже воспроизведение аудиофайлов на аппаратуре клиента. Передаваемая по сети информация шифруется с помощью алгоритма RSA с 40-, 56- или 128-битовым ключом.

Отличительной чертой ICA-протокола стала его высокая адаптивность к имеющейся полосе пропускания. Так, например, мне известны реализации одновременного удаленного доступа тридцати (!) ICA-клиентов к MetaFrame-серверу, находящемуся в другом географическом регионе, через канал Frame Relay с гарантированной полосой пропускания всего 32 Kbps.

Экран
После публикации приложений
доступ к ним обеспечивается из апплета Program Neighborhood

Еще одним существенным новшеством по сравнению с Terminal Server явилась "публикация"
отдельных приложений, а не всего рабочего стола. Так, например, "опубликованный"
пакет "1С:Предприятие 7.7 для SQL" ни один из пользователей не отличает
от "натуральных" приложений, исполняющихся непосредственно на их ПК.
Опубликованные приложения появляются в окне и минимизируются в панели задач точно
так же, как любые локальные приложения в среде Windows. А традиционная комбинация
клавиш ALT-TAB осуществляет переключение между ними и локальными приложениями.
Административные затраты на подготовку приложений к публикации минимальны — так,
"1С:Предприятие 7.7 для SQL" было опубликовано мною менее чем через
2 минуты после завершения его инсталляции.

Системный апплет Program Neighborhood обеспечивает полный административный контроль доступа к приложениям. Пиктограммы опубликованных на сервере приложений могут автоматически помещаться в Program Neighborhood на стороне клиента, интегрироваться в локальный 32-битовый Windows-терминал или размещаться непосредственно в стартовом меню или на рабочем столе клиента.

Любое нарушение соединения с сервером (по причине разрыва линии связи или из-за сбоя какого-либо приложения, выполняющегося на клиентской машине) не влечет за собой фатальных последствий — следующая сессия будет продолжена с того же места, где оборвалась предыдущая.

Так как MetaFrame-сервер устанавливается поверх Windows NT 4.0 Terminal Server Edition, то доступ к серверу (с ограничениями, оговоренными выше) можно получить, пользуясь клиентским обеспечением Terminal Server, но необходимости устанавливать оба клиента нет — достаточно клиентского обеспечения Citrix MetaFrame. В любом случае, аутентификация пользователя происходит локально на WTSE или любом контроллере домена под управлением Windows NT (если таковой имеется). Дистрибутив ICA-клиента, в зависимости от используемой вами клиентской платформы, занимает не более трех дискет. Впоследствии администратор может настроить режим автоматического обновления клиентского ПО, что избавляет от необходимости повторной инициализации рабочих мест. Режим удаленного управления сессиями (Session Shadowing) позволяет администратору дистанционно контролировать работу пользователей для диагностики проблем или обучения.

В случае использования нескольких серверов MetaFrame, отличающихся по своим техническим характеристикам, рекомендуется применять дополнительный пакет Load Balancing, предлагаемый Citrix для объединения серверов MetaFrame (и WinFrame) в единый кластер — так называемую серверную "ферму" (Server Farm), которая сможет обслуживать сотни и даже тысячи пользователей. Управление "фермой" производится централизованно — конфигурировать и управлять параметрами балансировки нагрузки для всех серверов можно из одного места.

Резюме, или Что из этого получилось

Для развертывания тандема из Citrix MetaFrame 1.8 и Windows NT 4.0 Terminal
Server Edition был выбран сервер IBM Netfinity 5000 с процессором Pentium III
500 MHz, оперативной памятью 920 MB, SCSI-диском 18 GB и сетевой картой 100 Mb.
Инсталляция WTSE была сопряжена с определенными трудностями, связанными с большим
размером диска. Уверения Microsoft о поддержке Windows NT томов размером до 16
EB (264), как оказалось, относятся только к системе, уже обновленной до Service
Pack версии не ниже 4. Так как базовая система Windows NT создавалась в ту пору,
когда нормой считались диски размером не более 1 GB, ее разработчики не могли
предусмотреть того факта, что в процессе инсталляции (т. е. еще до установки Service
Pack 4) могут возникнуть какие-либо проблемы с физическим доступом к дискам большого
размера.

Единственным приемлемым способом установки WTSE на SCSI-диск, общим размером превосходящий 7,8 GB, оказался следующий "обходной маневр". Система была установлена на скромный (всего 2 GB) IDE-диск, а затем перенесена "зеркалированием" на один из разделов SCSI-диска общей емкостью 18 GB. Впоследствии IDE-диск был просто удален, а "зеркалирование" разорвано. Сразу после инсталляции Windows NT 4.0 Terminal Server необходимо выполнить обновление системы — Service Pack 4.0 for Windows NT 4.0 Terminal Server. Ни в коем случае не пробуйте применять Service Pack, предназначенный для Windows NT 4.0 Standard Edition.

Теперь система готова к установке Citrix MetaFrame 1.8. Инсталляция не должна вызвать у опытного администратора никаких проблем. Единственной его заботой остается своевременная активизация лицензий. В течение 35 дней ее следует произвести на Web-узле Citrix или по факсу.

Далее наступает этап инсталляции приложений, регистрации пользователей и последующей передачи сервера в эксплуатацию. После установки на сервере пакета "1С:Предприятие 7.7 для SQL" он был опубликован для ICA-клиентов. (Инициализация SQL-сервера — отдельный вопрос, не имеющий прямого отношения к этой статье.) Хотя приложения и запускаются удаленно, они выглядят, функционируют и управляются таким же образом, как если бы работали непосредственно на терминале. Это позволяет полностью избежать каких бы то ни было затрат на переподготовку пользователей. Единственной задачей для системного администратора остается передача пароля для доступа к опубликованному ресурсу.

На сегодняшний день на внедренной системе одновременно интенсивно работают в среднем около 25 пользователей, использующих только одно серверное приложение. При этом средняя загрузка составляет 5—10%, а пиковая (обычно возникающая только при старте очередного клиента) — до 60%. Скорость выполнения транзакций в приложении одинакова для всех клиентов и не зависит от имеющихся локальных вычислительных ресурсов. Сетевой трафик, генерируемый "1С:Предприятием", существенно уменьшился. Кроме того, значительно снизилась нагрузка на прежний файловый сервер. Отметим, что за прошедшие с начала эксплуатации системы 10 месяцев прежних проблем с нарушением целостности базы данных более не возникало.

Таким образом, внедрение Citrix MetaFrame 1.8 в существующую информационную инфраструктуру позволило выйти предприятию на качественно новый уровень без замены коммуникационной инфраструктуры, существующего компьютерного оборудования и базового программного обеспечения. Правда, без покупки нового сервера не обошлось.

В результате внедрения систем, подобных описанной в данной статье, можно значительно снизить общую стоимость владения (TCO) информационной инфраструктурой предприятия. Что выгоднее — использовать старые машины с MetaFrame-клиентами или купить современные высокопроизводительные ПК? В каждом конкретном случае, полагаю, ответы будут различные. Однако такие значительные преимущества, как централизованное управление и администрирование, а также "тонкость" клиентского программного обеспечения, в данном случае налицо.

Вместо заключения

За последний год появились новые разработки как у Microsoft, так и у Citrix.
Теперь Terminal Services представляет собой стандартный компонент всех серверных
версий Windows 2000. Что, впрочем, не помешало Citrix обновить свое ПО и выпустить
MetaFrame Application Server for Windows 2000 Server.