Модульность обеспечивает более глубокую интеграцию с разнородными средами

Я очень хорошо помню момент, когда сущность IIS 7.0 наконец стала мне ясна как день. Это произошло, когда Билл Стейплс, менеджер подразделения IIS компании Microsoft, сказал: «Мы взяли функциональность IIS 6.0, разбили ее на модули, а затем интегрировали с ASP.NET». Я сразу понял, что в IIS произошли коренные перемены.

Тот, кому приходилось раньше работать с IIS, не может не восхищаться достижениями Microsoft при подготовке IIS 7.0, возможности которой значительно превосходят показатели любой предыдущей версии IIS. Многие из наиболее интересных особенностей новой версии связаны с модульным ядром и интеграцией с .NET. Сперва я хотел просто описать в статье новые компоненты один за другим, но после некоторого размышления решил взглянуть на IIS 7.0 больше с практической стороны.

Получив значительно переработанную версию знакомой программы, я в первую очередь запускаю интерфейс и оцениваю внешний вид новой версии. Такой метод знакомства помогает изучать продукт в применении к конкретным задачам, что особенно удобно для администраторов. Поэтому я начинаю обзор IIS 7.0 с описания нового инструмента Internet Information Services Manager. Следует иметь в виду, что некоторые детали IIS 7.0, представленные в этой статье, могут измениться в официальном выпуске продукта.

Интерфейс IIS Manager

На мой взгляд, интерфейс IIS 6.0 — всего лишь измененная консоль IIS 4.0. Но в версии IIS 7.0 я сразу же воспринял интерфейс IIS Manager (экран 1) как совершенно новое приложение. IIS Manager — полнофункциональный клиент, спроектированный как приложение Winform. Поскольку он не является оснасткой консоли Microsoft Management Console (MMC), для подключения и управления удаленными серверами IIS 7.0 не обязательно применять типовые сетевые средства Microsoft. Связь IIS Manager с Web-службой, которая работает в режиме прослушивания на сервере IIS 7.0, устанавливается через HTTP или HTTP Secure (HTTPS). Разумеется, службу можно настроить на защиту, ограничение или блокирование удаленных соединений.

В левой панели IIS Manager, Connection Manager, отображаются все серверы IIS 7.0, к которым подключается IIS Manager. Для простоты использования соединениям можно дать имена (по умолчанию назначается имя сервера). В нашем случае имя соединения — ITProMagazine. Имя сервера — LH-63X2OGRFBG2F, как показано в верхней части центральной панели.

Пиктограммы и описания в центральной панели IS Manager отражают новый способ группировки свойств и параметров. Исчезли знакомые, но довольно странно организованные вкладки IIS 6.0. IIS 7.0 — более сложное решение, поэтому число параметров значительно увеличилось, и, в отличие от прежних версий IIS, показан каждый из них. Режим отображения Name и Description можно переключать, чтобы вывести на экран представление Detail (экран 1), Icons, Tiles или представление List.

Экран 1. Интерфейс IIS Manager

IIS Manager обеспечивает гибкую фильтрацию для отображения только тех параметров, которые нужны администратору. Можно щелкнуть на одном или нескольких элементах в полях Areas и Categories, чтобы моментально удалить из списка все параметры, кроме указанных.

Ориентация на задания

Если щелкнуть на имени сервера, а затем на Sites, то, глядя на экран IIS Manager, администратор почувствует себя как дома: древовидное представление сайтов в панели Connection Manager и список Web-узлов в центре. Справа находится раздел Tasks со списком типовых действий. Элемент All Properties задания Edit Site — один из самых полезных; с его помощью можно быстро напрямую отредактировать любой параметр, без перемещения по нескольким экранам.

В окне All Properties (экран 2) можно редактировать все свойства для любого выбранного элемента. В данном примере параметру Log File (создание журнала) присвоено значение Daily (ежедневно). Чтобы изменить этот параметр, достаточно выделить пункт Sites, щелкнуть на All Properties и отыскать нужный элемент в окне All Properties.

Экран 2. Редактирование свойств любого элемента

Новая метабаза

До сих пор речь шла об улучшениях, внесенных в существующие компоненты IIS. Но в IIS 7.0 появились и впечатляющие новшества. Если щелкнуть правой кнопкой мыши на Web-узле в панели Sites и выбрать Connect to Site Configuration (web.config), появляется новый элемент Default Web Site (экран 3). С его помощью можно редактировать параметры и контент Web-узла, выбираемого по умолчанию. Возникает вопрос: почему параметры можно редактировать в двух местах?

Экран 3. Новый элемент Default Web Site

При создании и настройке узлов на уровне Sites в новой версии IIS изменения будут записываться в новое хранилище данных, именуемое ApplicationHost.config. Этот текстовый XML-файл заменяет старую метабазу IIS. ApplicationHost.config легко читается, хорошо организован и полностью настраивается с помощью набора объявленных API, облегчающих подготовку программного кода для создания Web-узлов и управления ими. Как и в случае с метабазой, администраторам не приходится то и дело напрямую редактировать ApplicationHost.config. В частности, это связано с тем, что все свойства IIS и многие свойства ASP.NET можно настраивать в IIS Manager.

В дополнение к использованию ApplicationHost.config, параметры конфигурации IIS можно хранить в файле web.config, который находится в корневой папке Web. Например, в файле web.config можно назначить Web-узлу уникальную страницу по умолчанию. Затем, если скопировать контент на новый сервер, параметр по умолчанию перемещается (с файлом web.config) вместе с контентом. IIS 7.0 распознает этот параметр и считывает изменения (с позволения администратора). Расширив эту концепцию делегирования почти на любые параметры Web-узла, можно представить себе мощь этих функций. Отныне необязательно быть администратором, чтобы управлять конфигурацией Web-узла. Конечно, администратор может запретить использование любых параметров web.config, и по умолчанию делегирование запрещено.

Теперь понятно, почему на экране 3 показано два узла Default Web Site. При редактировании на уровне Site редактируется файл ApplicationHost.config. При «подключении» к узлу Default Web Site и правке результирующего узла редактируется файл web.config. Очень удачное решение.

Новые функции безопасности

Примечательное новшество — функции безопасности IIS 7.0. Впервые пользовательские учетные записи можно создавать в графическом интерфейсе IIS! Кроме того, будет реализована интеграция IIS 7.0 с .NET Role Providers в Windows Vista и следующей версии Windows Server (условное название Longhorn). Поэтому в качестве хранилища данных для пользователей необязательно применять локальную SAM или Active Directory (AD). IIS может аутентифицировать пользователей, чьи данные сохранены в базе данных Microsoft SQL Server или другом хранилище, для которого имеется провайдер.NET.

Благодаря интеграции IIS 7.0 и .NET, механизм .NET Forms Authentication может использоваться как один из встроенных компонентов IIS 7.0. В прошлом он был доступен только из приложений .NET, но теперь Forms Authentication может быть активизирован для любого языка программирования, совместимого с IIS, а также статического контента.

Объединение Role Providers с Forms Authentication открывает потрясающие возможности. Например, можно задействовать ASP.NET Forms Authentication для аутентификации пользователей приложения PHP Hypertext Preprocessor (PHP) при доступе к базе данных DB2. Для решения этой задачи в приложение не требуется вставлять специальный программный код.

Ограниченный объем статьи не позволяет описать все усовершенствования IIS 7.0 в сфере безопасности, но одно из наиболее многообещающих — фильтрацию запросов — упомянуть стоит. Фильтры URLScanstyle встроены в интерфейс IIS.

Диагностика и отладка

Администраторы серверов остро заинтересованы в любых средствах, которые помогут им обнаружить неполадки и разобраться с ними. Им бы хотелось просто щелкнуть кнопкой мыши на пуле приложений и увидеть все выполняемые запросы и длительность их выполнения. Теперь это возможно.

Экран 4. Окно Worker Processes

В любое время можно обратиться к экрану Worker Processes, который показан на экране 4, из инструмента IIS Manager, чтобы увидеть текущий коэффициент использования памяти, процессора, идентификационный номер процесса и назначение пула приложений для рабочего процесса. В данном примере видно, что пул потребляет слишком много ресурсов процессора. Чтобы увидеть все запросы, одновременно обрабатываемые в рабочем процессе, назначенном данному пулу, можно щелкнуть правой кнопкой мыши и выбрать пункт View Current Requests. В примере на экране 5 test.asp выполняется на узле Site 1, и для его обработки потребовалось 28 111 миллисекунд.

Экран 5. Окно Requests

Администраторам, знакомым с функциями трассировки IIS 6.0 Service Pack 1 (SP1), будет приятно узнать, что они сохранены и расширены в IIS 7.0. Трассировка в IIS 7.0 (и IIS 6.0 SP1) отличается от аудита и трассировки в приложениях ASP.NET. Группа разработчиков IIS встроила сотни «событий», которые можно записывать в журналы трассировки.

Активизировать и настроить трассировку просто. Достаточно указать событие, связанное с URL, которое должно запускать трассировку, и провайдеров, для которых следует составлять отчет, записывая события в журналы Failed Event Request. Например, можно вести трассировку всех событий аутентификации, связанных с http://servername/problemapp.aspx, всех ошибок HTTP 500 для любого контента или событий для сценариев .php, выполнение которых занимает более 10 секунд.

Завершив настройку трассировки, IIS автоматически генерирует журналы трассировки и помещает их в папку inetpubfaildreqlogfilessite id number. Журналы трассировки хорошо организованы, а некоторые и заранее отформатированы для удобства чтения. Процесс трассировки событий в IIS 7.0 — полностью масштабируемый.

«Волшебные» модули

Переходим к самому важному. Как правило, для активизации и отмены функций в IIS следует устанавливать и сбрасывать флажки или задавать свойства иным способом. Функции IIS 7.0 распределены более чем по 40 модулям. Если компонент не используется (например, Digest Authentication), то его можно просто удалить из IIS 7.0 (экран 6).

Экран 6. Интерфейс Modules

Аналогично, добавляя модули, можно расширить возможности IIS 7.0. Благодаря такой функциональности можно оптимально настроить серверы на выполнение конкретных задач. Кроме того, IIS 7.0 можно дополнить новыми функциями. Например, загрузить модуль, который будет добавлять верхние и нижние колонтитулы к каждой странице Web-узла. Изменения моментально применяются ко всем страницам всех сайтов, без необходимости изменять первоначальный исходный текст. Иногда нужно аутентифицировать IIS 7.0 в старой внутренней системе с «уникальным» протоколом аутентификации. Чтобы это сделать, программисты могут построить модуль с управляемым (.NET) или собственным (C++) кодом. Можно добавить специальные функции сжатия, протоколирования, безопасности, мониторинга и любые другие.

Модули можно загружать на уровне Web-сервера или в Web-узлы через файл web.config. Элементы настройки модулей можно хранить в файле web.config и копировать вместе с Web-контентом.

Таким образом, можно построить полностью самостоятельный Web-узел с полностью переносимыми прикладным исходным текстом, правилами безопасности, структурой Web-узлов и контентом.

Когда и где

В отличие от реализации IIS в Windows XP Professional, версия IIS 7.0 для Windows Vista не будет ограничена одним Web-узлом. Поэтому разработчикам гораздо проще строить приложения, предназначенные для развертывания на нескольких Web-узлах. Число соединений по-прежнему ограничено (не более 10, в зависимости от версии Windows Vista).

IIS 7.0 предназначен для Windows Vista и Longhorn. Компания Microsoft планирует выпустить Windows Vista в 2006 г., а Longhorn — в 2007 г. В настоящее время не планируется выпускать IIS 7.0 для других версий операционной системы. На первый взгляд это далекие сроки, но пройдет совсем немного времени, и программисты смогут начать работать с IIS 7.0 на платформе Windows Vista.

Для специалистов по IIS наступают хорошие времена. Благодаря модульности, IIS 7.0 более тесно интегрируется с разнородными средами через детальную настройку, которую было трудно выполнить в предыдущих версиях. Возможности инструмента IIS Manager не знают равных. Делегирование, диагностика и безопасность существенно улучшились, как и сам IIS Manager, более не ограниченный инфраструктурой MMC.

Бретт Хилл - Специалист по IIS 7.0 и Web-службам в Microsoft, редактор журнала Windows IT Pro. brett@iisanswers.com


Меньше Web-серверов — меньше простоев

Джейсон Корнельер, старший системный инженер компании Ford Motor Company, в беседе со старшим редактором Windows IT Pro Энн Грабб рассказал о том, как благодаря переходу на IIS 6 его компании удалось снизить затраты на приобретение и обслуживание серверов и сократить перерывы в работе пользователей.

Энн Грабб

Джейсон делает акцент на управление. Он отвечает за работу фермы Web-серверов, которые обслуживают корпоративные офисы во всем мире. С тех пор как около трех лет назад Джейсон и его группа перевели Web-серверы на Microsoft Internet Information Services (IIS) 6.0, время безотказной работы Web-серверов заметно увеличилось, аварии стали редкостью. По мнению Джейсона, главная причина успеха — в обеспечиваемом IIS 6 детальном мониторинге использования ресурсов и изоляции приложений, благодаря которым ИТ-служба может следить за функционированием Web-фермы.

Вы отвечаете за работу Web-фермы на базе IIS 6, которая применяется для проектирования, контроля качества и производственного хостинга для внутренних пользователей Ford Motor Company. Сколько серверов в ферме и какие приложения размещаются в ней?

Общая ферма обслуживает более 125 сайтов для всех подразделений компании — в сущности, для всех внутренних сотрудников. Число пользователей превышает 100 тыс., не считая внешних пользователей. Среди сайтов есть как чрезвычайно сложные, с приложениями Active Server Pages (ASP), COM/COM+ и Windows .NET Framework, так и узлы, поставляющие простые HTML-страницы. Типы приложений — самые разнообразные, в зависимости от деятельности подразделения. Контент на отдельных серверах проходит этапы проектирования, контроль качества и приобретает производственный статус в рамках автоматизированного процесса управления документооборотом.

В ферме в целом организована безопасная инфраструктура с высоким уровнем отказоустойчивости и очень быстрым восстановлением после аварий. В результате мы можем развертывать приложения как с низким, так и с самым высоким гарантированным уровнем обслуживания на одной ферме. Мы используем методы активной балансировки сетевой нагрузки (Network Load Balancing, NLB) и обнаружения сбоев контента и располагаем планом резервирования между сайтами и внутри них в случае отказов. И наконец, все серверы работают с внутренним хранилищем NAS, что позволяет свести воедино все хранилища, и нам не приходится дублировать контент на каждом сервере.

Расскажите немного о методах обеспечения высокой отказоустойчивости.

Ферма — база для проектирования, контроля качества и производства — разделена примерно поровну между двумя площадками. На каждой площадке имеются одинаковые аппаратные средства, память и т. д. и используются передовые сетевые технологии для обнаружения сбоев и передачи функций отказавших устройств резервным. Такой подход используется не только для восстановления после отказов и достижения высокой отказоустойчивости, но и при обычном обслуживании. Например, если необходимо применить исправления, мы просто выводим обновляемые серверы из схемы балансировки нагрузки, устанавливаем исправления и возвращаем серверы в ферму. Поэтому модернизация и применение исправлений не приводят к простоям.

Как переход от IIS 5 к IIS 6 повлиял на работу в Web? Принесла ли модернизация выгоду конечным пользователям?

Главное, что с переходом на IIS 6 увеличилось время между отказами. Время бесперебойной работы близко к 100% для всех сайтов, даже самых нестабильных. С помощью IIS 5 нельзя достичь уровня изоляции приложения, который обеспечивает IIS 6.

Еще одно преимущество — значительное увеличение числа сайтов при сокращении единиц оборудования. В первоначальной Web-ферме на базе IIS 5 было более 50 серверов. После перехода на IIS 6 значительно повысилась производительность аппаратных средств, что позволило избавиться более чем от половины серверов. В настоящее время расходы на ферму составляют меньше половины первоначальных. Поддержка аппаратных средств, на которых мы работаем сейчас, в скором времени будет прекращена, и мы заменим их. Благодаря IIS 6 мы сможем еще больше сократить аппаратные средства, одновременно увеличивая число сайтов и добавляя новые функции.

Основной источник экономии — аппаратные средства или другие области, такие как ИТ-операции?

И то и другое. Значимая экономия достигается как путем сокращения аппаратных средств, так и благодаря более эффективной диагностике IIS 6 нашим персоналом. IIS 6 обеспечивает глубокий мониторинг использования и выделения ресурсов, что позволяет выявить сайты с потенциальными проблемами и создать правила автоматической профилактической поддержки для отдельных сайтов. Если на сайте возникают проблемы, можно ограничить их распространение заданием определенного процента ресурсов процессора и памяти. Сайт не может получить больше ресурсов, чем ему выделено, отнимая их у других сайтов. Кроме того, в режиме Worker Process Isolation Mode, реализованном в IIS 6, можно очень быстро идентифицировать все сайты и выяснить, не нарушена ли работа сайта, например, из-за объектов COM.

Какие инструменты и процедуры применяются для защиты Web-фермы?

Приложения запускаются с индивидуальными учетными данными, без конкретного пользовательского контекста. Мы организовали частую смену паролей, и, так как каждый идентификатор применяется в собственном контексте безопасности, гораздо проще сопоставлять полномочия приложений во внутреннем компоненте (например, доступные им данные), чтобы запретить совместное использование данных и доступ к данным друг друга, хотя они находятся на одном сервере. Такая схема безопасности облегчает диагностику, поскольку позволяет идентифицировать сайт, в котором работает процесс, просто взглянув на идентификатор. Кроме того, мы используем Secure Sockets Layer (SSL), как и большинство Web-узлов.

Каковы планы на будущее для Web-фермы и IIS?

IIS — ядро общедоступной среды продуктов Microsoft в нашей компании. Это означает, что мы уверены в высокой степени надежности созданной нами архитектуры, поэтому вместо покупки отдельных серверов для отдельных продуктов — например, выделенного сервера для Microsoft SharePoint Portal Server — мы интегрируем приложения в ферму, которая используется в качестве прикладной платформы Microsoft.

Таким образом, IIS станет основой для решения всех задач, связанных с Web и коллективной работой?

IIS — основа общей прикладной среды Microsoft, и мы реализуем пилотные проекты с новыми инструментами коллективной работы Microsoft. Возможности нашей фермы более чем достаточны для удовлетворения потребностей компании. В прошлом подход Microsoft выражался принципом «один сервер, одно приложение». Но мы приступили к консолидации задолго до того, как она «вошла в моду» и, несомненно, добились успеха.