Поделиться через


Общая конфигурация с IIS 7

Введение

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

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

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

Обзор

В этой статье рассматриваются общие функции централизованной глобальной конфигурации. Эта функция помогает поддерживать однородные веб-фермы, в которых серверы используют одну и ту же конфигурацию в группе серверов. Используя общую папку UNC, любые изменения в центральном главном файле конфигурации будут распространяться на разных серверах без дополнительных средств или программной поддержки.

В первой части этой статьи описывается использование пользовательского интерфейса администрирования IIS 7 и выше для включения и использования общей конфигурации. Вторая часть описывает, как включить и использовать общую конфигурацию из командной строки.

Не относящиеся к целям: какие вопросы не рассматриваются в этой статье

Несколько аспектов способствуют успешной среде веб-фермы, включая правильную поддержку, управляемость, доступность, масштабируемость и т. д.

Общая конфигурация сосредоточена исключительно на аспекте управления конфигурацией web-фермы и охватывает конфигурацию на всех серверах. Существуют средства и другие функции, которые могут помочь в управлении несколькими серверами, копировании содержимого, развертывании модулей, синхронизации двоичных файлов приложений, настройке сторонних компонентов и т. д. Эти средства, функции и аспекты выходят за рамки этой статьи.

В этой статье подробно описано, как поддерживать конфигурацию с помощью центрального файла на серверах.

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

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

Чтобы избежать этой проблемы в однородных фермах, следует отключить общую конфигурацию в кластере, обновить локальный файл applicationHost, чтобы он зеркально отображал удаленный файл, развертывал и обновлял модули и конфигурацию на одном сервере, а затем повторно включите общую конфигурацию на этом сервере. Затем можно развернуть и обновить двоичные файлы и модули на остальных серверах, прежде чем снова включить общую конфигурацию.

Доменные и недоменные среды

Некоторые администраторы развертывают кластеры веб-серверов в среде домена, а другие развертываются в рабочей группе (не в домене). В этой статье рассматриваются как сценарии, так и указываются различия и предостережения. Рекомендуется настроить IIS в кластере в домене, используя поддержку и безопасность, которые предоставляет Active Directory через контроллер домена.

Предпосылки

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

  1. Установите IIS на сервере, который будет называться веб-сервером в этой статье.
  2. Гарантируйте доступ ко второму серверу, который будет называться Файловым сервером во всей этой статье. Файловый сервер будет размещать общую папку для конфигурации и базового содержимого, к которому можно получить доступ с помощью UNC.
  3. Каждый шаг этой статьи предполагает, что предыдущий шаг был завершен. Выполните все действия по порядку.
  4. Для некоторых шагов существует эквивалентный шаг, который можно выполнить с помощью пользовательского интерфейса. Выполните только один тип шага, если не указано иное.

Централизованная конфигурация

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

Экспорт файлов и настройка перенаправления конфигурации с помощью пользовательского интерфейса

  1. Откройте диспетчер служб IIS.
  2. В представлении дерева выберите подключение сервера, для которого необходимо настроить перенаправление конфигурации.
  3. Дважды щелкните общую конфигурацию.
    Снимок экрана: I S Manager с выбранным значком общей конфигурации.
  4. В области "Действия " нажмите кнопку "Экспорт конфигурации..." , чтобы экспортировать необходимые файлы конфигурации с локального сервера в другое расположение (например, общий ресурс UNC).
    Снимок экрана панели действий в общей конфигурации с выделенным пунктом «Экспорт конфигурации...».
  5. В диалоговом окне "Экспорт конфигурации" введите путь, в который нужно экспортировать файлы. Введите пароль для защиты ключей шифрования, экспортированных также. Нажмите кнопку "ОК ", чтобы экспортировать файлы конфигурации и ключи шифрования, защищенные паролем.
    Снимок экрана: диалоговое окно
  6. Установите флажок "Включить общую конфигурацию" , чтобы включить перенаправление конфигурации.
    Снимок экрана: диалоговое окно
  7. Укажите путь, в котором находятся ключи конфигурации и шифрования, и укажите учетные данные для доступа к нему. Нажмите кнопку "Подключить как... и введите учетные данные".
    Снимок экрана: диалоговое окно
  8. Нажмите Применить, чтобы сохранить параметры. В диалоговом окне "Общая конфигурация" введите пароль, указанный для защиты ключей шифрования.
    Снимок экрана: диалоговое окно
  9. Нажмите кнопку "ОК ", чтобы завершить настройку перенаправления конфигурации.

Описанные выше действия описывают, как экспортировать конфигурацию и включить централизованную конфигурацию. Однако необходимо экспортировать конфигурацию только один раз. Выполните шаги 6–9 на каждом последующем сервере, который будет использовать централизованную конфигурацию.

Заметки об использовании пользовательского интерфейса

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

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

Командная строка

В оставшейся части этой статьи необходимо использовать командную строку для выполнения определенных команд. Рекомендуется использовать командную строку с повышенными правами пользователя, так как некоторые команды не будут работать при выполнении обычной командной строки.

Открытие командной строки с повышенными правами пользователя

  1. Нажмите кнопку Пуск.
  2. Щелкните "Все программы".
  3. Щелкните "Аксессуары".
  4. Щелкните правой кнопкой мыши командную строку и выберите пункт Запуск от имени администратора.
  5. Следуйте инструкциям в любых диалоговых окнах, которые отображаются.

Резервное копирование текущего файла applicationHost.config

При попытке новых функций или изменении нескольких параметров конфигурации рекомендуется создать резервную копию текущего applicationHost.config файла.

Резервное копирование файла applicationHost.config

  1. Откройте командную строку.

  2. Перейдите в каталог IIS, расположенный %WINDIR%\System32\InetSrv по умолчанию. Файлы конфигурации хранятся в каталоге InetSrv\Config. Используйте средство AppCmd для создания объекта резервного копирования и резервного копирования файла applicationHost.config, выполнив следующую команду:

    cd /d %windir%\system32\inetsrv
    appcmd add backup centralConfigBackup
    

    Замечание

    Средство AppCmd находится в каталоге InetSrv. Необходимо получить доступ к этому инструменту из данного каталога, если путь к инструменту не добавлен в переменные среды системы.

  3. Убедитесь, что объект резервного копирования, включающий файл applicationHost.config и устаревший файл метабазы для SMTP и других параметров, отличных от веб-сервера, присутствует, выполнив следующую команду:

    appcmd list backup
    

Замена текущего файла конфигурации файлом резервной копии

  1. Откройте командную строку.

  2. Перейдите к каталогу IIS, который находится в каталоге InetSrv по умолчанию. Восстановите объект файла резервной копии AppCmd, выполнив следующую команду:

    cd /d %windir%\system32\inetsrv\
    appcmd restore backup centralConfigBackup
    

Создание пользователя для доступа к UNC-общей папке для настройки

В среде домена администратор должен предоставить или создать учетную запись в домене для использования с Active Directory. Эта учетная запись должна быть настроена с правильными правами пользователя для доступа к UNC-ресурсу.

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

Создание пользователя, который может получить доступ к общему ресурсу, где хранится общая конфигурация (не в домене)

  1. Откройте командную строку.

  2. На веб-сервере (интерфейсном сервере, на котором установлены службы IIS), создайте пользователя с именем ConfigUser1 с паролем ConfigPass1, выполнив следующую команду:

    net user ConfigUser1 ConfigPass1 /add
    
  3. На файловом сервере (серверном сервере, где будет находиться центральная конфигурация), создайте пользователя с именем ConfigUser1 с паролем ConfigPass1, выполнив следующую команду:

net user ConfigUser1 ConfigPass1 /add

Создание общих папок UNC для центральной конфигурации и содержимого

Общий ресурс UNC, используемый для конфигурации, размещает файл applicationHost.config для всех серверов, которые хотят получить данные конфигурации из этого централизованного расположения.

Создание UNC-общей папки

  1. На файловом сервере откройте командную строку.

  2. Перейдите в корневую папку диска. Выполните следующую команду, чтобы создать каталог для настройки и предоставить этому каталогу общий доступ, предоставив пользователям права на чтение и запись в каталог:

    md %SystemDrive%\centralconfig
    net share centralconfig$=%SystemDrive%\centralconfig /grant:Users,Change
    

    Замечание

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

  3. Сценарий, отличный от домена: чтобы повысить безопасность общей папки, можно заменить часть "Пользователи", изменить часть переключателя /grant на параметры ConfigUser1,Change. Доступ к общей папке будет иметь только указанный пользователь.

  4. Сценарий домена. Чтобы повысить безопасность общей папки, можно заменить часть "Пользователи", изменить часть переключателя /grant на домен\user,Изменить параметры. Только указанный пользователь получит удаленный доступ к общей папке.

    Замечание

    Права доступа пользователя на папку общего доступа являются объединением прав доступа удалённой и локальной файловой системы. Чтобы учетная запись домена могла успешно прочитать общую папку конфигурации, необходимо задать соответствующие права пользователя в каталоге.

Предоставление прав пользователя учетным записям для общих папок UNC, которые размещают центральную конфигурацию и содержимое узла

Необходимо убедиться, что учетная запись, используемая для доступа к конфигурации, имеет соответствующие права пользователя. Эта учетная запись используется IIS для доступа к UNC-общей папке таким же образом, как и при сопоставлении виртуального каталога с UNC-ресурсом. Права пользователя на чтение для этой учетной записи полезны только при доступе к ресурсу. После этого каждый раз, когда IIS считывает файл конфигурации, он возвращается к учетной записи, которая соответствует вызывающему объекту: используемому API, средству администрирования или пользователю, вошедшему в систему в данный момент.

Замечание

Учетная запись ConfigUser1 или эквивалентная учетная запись домена, используемая для чтения конфигурации, не совпадает с учетной записью, используемой для записи конфигурации. Этим учетным записям не обязательно иметь права на запись в общую папку или в файл конфигурации.

Предоставление прав пользователям для учетных записей UNC-общей папки (домена)

  1. Если учетная запись домена входит в группу локальных пользователей и пользователям был предоставлен доступ при создании ресурса, можно пропустить дальнейшие шаги настройки домена. Однако если учетная запись домена для доступа к локальной общей папке не является частью каких-либо локальных групп пользователей, необходимо выполнить команду, чтобы предоставить права пользователя.
  2. На файловом сервере откройте командную строку.
  3. Предоставьте учетным записям домена права пользователя для чтения каталога, в котором хранится конфигурация, выполнив следующую команду:
icacls %SystemDrive%\centralconfig\ /grant domain\user:R

Чтобы добавить пользователя UNC (вне домена и в домене)

Для сценариев как домена, так и не домена имя пользователя должно содержать настройку пакетной задачи для входа в систему. Это не параметр по умолчанию в Windows Server® 2008; Необходимо вручную добавить его на веб-сервер.

  1. Нажмите кнопку Пуск. Щелкните "Администрирование" и выберите "Локальная политика безопасности".
  2. В разделе "Локальные политики" выберите "Назначения прав пользователей".
  3. Дважды щелкните Вход в качестве пакетного задания и добавьте пользователя UNC, которого вы создали.

Перенаправление конфигурации

Введение

Теперь, когда вы выполнили описанные выше действия, веб-сервер работает, а внешний веб-сервер должен обслуживать свой веб-сайт по умолчанию с помощью обратного адреса цикла localhost.

Теперь можно переместить конфигурацию в центральное местоположение. Это позволяет вам объявить файл в качестве главного и сохранить его в UNC-доле для настройки нескольких серверов. После изменения этого файла будут подготавливаться и обновляться все конфигурации сервера одновременно.

Хранение конфигурации в UNC-ресурсе

  1. Скопируйте файлыapplicationHost.config и administration.config из %windir%\system32\inetsrv\config каталога на интерфейсном веб-сервере, чтобы предоставить общий доступ на серверном файловом сервере. Если у учетной записи пользователя, вошедшего в систему, есть доступ на запись к общей папке на сервере, вы можете поместить файл в каталог. В противном случае необходимо пройти проверку подлинности учетной записи пользователя во внутреннем интерфейсе, чтобы выполнить этот шаг.

  2. Доступ к существующему XML-файлу redirection.config в каталоге конфигурации внешнего сервера:

    • Откройте Windows Explorer и перейдите в %windir%\system32\inetsrv\config.
    • Откройте файл redirection.config. Этот файл и его содержимое создаются при настройке веб-сервера. Средства и API могут получить доступ к этому файлу, чтобы определить, включена ли эта функция.
  3. Откройте файл redirection.config. Задайте следующую конфигурацию с правильным именем сервера, именем пользователя и паролем для вашей среды.

    <configuration> 
        <configSections> 
            <section name="configurationRedirection" /> 
        </configSections> 
        <!--password is ConfigPass1 or domainPassword-->
        <configurationRedirection enabled="true" path="\\machinename\centralconfig$\" userName="ConfigUser1 or domain\user" password="" /> 
    </configuration>
    
  4. Сохраните файл redirection.config. Вы можете снова получить доступ к сайтам, но конфигурация теперь хранится в общем UNC-ресурсе.

Тестирование конфигурации

При использовании конфигурации, которая берётся из серверной части, есть два ключевых сценария, для которых была разработана эта функция. Конфигурацию можно обновить на внешних веб-серверах двумя способами:

  1. Файл applicationHost.config можно изменить непосредственно в общей папке. После этого происходят уведомления об изменениях, и веб-серверы применяют изменения из файла.
  2. Вы можете добавить второй applicationHost.config файл в серверную общую папку и изменить файл redirection.config веб-сервера, чтобы указать новую версию файла. Это полезно для отката или поэтапного развертывания.

Сводка

В этой статье представлена новая функция централизованной конфигурации. Эта функция позволяет администраторам, имеющим однородные кластеры в среде веб-фермы, настраивать и развертывать конфигурацию на всех серверах без проблем.

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

Приложение 1. Доступ к файлу Redirection.config программным способом для чтения значений

На этом шаге представлен пример доступа к файлу redirection.config программным способом, используя новый API COM AHADMIN. Используйте COM-API AHADMIN для реализации этого API из машинного кода или из скрипта и управляемого кода.

Чтение значений программным способом

  1. Создайте текстовый файл и сохраните его с расширением .js. В следующем скрипте представлен пример чтения включенного атрибута, имени сервера, имени пользователя и пароля для вашей среды:

    try
    {
      var config = WScript.CreateObject( "Microsoft.ApplicationHost.AdminManager" );
      var section = config.GetAdminSection( "configurationRedirection", "MACHINE/REDIRECTION" );
    
      WScript.Echo( "Current redirection:" );
      WScript.Echo( "enabled = " + section.Properties.Item( "enabled" ).Value );
      WScript.Echo( "path = " + section.Properties.Item( "path" ).Value );
      WScript.Echo( "user = " + section.Properties.Item( "userName" ).Value );
      WScript.Echo( "pass = " + section.Properties.Item( "password" ).Value );
    }
    catch(e)
    {
      WScript.Echo(e.number);
      WScript.Echo(e.description);
    }
    
  2. Сохраните файл redirection.js. Теперь этот файл можно запустить из командной строки из-за узла скриптов Windows (WSH).

Приложение 2. Доступ к файлу redirection.config программным способом для записи значений

На этом шаге представлен пример доступа к файлу redirection.config программным способом, используя новый API COM AHADMIN. Используйте этот API из машинного кода или из скрипта и управляемого кода из своего COM-объекта.

Написание значений программным способом

  1. Создайте текстовый файл и сохраните его с расширением .js. Представленный скрипт содержит пример того, как записать атрибут включения, имя сервера, имя пользователя и пароль для вашей среды.

    try
    {
        var config = WScript.CreateObject( "Microsoft.ApplicationHost.WritableAdminManager" );
      config.CommitPath = "MACHINE/REDIRECTION";
        var section = config.GetAdminSection( "configurationRedirection","MACHINE/REDIRECTION" );
      section.Properties.Item( "enabled" ).Value = true;
      section.Properties.Item( "path" ).Value = "\\\\somemachine\\sharefile://folder/";
      section.Properties.Item( "userName" ).Value = "testuser";
      section.Properties.Item( "password" ).Value = "testuser";
      config.CommitChanges();
    }
    catch(e)
    {
      WScript.Echo(e.number);
      WScript.Echo(e.description);
    }
    
  2. Сохраните файл redirection.js.

  3. Теперь этот файл можно запустить из командной строки из-за узла скриптов Windows (WSH).

Приложение 3. Работа с зашифрованными свойствами, специфичными для машины

По умолчанию IIS включает двух основных провайдеров для обеспечения безопасности свойств. Эти поставщики находятся в разделе конфигурации configProtectedData> файла applicationHost.config <и определяются в элементе <providers>.

AesProvider предназначен для работы с шифрованием и расшифровкой свойств, которые находятся в разделе system.webServer.

IISWASOnlyRsaProvider предназначен для работы с шифрованием и расшифровкой свойств, которые находятся в разделе system.applicationHost.

Эти ключи находятся в контейнерах ключей iisConfigurationKey и iisWasKey и зависят от компьютера. В сценарии веб-фермы, если требуется шифрование, ключ с одного компьютера, как правило, тот, который создал файл applicationHost.config, экспортируется и импортируется на другие компьютеры, чтобы защищенные данные можно было расшифровать и использовать веб-сервер.

Этапы

  1. Откройте командную строку. Перейдите в каталог Framework, расположенный %windir%\Microsoft.NET\Framework\v2.0.50727\ по умолчанию.

    Замечание

    Для справки ключи компьютера для системы находятся в %ALLUSERSPROFILE%\Microsoft\Crypto\RSA\MachineKeys\

  2. Используйте средство aspnet_regiis для экспорта ключа. Ниже приведена команда для передачи ключа конфигурации. Параметр px определяет, что требуется экспортировать пару ключей RSA. Переключатель pri определяет, что вы также хотите включить закрытый и открытый ключ.

    Эта идентификация коммутатора необходима для шифрования и расшифровки; в противном случае можно шифровать только данные с экспортируемым ключом. Параметр после PX — это имя контейнера ключей для экспорта. В этом случае это контейнер ключей iisConfigurationKey. Другой контейнер ключей, который использует IIS, — это контейнер ключей iisWasKey.

    aspnet_regiis -px "iisConfigurationKey" "D:\iisConfigurationKey.xml" -pri
    
  3. После успешного экспорта скопируйте XML-файл на другой компьютер в кластере, чтобы подготовиться к его импорту.

  4. Перейдите в каталог Framework и используйте средство aspnet_regiis для импорта ключа из XML-файла. Ниже приведена команда для завершения передачи ключа.

    Параметр после - pi — это имя импортируемого контейнера ключей. В этом случае это контейнер ключей iisConfigurationKey. Другой контейнер ключей, который использует IIS, — это контейнер ключей iisWasKey.

    aspnet_regiis -pi "iisConfigurationKey" "D:\iisConfigurationKey.xml"