В Интернете или в местном книжном магазине можно найти массу инструкций по тому, как именно устанавливать и использовать службы терминалов. Но вот чего явно не хватает во многих из этих мест, так это информации о том, как наилучшим образом предоставлять удаленные приложения пользователям. С минимальными усилиями, можно быстро развернуть в своей среде сервер терминалов, размещающий набор необходимых приложений. Но сделать это образом, соответствующим ожиданиям пользователей, определенно требует немного больших умственных усилий.
Тем, кто является администраторами серверов терминалов, стоит ненадолго оторваться от своей инфраструктуры удаленных приложений и подумать о следующем: как у них развертываются приложения? Передают ли они их пользователям с помощью удаленных рабочих столов, или приложений TS RemoteApp? Получают ли пользователи доступ к своим приложения через статические файлы протокола удаленного рабочего стола (RDP), веб-страницу или ярлыки на рабочем столе?
В конечном итоге, как они оценивают обслуживание, предоставляемое их пользователям, когда те используют приложения служб терминалов? Теперь, когда улучшения служб терминалов доступны в Windows Server 2008, наилучшие ответы на эти вопросы могут оказаться неожиданными.
До свиданья, рабочие столы, здравствуйте, приложения RemoteApp
Windows Server 2008 делает администрирование служб терминалов несколько менее неприятным, через существенно расширенный набор служб и возможностей. Список новинок и изменений обсуждался в номере журнала TechNet Magazine за ноябрь 2008 года, где Джошуа Скнолл (Joshua Schnoll) подробно описал новые функции, даваемые переходом на Windows Server 2008 ("Presentation Virtualization with Enhanced Terminal Services («Виртуализация презентаций с помощью усовершенствованных служб терминалов»)"). Возможно наиболее значительной из этих функций является возможность сервера терминалов развертывать для пользователей отдельные приложения, а не целые рабочие столы.
Именуемые TS RemoteApps («Удаленными приложениями служб терминалов»), эти отдельные приложения представляются пользователям, как если бы приложение было установлено прямо на их локальных компьютерах. Когда пользователь щелкает RemoteApp для его запуска, он видит на своем компьютере лишь само приложение. Лишнее поле «Пуск» или двойной рабочий стол не лезут в глаза, делая очевидным взаимодействие с не-локальной системой. В зависимости от реализации и ожиданий пользователей, RemoteApp может быть лучше развертывания целого рабочего стола, просто потому, что оно заставляет приложение казаться нормальной частью локального рабочего стола.
В Windows Server 2008, создание нового TS RemoteApp – простой процесс, использующий консоль диспетчера TS RemoteApp, которую можно найти в административных средствах. Щелчок ссылки добавления программ RemoteApp в области действий запускает RemoteApp Wizard, который допрашивает хранилище инструментария управления Windows (WMI) служб терминалов, чтобы получить список потенциальных приложений, уже установленных на сервере. Пример такого списка показан на рис. 1.
Рис. 1. Мастер RemoteApp перечисляет приложения, установленные на сервере терминалов
Выберите из списка те приложения, которые желаете создать как RemoteApps и щелкните «Далее». Если желаемое приложение недоступно, щелкните кнопку «Обзор» и найдите его основной файл EXE. Это будет файл EXE, обычно используемый для запуска приложения. Завершите работу мастера и удаленное приложение готово к развертыванию.
Если щелкнуть свойства нового RemoteApp правой кнопкой мыши, можно увидеть, что некоторые варианты можно изменить. Помимо возможности модифицировать информацию о имени, расположении, значке и псевдониме, здесь также можно вводить аргументы командной строки. Это удобно для приложений, требующих, для правильного функционирования, набор аргументов во время запуска, но это также можно использовать в сочетании с некоторыми приложениями для создания ссылок на удаленное содержимое.
Что не осознается многими администраторами немедленно, так это факт того, что переход на TS RemoteApp позволяет не только просто представлять приложения на экране пользователя. Немного ловкости рук – и RemoteApp можно использовать также для автоматического запуска предварительно настроенного содержимого.
Например, предположим, что, вместо развертывания приложения для пользователей, необходимо развернуть конкретный документ. Вместо создания RemoteApp, дающего, например, ссылку на пустое приложение Microsoft Office Word или Access, стоит подключить их к конкретному документу Word или базе данных Access. В подобных случаях, это можно сделать, введя имя данного документа как аргумент, после основного EXE приложения. Таким образом, если требуется создать подключение к своей базе данных Access 2007 по времени оплачиваемого отдыха, хранящейся в \\fileServer\fileShare\CompanyPTO.accdb, просто создайте новое RemoteApp, именуемое "PTO Database" и введите расположение документа как аргумент командной строки. Теперь, когда пользователь дважды щелкает для запуска приложения этой базы данных, он будет автоматически направлен к Access, где данная база уже загружена заранее.
Как можно увидеть, создание подключений к удаленному содержимому является еще одним способом расширения полезности RemoteApps. Но в случае всех RemoteApp, пользователям все так же необходимо представлять ссылки на значки, для начала работы. В следующих разделах я рассказу о нескольких способах, которыми службы терминалов Windows Server 2008 делают это.
Запуск приложений из сети
Новая служба роли веб-клиента служб терминалов позволяет размещение ярлыков приложений на предварительно настроенной веб-странице. Эта служба роли интегрируется с серверами терминалов в среде, для предоставления единого местоположения, в котором пользователи могут найти и запустить свои приложения. На рис. 2 показано, как эту веб-страницу видят пользователи.
Увеличить
Рис. 2 Веб-страница веб-клиента служб терминалов перечисляет развернутые RemoteApps
Для создания такой страницы, установите роль веб-клиента служб терминалов на существующий сервер IIS и добавьте учетную запись компьютера для сервера веб-клиента служб терминалов к глобальной группе компьютеров веб-клиента служб терминалов в домене. Отметьте, что для небольших сред веб-клиент служб терминалов можно установить на существующий сервер терминалов для односерверного решения.
После установки RemoteApp, включение его для веб-клиента служб терминалов выполняется путем щелчка правой кнопки мыши на настроенное RemoteApp в диспетчере TS RemoteApp и выбора «Показать» в веб-клиенте служб терминалов. Пользователи с версией 6.1 или более поздними клиента удаленного рабочего стола, могут перейти на http://serverName/ts, чтобы просмотреть список ярлыков приложений. Щелчок на любой из представленных ярлыков автоматически запускает RemoteApp.
Веб-клиент служб терминалов является простым способом предоставления удобного интерфейса для поиска и запуска приложений. Оно особенно полезен, когда приложения или версии меняются регулярно; обновление веб-узла состоит в простом скрытии ссылки на старое приложение или версию в веб-клиенте служб терминалов, с последующей демонстрацией новой ссылки, после установки нового.
Но у этого средства существуют некоторые ограничения. Во-первых, у него нет встроенного механизма для ограничения того, к каким приложениям может получить доступ пользователь. Любое RemoteApp, созданное на сервере терминалов и сделанное видимым в веб-клиенте служб терминалов, будет видно любому пользователю, подлинность которого проверена.
Вторая проблема обычно состоит в способе, которым пользователи обычно работают с их приложениями. Много ли людей действительно щелкают на ярлык, когда желают запустить приложение, вроде Word? Побьюсь об заклад, что не очень. Более вероятен двойной щелчок по существующему документу Word, чтобы запустить приложение с уже загруженным документом.
Увы, веб-клиент служб терминалов не поддерживает этот метод запуска приложений. Для тех, кто привык дважды щелкать документы, чтобы запустить связанное приложение, веб-клиент служб терминалов может не быть приемлемым решением. Но бояться нечего, так как ниже допускается другой, гораздо более полезный вариант для этой ситуации.
Запуск приложений с рабочего стола
Для пользователей, желающих запускать приложения двойным щелчком по их документам, службы терминалов теперь предоставляют возможность «устанавливать» ссылку на удаленное приложение прямо на рабочий стол. Этот процесс, по сути, помещает файл RDP RemoteApp в пакет установщика Windows (файл MSI), который затем устанавливается на рабочие столы в среде.
В то же время, установленный MSI может изменить ассоциации расширений файлов на рабочем столе, чтобы перенаправить дважды щелкнутый файл к связанному с ним RemoteApp на сервере терминалов. Рис. 3 показывает, как были изменены ассоциации расширений файлов на клиентской системе, после установки RemoteApp Word. Теперь двойной щелчок на любой из файлов в типичных разрешениях Word запустит Word через подключение удаленного рабочего стола.
Рис 3. Ассоциации расширений файлов были изменены, для запуска подключения удаленного рабочего стола
Чтобы создать пакет установщика Windows из существующего RemoteApp, сперва перейдите к диспетчеру TS RemoteApp. Щелкните правой кнопкой мыши интересующее RemoteApp и выберите («Создать пакет установщика Windows»). По умолчанию, все созданные пакеты установщика хранятся в C:\Program Files\Packaged Programs, но это местоположение может быть изменено изнутри мастера RemoteApp. Также настройте внутри мастера имя и порт сервера, который разместит RemoteApp, а также параметры проверки подлинности сервера, сертификатов и шлюза служб терминалов.
Параметры, относящиеся к расположению приложения после установки на претендующем рабочем столе, показаны на рис. 4. Как можно заметить, на рабочем столе возможно создать ярлык также и к расположению внутри папки меню «Пуск». Наиболее важный флажок на экране находится в самом низу. Это флажок для переопределения параметров клиента и он переносит любые ассоциации расширений файлов для RemoteApp с локального рабочего стола на сервер терминалов. Этот флажок необходимо выбрать, если требуется дать пользователям возможность запускать размещенное на сервере терминалов приложение двойным щелчком по его документам. Щелкните «Далее» и «Готово» для завершения работы мастера.
Рис. 4. Создание пакета установщика Windows делает возможной ассоциацию с приложением расширений файлов клиента
Что очевидно, положительная сторона использования установок рабочего стола для подключения пользователей к приложениям состоит в том, что они не требуют изменения поведения пользователей. После того, как приложения установлены, пользователи могут дважды щелкать документы для запуска приложений, как они это делали всегда.
Однако, у этого подхода есть и своя отрицательная сторона, в форме лишнего администрирования рабочих столов. Каждое RemoteApp, используемое таким образом, должно быть установлено на каждый рабочий стол, требующий доступа. Этот процесс упрощается установкой ПО с помощью групповой политики (о котором будет рассказано далее), но он все же остается дополнительной головной болью при управлении. Кроме того, когда приложения меняются, вероятно, что необходимо будет также обновить установленные RemoteApp на каждом рабочем столе.
После того, как создан пакет установщика Windows, настроить процесс установки ПО с помощью групповой политики несложно. Сперва, создайте общий файловый ресурс, к которому может получить доступ групповая политика. Хорошим местом для него, в сценарии единственного сервера терминалов, может быть папка по умолчанию C:\Program Files\Packaged Programs на сервере терминалов. Убедитесь, что папке и общему ресурсу были должным образом выделены права, чтобы клиенты могли получать доступ к последнему в ходе обработки групповой политики. Далее, создайте новый объект групповой политики (GPO) и перейдите к Computer Configuration|Policies |Software Settings|Software installation. Щелкните правой кнопкой мыши Software installation и выберите New|Package. В появившемся диалоговом окне найдите файл MSI, созданный для RemoteApp. При запросе метода развертывания, выберите Advanced («Расширенный»).
В этот момент имеется выбор. Поскольку приложения RemoteApp – это чрезвычайно маленькие установки, устанавливающие почти что одни файлы RDP и значки в папку C:\Program Files\RemotePackages, то может потребоваться выбрать параметр Uninstall this application when it falls out of scope of management («Удалить это приложение, когда оно выпадает из области управления»). Благодаря выбору этого параметра, каждый раз, как объект групповой политики удаляется или компьютер переносится в новое подразделение, где объект групповой политики более не применим, RemoteApp будет автоматически удалено с компьютера. Включение этого параметра делает процесс удаления RemoteApp, по мене того компьютеры и приложения, входят и выходят из области управления, очень простым.
Взаимодействие с пользователем
Развертывание приложений через любой из этих механизмов – это хорошо, но администрирование служб терминалов не сводится к созданию и развертыванию приложений. В равной мере важно гарантировать, что реализация удовлетворяет потребности пользователей. В любых рассуждениях о доставке приложений важно выбрать субъективный показатель производительности, для измерения качества обслуживания пользователя. Эффективное развертывание служб терминалов должно рассматривать общее удовлетворение пользователей, как меру успеха, хотя его и сложно оценить через строгие цифровые показатели.
Можно пояснить, что пользователи могут причинить массу беспокойств, особенно когда они совместно используют ресурсы на одном и том же сервере. С помощью служб терминалов, несколько пользователей собираются на одном сервере, чтобы поделиться приложениями, установленными на этом сервере. Сведение больших чисел пользователей на небольшое число серверов упрощает управление приложениями, путем уменьшения числа приложений. Меньшее число приложений для управления, означает меньше исправлений, более контролируемую среду и меньше административных точек соприкосновения.
Такая консолидация пользователей требует от администратора сервера терминалов выполнения роли системной няньки. Успешный администратор управляет фермой сервера терминалов, наблюдая за поведением пользователей и внося изменения упреждающе. Изменения прибывают как перенастройки и блокировки, гарантирующие, что плохое поведение одного пользователя не скажется на других пользователях.
В качестве примера, эффективные администраторы серверов терминалов настраивают предупреждения производительности на уведомление их о том, когда использование ресурсов процессора подскакивает и остается на высоком уровне. Такое поведение часто указывает, что процесс забрал ресурсы процессора или что пользователь инициализировал действие, использующее слишком много ресурсов на общей системе. Отслеживание и ликвидация виновного процесса – лишь первый шаг в разрешении инцидента. Обнаружение того, почему процессор повел себя так, как он повел, является долговременным решением проблемы.
В таких ситуациях идея заключается в том, чтобы гарантировать как минимум настолько же хорошую работу удаленного приложения, как та, что ожидается от него на локальном компьютере. Боковая панель «Ключевые счетчики производительности служб терминалов» освещает некоторые показатели PerfMon, которые могут направить администратора в нужную сторону.
RemoteApp = предсказуемая производительность
RemoteApp, по сути, является сеансом служб терминалов, в котором ширина и высота сеанса идентичны таковым для запускаемого приложения. Результат состоит в том, что удаленное приложение кажется локальным, поскольку граница сеанса никогда не выходит за границу самого приложения.
Реализация RemoteApp от Майкрософт, на самом деле, существенно хитрее, чем можно предположить по предыдущему объяснению. Развернутое RemoteApp не идентично развернутому рабочему столу, с точки зрения ресурсов, необходимых, чтобы привести его в рабочее состояние. Запуск удаленного рабочего стола требует создания экземпляра explorer.exe, для управления оболочкой рабочего стола, плюс всеми процессами, настроенными на пуск с помощью explorer.exe, такими, как приложения панели задач, вспомогательные приложения или любые службы или процессы, сопровождающие стандартный рабочий стол.
По контрасту, запуск RemoteApp не требует полной оболочки explorer.exe или надстроек. По факту, RemoteApps заменяет explorer.exe на два других процесса, именуемых rdpshell.exe и rdpinit.exe. Именно эти два облегченных процесса, работающие как альтернативная оболочка и приложение входа оболочки, используются для загрузки RemoteApp.
Рис. 5 показывает упрощенный пример сервера терминалов, где два пользователя подключились и запустили приложение калькулятора. User1 подключился через полный рабочий стол, тогда как User2 подключился к заранее созданному экземпляру RemoteApp calc.exe. Хотя можно отметить, что у пользователя User2 имеется большее число рабочих процессов, требуемых для запуска RemoteApp калькулятора, общая сумма памяти, используемой этими процессами, меньше требуемой для оболочки проводника User1, как можно увидеть на рис. 6.
Рис. 5. Диспетчер задач показывает различие в использовании ресурсов между рабочими столами и RemoteApp
Рис. 6. Примеры использования памяти |
Работающие процессы | Пользователь User1 – полный рабочий стол | Пользователь User2 – RemoteApp |
Explorer.exe | 7064 КБ | n/a |
Tasking.exe | 1792 КБ | 1704 КБ |
Dwm.exe | 588 КБ | 516 КБ |
Rdpclip.exe | 1032 КБ | 908 КБ |
Calc.exe | 648 КБ | 716 КБ |
Rdpinit.exe | n/a | 860 КБ |
Rdpshell.exe | n/a | 828 КБ |
Всего | 11124 КБ | 5532 КБ |
Это уменьшенное потребление ОЗУ является лишь частью вопроса производительности. Также следует рассмотреть влияние поведения пользователя на использование процессора. Когда пользователь развертывается с полным рабочим столом, ему, по сути, дается возможность запускать любое приложение, установленное на сервере терминалов.
Если нет должны блокировок, то «легкий» пользователь, использующий службы терминалов для написания документов в Word, может, в любой момент, стать «тяжелым пользователем», запустив другое, более мощное приложение с более высокими затратами ресурсов. Эта непредсказуемость поведения затрудняет планирование выделения ресурсов на каждого пользователя. Она также усложняет администрирование сервера терминалов, повышая вероятность того, что поведение одного пользователя скажется на обслуживании других пользователей.
Нет, пожалуй, лучшего примера такой непредсказуемости, чем Internet Explorer. Установленное на каждом экземпляре Windows Server, это приложение обычно не требует особых ресурсов для работы. Но когда Internet Explorer используется для визуализации плохо написанного веб-узла, требующего многочисленных надстроек, использование им ресурсов может существенно возрасти. Пользователь, который неожиданно и неверным образом запускает Internet Explorer, находясь в сеансе рабочего стола, может случайно потребить чрезмерные ресурсы на сервере терминалов, понижая производительность прочих пользователей.
По контрасту с полными рабочими столами, структура RemoteApp обычно делает их более предсказуемыми в использовании ресурсов. Пользователь, запускающий RemoteApp, может работать только с этим конкретным приложением и другими, порожденными первоначальным приложением. Таким образом, поведение пользователя имеет тенденцию быть более предсказуемым с точки зрения производительности.
У нас есть выбор
В конечном счете, цель этой статьи состоит в информировании читателей о вариантах, которые они могут выбрать для развертывания удаленных приложений своим пользователям. Новые функции, доступные в службах терминалов, Windows Server 2008, предоставляют пользователям несколько путей подключения к приложениям. Какая-то комбинация размещения на рабочих столах и размещения в сети плюс полных рабочих столов и RemoteApp будет верной конфигурацией для их индивидуальных сред.
Ключевые счетчики производительности служб терминалов
Хотя измерение качества обслуживания пользователя часто является субъективной деятельностью, в большей степени включающей личные интервью, чем измерения, существуют некоторые полезные счетчики производительности, снятие показателей которых позволяет определить производительность сервера терминалов – которая влияет на степень удовлетворения пользователей. Следует подумать насчет снятия показателей следующих счетчиков на серверах терминалов:
Память\Доступно МБ Когда показатель этого счетчика скатывается до очень низкого числа, это значит, что процессы на сервере терминалов поглощают значительную часть доступной физической памяти. Низкие числа на нем не обязательно плохи, но в сочетании с большим числом потоков и страниц в секунду, они могут означать, что слишком много пользователей пытаются предпринять слишком много действий на одном сервере терминалов.
Память\Страниц в секунду Этот счетчик относится к темпу, с которым память считывается с диска или записывается на диск. Большое число здесь, в сочетании с малым объемом доступных МБ, может означать, что доступной памяти недостаточно для нагрузки, возлагаемой на сервер, что может привести к плохому обслуживанию пользователей.
Процессор\% загруженности процессора Этот счетчик, по сути, показывает, какая часть ресурсов процессора уходит на продуктивную работу. За этим показателем следует следить внимательно, особенно в многопроцессорных системах, поскольку он может указать зависший или перегруженный процессор.
Система\Потоки Каждый процесс, выполняемый сервером, состоит из ряда потоков. Показатель счетчика потоков – это целое число, представляющее общую сумму для всех процессов в системе. У служб терминалов обычно имеются высокие показатели потоков и процессов, из-за количества людей, одновременно использующих ресурсы системы. Когда этот показатель становится высок, разумно предположить, что кто-то пытается выполнить большое число действий на сервере. Высокое число потоков часто ведет к высокому числу переключений контекста, поскольку сервер пытается удовлетворить нужды каждого процесса.
Система\Переключений контекста в секунду Переключение контекста происходит каждый раз, как процессор меняет обрабатываемый в настоящий момент поток. С каждым переключением потока связаны небольшие издержки, так что большое число здесь (как и в случае большого числа потоков) может означать что много пользователей пытаются выполнить много действий одновременно.
Система\Длина очереди процессора Когда процессор не справляется с нагрузкой, запросы начинают выстраиваться в очередь. Счетчик для нее именуется длиной очереди процессора. Когда его показатель велик, можно предположить, что процессоры сервера перегружены запросами – что может также указать на удар по обслуживанию пользователей.
Службы терминалов\Активные сеансы и службы терминалов\Общее число сеансов Эти два показателя могут помочь в эффективной оценке использования ресурсов по сравнению с числом пользователей, работающих на сервере терминалов. Первый счетчик подсчитывает пользователей, активно работающих с сеансом, а второй счетчик включает простаивающих или отключенных пользователей. Эти два счетчика, в сочетании с другими, полезны тем, что помогают определить максимальное число пользователей, с которыми сервер может справиться, прежде чем стать перегруженным, что понижает качество обслуживания пользователей.
Реальные числа, которые можно увидеть, будут зависеть от компоновки оборудования, установленных приложений, а также числа и типа пользователей в системе. Предоставление точных чисел в качестве порогов может, в силу этого, ввести в заблуждение. Вместо этого следует искать вариации в собственных числах или случаи, когда показатели далеки от их нормальных значений, в качестве первоначальных указаний на то, когда обслуживание пользователей может быть плохим.