С выходом бета-версии Windows 8, сервер Internet Information server (IIS) 8 стал доступен для публичного тестирования и тестирования в промышленной среде. Многим системным администратором не терпится узнать, какие изменения были внесены и что нового появилось.
В этой статье приводится поверхностное описание того, что мы увидим в релизе IIS 8. Основное внимание в этой версии сервера было уделено сценариям высокомасштабируемого хостинга. Новая версия содержит значительные улучшения в производительности для того, чтобы иметь возможность (и с легкостью) обслуживать тысячи сайтов на одной единственной серверной ферме. Все о чем написано в этой статье уже сегодня может использоваться и доступно для загрузки.
Полноценное регулирование нагрузки CPU (CPU Throttling)
Предыдущие версии IIS уже содержали в себе функцию регулирования нагрузки CPU, однако они работали не так, как вам бы хотелось. Когда сайт достигает лимита использования CPU, то он выключается на определенный период времени. Такое поведение защищает другие сайты на сервере, но не является предпочтительным, так как вместо того, чтобы сайт просто замедлить он выводится из строя.
Наконец, в IIS 8 были произведены усовершенствования на уровне ядра для поддержки функции настоящего регулирования нагрузки CPU. И теперь для сайтов, которые достигли порога использования CPU, существует два сценария. Они могут перейти в режимы Throttle или Throttle under load. Если ранее вы использовали WSRM, то сегодня он вам уже не понадобится, так как в IIS 8 вы найдете функционала даже больше, чем в WSRM.
Режим Throttle позволит задать определенный уровень ресурсов CPU для рабочего процесса. В данном случае регулирование нагрузки применяется не только к первичному рабочему процессу, но и ко всем порожденным процессам, если они существуют (рисунок 1).
Рис.1. Настройки регулирования нагрузки в IIS 8
Режим Throttle under load позволит сайту использовать все возможные ресурсы CPU во время обычной работы, но когда сервер находится под нагрузкой использовать регулирование нагрузки рабочего процесса (рисунок 1).
Регулирование нагрузки в IIS 8 базируется на пользователе и не обязательно на пуле приложения. Это означает, что если вы используете специально выделенные аккаунты для более одного пула приложений, то настройки регулирования нагрузки будут применяться для всех пулов использующих одну учетную запись. Обратите внимание, что по умолчанию учетная запись пула приложения уникальна, так что если вы используете ее, то нагрузка каждого пула приложений будет регулироваться отдельно.
Масштабируемость SSL
Пока вы не столкнетесь с большим сайтом, который хостит множество сертификатов SSL, вы можете даже не знать о том, что здесь есть много вещей для улучшения.
Предыдущие версии IIS имели ограничения по хостингу безопасных сайтов. Каждый сайт SSL требовал свой собственный IP-адрес и после добавления нескольких сайтов SSL, скорость холодного старта уменьшалась, а потребление памяти увеличивалось. Каждый сертификат загружался в память при первом обращении к SSL-сайту, что увеличивало потребление памяти и создавало задержку при первой загрузке.
В IIS 8 число сертификатов SSL легко может быть масштабировано до тысяч сайтов на одной машине с практически мгновенным стартом. Сертификаты загружаются только по требованию и выгружаются через определенный в настройках период времени. В дополнение к этому, функции перебора и загрузки огромного числа сертификатов значительно ускорены.
Поддержка SNI / SSL Host Header
Использование заголовков хостов (host headers) и общих IP-адресов вместе с сертификатами SSL всегда имело затруднения. Теперь IIS 8 предлагает поддержку Server Name Indication (SNI), что позволяет множеству SSL-сайтов использовать один и тот же IP-адрес. SNI - это достаточно новый механизм (ему всего несколько лет), который позволяет заголовкам хоста работать вместе с SSL.
IIS 8 полностью поддерживает технологию SNI для заголовков хостов.
Обратите внимание, что SNI не поддерживается в старых браузерах, например, Internet Explorer 6. Больше информации о поддержке SNI вы можете найти на странице http://en.wikipedia.org/wiki/Server_Name_Indication.
Этот новый функционал, предназначенный для совместного использования IP-адресов, очень важен в контексте того, что адреса IPv4 подходят к концу, а консолидация IP-адресов становится трендом.
Управление SSL (SSL Manageability) - центральное хранилище сертификатов (Central Certificate Store (CCS))
В IIS 7 управление SSL было трудоемкой задачей, особенно для серверных ферм. Все сертификаты должны были быть импортированными на каждую машину в ферме. При масштабировании даже небольших серверных ферм и добавлении новых серверов вам приходилось учитывать время, которое требовалось для импорта сертификатов. В предыдущих версиях управление синхронизацией сертификатов была трудной задачей, которая зачастую требовала ручной работы.
В IIS 8 представлен новый функционал - Central Certificate Store (CCS, центральное хранилище сертификатов). Механизм CCS позволяет хранить сертификаты в центральном файловом хранилище вместо того, чтобы размещать их на каждом сервере. Вы можете указать серверам единый сетевой ресурс или использовать репликацию, вроде DFS-R, для синхронизации папков между машинами.
Обновление и синхронизация просты и представляют собой обычное копирование файлов pfx в определенное место, которое вы указываете при включении CCS на сервере. Включение CCS тоже легкая задача, которая очень похожа на включение Shared Configuration.
Механизм CSS использует функциональность SNI для поддержки сайтов с множеством сертификатов на одном IP-адресе.
Мэппинг привязок к сертификатам содержит немного магии … и позволяет использовать соглашения, вместо ручной конфигурации. Это очень важно для экстремально больших списков сертификатов. Теперь вам не нужно выбирать сертификаты из гигантского списка. Значение заголовков хоста должно совпадать с именем сертификата. Ваша папка CCS будет содержать множество pxf-файлов, имена которых совпадают с именами сертификатов. Проще говоря, имя pfx-файла в хранилище сертификатов - это первичный ключ.
Если вы используете сертификат для доменов третьего уровня и выше (wildcard), то все что вам надо назвать его в виде _.domain.com.pfx.
Как вы могли догадаться, в IIS 8 поддерживается и механизм Multiple Domain Certificates (Unified Communications Certificate [UCC]). Если вы используете несколько доменных сертификатов с помощью поля сертификата subjectAltName, то вам потребуется всего лишь создать несколько копий файлов pfx, одну для каждого subjectAltName.
Обратите внимание, что вы можете использовать и старый метод, который основан на привязке по идентификатору и который будет работать так же, как и в предыдущих версиях сервера IIS.
Хочется рассказать еще о приятном функционале центрального репозитория сертификатов, который позволяет группировать их по дате истечения в разрезе "Сегодня / На этой неделе / На следующей неделе / В следующем месяце / Позднее". Эта функция очень полезна для поиска сертификатов, которые вскоре истекут.
Со всеми этими изменениями в функциях работы с сертификатами, IIS 8 становится мощным решением для хостинга большой масштабируемой веб-фермы с множеством отдельных сайтов.
Динамическое блокирование по IP (Dynamic IP Restrictions)
Информация об этом функционале уже доступна в сети, однако он еще развивается и будет усовершенствован к релизу.
Ограничения входа для FTP
Да! Новый модуль FTP IP Restrictions будет добавлен в IIS 8! Его работа напоминает концепцию Dynamic IP Restrictions для HTTP. Одна из ключевых разниц заключается в том, что FTP IP Restrictions использует серые списки вместо черных списков. Когда кто-то заблокирован, они блокируются только на некоторый промежуток времени (например, 30 секунд). И это хорошо, потому что этого достаточно для предотвращения или замедления перебора паролей и других атак. Вместе с тем, при ошибочном вводе пароля несколько раз, остается возможность повторить ввод через некоторое время без блокировки.
И что еще более приятно, вы можете установить эту защиту более чувствительной по сравнению с вашей доменной политикой блокирования учетной записи для того, чтобы атака с перебором не привела к блокировке вашей собственной учетной записи. FTP IP Restrictions позволяет блокировать попытки взлома без блокирования ваших пользователей домена.
Модуль инициализации приложения
Известный ранее модуль warm-up module, который был исключен на время из сервера, теперь представлен в виде модуля инициализации приложений (Application Initialization Module).
Этот модуль позволяет раскрутить сайты и страницы еще до того, как к ним придет первый трафик. Кроме того он в дружелюбном виде обрабатывает запросы к приложению, которое еще только запускается. Первичная загрузка приложения в одну минут или больше - не такая уж и редкость (да админы SharePoint, это про вас). Новый модуль позволит избежать ситуации, когда пользователь обращается к работающему, но не разогретому серверу.
Новый модуль предлагает возможность указать для разогрева отдельные страницы на сервере или воспользоваться мощными возможностями URL Rewrite для большей гибкости.
Вы так же можете настроить ваш балансировщик нагрузки так, чтобы он не обслуживал запросы к сайту, пока он не инициализируется согласно вашим правилам (вместо этого показывать специальную страницу). Тогда балансировщик добавит в работу узел только когда его разогрев будет завершен.
Масштабирование конфигурации
Теперь сервер IIS 8 может очень эффективно работать с файлами конфигурации IIS (applicationHost.config) большого размера. В сервере были произведены значительные улучшения для достижения высокой производительности обработки файлов конфигурации. В первую очередь изменения заметят администраторы с большим количеством сайтов на серверной ферме (я подразумеваю тысячи сайтов). Но для процесса масштабирования новые изменения так же будут востребованы при значительном росте масштаба.
Веб-сокеты (Web Sockets)
Очень важно включить в список нововведений и поддержку веб-сокетов. Вы можете получить полное описание поддержки Web Sockets в этой замечательной статье Пола Батума (Paul Batum). Функция веб-сокетов будет требовать Windows 8 на стороне сервера.
Заключение
Все эти изменения очень полезны. Хотя при работе над предыдущими версиями IIS уже была роделана большая работа по обеспечению обработки массивного трафика, изменения в IIS 8 теперь позволяют обрабатывать тысячи (и десятки тысяч) сайтов и их огромные конфигурации на одной серверной ферме. Другие значительные нововведения включают в себя: внедрение механизма ограничений HTTP и FTP logon, регулирование использования CPU, модуль инициализации приложений, возможность значительного масштабирования SSL и эффективную обработку конфигураций большого числа сайтов.
Еще одна полезная вещь - выпуск бесплатного легкого сервера IIS 8 Express для разработчиков, который вы уже можете скачать и установить. Подробности по ссылке.