Занятие 2. Архитектура сервера
(Продолжительность занятия 40 минут)
Internet Information Server базируется на нескольких основных компонентах, образующих «каркас» его функциональных возможностей. На этом занятии Вы познакомитесь с определяющими компонентами архитектуры сервера IIS.
Изучив материал этого занятия, Вы сможете:
Сервер IIS состоит из трех уровней служб и одного дополнительного компонента, объединяющего элементы, общие для всех служб. Последние совместно используются разными служебными уровнями и в совокупности обеспечивают коммуникационные возможности сервера.
Вот основные компоненты архитектуры сервера IIS:
Процесс Inetinfo
Все стандартные службы Интернета, описанные на предыдущем занятии, реализованы единым процессом — приложением информационных служб Интернета (Internet Information Services Application, Inetinfo). В дополнение к службам Интернета в состав процесса Inetinfo входят: общий пул потоков, кэш, службы протоколирования и поддержка протокола SNMP.
Поток — это наименьший исполняемый элемент процесса или, другими словами, составляющая процесса, которая фактически выполняется в каждый момент времени. Поток выполняется в пределах адресного пространства процесса и использует ресурсы, выделенные процессу. Пул потоков — это группа потоков процесса, предназначенных для выполнения конкретной операции.
Использование пула потоков — идеальный способ создания дополнительных режимов выполнения процесса. В то время как процесс обладает собственным адресным пространством, набором регистров и последовательностью выполнения, у потока есть свой набор регистров и последовательность выполнения, но он работает в общем адресном пространстве процесса. По этой причине применение дула потоков дает выигрыш в быстродействии и производительности по сравнению с организацией служб Web-сервера в виде отдельных процессов. Поток содержит:
В приведенной ниже таблице перечислены восемь возможных состояний потока.
Идентификатор состояния потока | Состояние |
0 | Инициализация |
1 | Готовность |
2 | Выполнение |
3 | Дежурный режим |
4 | Прекращение |
5 | Ожидание |
6 | Переходный режим |
7 | Неопределенное |
Поскольку службы HTTP и FTP выполняются в рамках одного процесса, они могут совместно использовать такие кэшированные данные, как дескрипторы файлов, учетную информацию и записи журнала.
Механизм протоколирования позволяет фиксировать обращения пользователей к Вашему Web-узлу. Это полезно для выявления прорех в защите узла или причин его недостаточной производительности. Результаты протоколирования можно записывать в файл журнала (он доступен для анализа в любой момент) либо в ODBC-совместимую базу данных для динамического анализа.
Если Вы ведете мониторинг сети средствами протокола SNMP, для отслеживания работы Web-узла можно применять информационные базы данных управления средствами SNMP (Management Information Bases, MIBs), входящие в состав IIS.
Для мониторинга работы служб WWW и FTP Вашего сервера средствами SNMP- мониторов сторонних производителей воспользуйтесь MIB-файлами, включенными в состав пакета инструментальных средств разработки (он находится на компакт-диске Internet Information Server).
Приложения сервера можно изолировать друг от друга. В этом случае они выполняются отдельно от процесса Web-сервера, и сбой изолированного приложения не влияет ни на работу сервера, ни на другие приложения (за исключением выполняющихся в одном процессе с приложением, вызвавшим проблему). Изолированные приложения фактически выполняются в отдельных областях памяти.
В целом изоляция приложений — плодотворная идея; при этом несколько увеличивается расход памяти, но отказ сервера из-за сбоя приложения становится куда менее вероятным.
Удаленное администрирование
Windows NT Server и IIS позволяют предоставить клиентам возможность удаленного администрирования их каталогов и виртуальных серверов на Вашем узле. Для этого клиенту понадобятся учетная запись пользователя Windows NT и Web- обозреватель с поддержкой JavaScript и кадров; кроме того, учетная запись должна иметь соответствующие полномочия.
После этого Вы должны предоставить пользователям необходимые разрешения для соответствующих виртуальных серверов и каталогов с тем, чтобы пользователи имели право изменять свои (и только свои) Web-узлы. Поскольку полномочия каждого клиента распространяются только на выделенный ему виртуальный сервер, узлы остальных клиентов на Вашем сервере не будут затронуты изменениями (или ошибками), совершенными каким-либо пользователем на его виртуальном узле.
Если клиент намерен работать с динамическими Web-страницами, включающими ActiveX-компоненты или приложения интерфейса прикладного программирования Интернет-сервера (Internet Server Application Programming Interface, ISAPI), можете воспользоваться средствами изоляции процессов IIS. Тем самым сценарии и приложения каждого виртуального сервера будут изолированы, а их ошибки не повлияют на другие Web- узлы, размещенные на Вашем сервере. Кроме того, этот подход обеспечит защиту Вашего сервера в случае отказа такого приложения.
Коннекторы
Коннекторы IIS чаще всего реализуются в виде расширения — библиотеки динамической загрузки (DLL) интерфейса ISAPI, которая обеспечивает канал связи между IIS и конкретной службой.
Internet Information Server поддерживает следующие коннекторы.
Системные сервисы Windows NT
Системные сервисы Windows NT образуют нижний уровень архитектуры IIS. Данные на этот уровень поступают от TCP/IP и покидают его через Windows Sockets.
TCP/IP — это набор сетевых протоколов, поддерживающих обмен данными через взаимосвязанные сети, образованные компьютерами с разными операционными системами и различной архитектуры.
Windows Sockets (WinSock) — Windows-реализация широко распространенного интерфейса сокетов, созданного в Калифорнийском университете (Беркли, США). Windows Sockets служит интерфейсом между приложениями и транспортным протоколом, действуя как двунаправленный канал для обмена информацией. В настоящее время используется версия WinSock 2.0.
Службы Web
Средний уровень архитектуры IIS составляют службы Web. Здесь сердцевина функциональных возможностей IIS.
Асинхронная очередь потоков (Asynchronous Thread Queue, ATQ), реализованная в виде библиотеки Isatq.dll, отвечает за поддержку потоки ввода/вывода для обработки операций обмена. Средства ATQ позволяют в случае необходимости ограничить полосу пропускания, занимаемую Web-узлом. Кроме того, асинхронная очередь потоков постоянно отслеживает конкретные ТСР-сокеты. Компонент Infocom.dll управляет следующими функциями IIS:
Компонент FTP обрабатывает все FTP-запросы, а компонент WWW — все запросы WWW.
Isadmin — еще один компонент Web-служб. Он реализует модель распределенных компонентных объектов (Distributed Component Object Model, DCOM) для метабазы. Isadmin — это шлюз для администрирования служб IIS.
Компоненты SMTP, NNTP и РОРЗ поддерживают электронную почту и службу новостей IIS. Каждый из них реализован в виде библиотеки .dll и может существовать в нескольких экземплярах.
Microsoft ISAPI — альтернатива интерфейсу CGI. ISAPI выгодно отличают малый объем служебных данных, быстрая загрузка, масштабируемость и эффективное использование ресурсов. Расширения ISAPI хорошо подходят для обработки запросов и динамической генерации специализированных данных.
Еще один тип ISAPI-приложения — ISAPI-фильтр, который применяется для уведомления о различных событиях в ходе обработки HTTP-запросов. При первой загрузке ISAPI-фильтр, представляющий собой библиотеку DLL, извещает сервер о типе HTTP-событий, который он будет обрабатывать. В дальнейшем, получив уведомление о событии, фильтр может выполнить предусмотренные действия (например, запустить CGI-сценарий или ISAPI-приложение). Высокая эффективность ISAPI-фильтров позволяет применять их для решения широкого спектра задач, включая:
CGI-компонент IIS обеспечивает поддержку CGI — серверного интерфейса, применяемого для запуска различных служб и приложений. Вместе с CGI поставляется набор интерфейсов, позволяющих Web-серверу взаимодействовать с ПО, выполняющемся на том же компьютере. CGI-приложения расширяют возможности Web-сервера, выполняя несвойственные ему функции.
Прикладные службы
Уровень прикладных служб — вершина архитектуры IIS. На этом уровне реализованы средства расширения возможностей IIS, в том числе ASP и Index Server. Вся информация попадает на прикладной уровень (и покидает его) через диспетчер - Web-приложений (Web Application Manager, WAM), реализованный в виде файла Wam.dll. WAM располагается непосредственно над уровнем Web-служб и выполняет следующие функции:
ISAPI — это оптимизированный для работы в среде Windows NT серверный интерфейс запуска различных служб.
ASP-компонент прикладного уровня реализует функциональные возможности активных страниц сервера.
Index Server поддерживает функции индексирования и поиска информации в файлах на сервере IIS. Он реализован в виде отдельной библиотеки DLL интерфейса ISAPI. Объекты Index Server доступны и из активных страниц.
Компонент HTTP ODBC поддерживает сценарии коннектора баз данных (Internet Database Connector, IDC). IDC-сценарии применяются для динамического создания Web-страниц на основе информации, хранящейся в ODBC-coвместимых базах данных.
Компонент SSI позволяет серверу IIS включать текст, графику и другую информацию в HTML-страницу непосредственно перед передачей ее пользователю. Средствами SSI на страницу можно добавить, например, дату и время создания, сведения об авторских правах или форму, которую клиент должен заполнить и вернуть. Использование SSI для включения информации в файлы особенно удобно для вставки текста или графики, повторяющихся во множестве файлов — вместо ввода одних и тех же данных в каждый файл вручную, одной командой SSI Вы укажете Web-серверу загрузить нужный файл. Допустимо вложение команд SSI.
Web-сервер выполняет SSI-директивы в ходе обработки HTML-страниц. Обнаружив SSI-директиву, Web-сервер включает содержимое указанного в ней файла непосредственно в HTML-страницу. Если включаемый файл, в свою очередь, также содержит SSI-директиву, то вставляется и следующий файл.
Резюме
Архитектуру IIS формируют четыре основных компонента: