Для тех из вас, кто выполняет Exchange 2000/2003 на Контролере Домена, эта статья описывает, как гарантировать, что сервисы Exchange автоматически остановятся до остановки Active Directory, существенно улучшая время выключения/перезагрузки.
Введение
Официальная рекомендация Microsoft – что вы не должны предполагать инсталляцию Exchange на Контроллер Домена. Фактически, однако, множество Exchange DC используются именно так. В конце концов, решение инсталлировать ли Exchange на DC, или нет, зависит от множества факторов (таких, как будет ли сервер делать еще что-нибудь); но одну вещь вы должны учитывать: если вы используете Exchange DC, то он занимает очень много времени для выключения или перезагрузки. Я имею ввиду очень много времени; что-то между 15 и 30 минутами, обычно. Я думал, что так ведут себя только мои собственные серверы, которые требуют много времени для перезагрузки (конечно, вследствие того, что что-то я настроил не корректно), но когда я прочитал в базе знаний Microsoft статью KB555025, обсуждающую эту проблему, я решил выяснить, что все же происходит со всем этим, и более того, что вы можете со всем этим сделать.
Выяснилось, что проблему вызывает факт, что сервер завершает Active Directory до того, как он остановит сервисы Exchange. Exchange сильно зависит от Active Directory, и поэтому, оно занимает много времени при чистой остановке, все еще пытаясь связаться с ним. Конечно, это не будет проблемой, если вам никогда не потребуется перезагружать ваш сервер, но большинство автоматических обновлений настойчиво требуют перезагрузку.
Ранее упомянутая KB статья советует для решения проблемы медленного завершения либо завершение сервисов Exchange, используя командный файл, либо изменение элемента реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WaitToKillServiceTimeout. Известно, что изменение этого значения реестра может вызвать другие проблемы, потому что оно убивает Сервисы Exchange до того, как они реально готовы к этому. Это действительно сокращает время завершения, но может оставить ваши Exchange данные в неподходящем состоянии. Кроме того, этот KB документ также говорит, что MS официально не поддерживает использование этого ключа реестра таким способом.
В действительности, наилучший способ завершить ваши сервисы Exchange до выключения – использование командного файла. Единственная проблема – это не забыть выполнить его первым. Если вы забудете, ваш сервер будет выключаться также медленно, как обычно. Что нам нужно, чтобы выполнять этот скрипт каждый раз, когда сервер выключается? Описанный метод гарантирует, что сервисы Exchange будут остановлены первыми, даже если сервер выключается удаленно или по команде UPS в результате пропадания питающего напряжения.
Процедура
Вы можете заставить сервер выполнить скрипт при выключении использованием Group Policy Editor (Редактора Политики Групп), который является встроенной MMC (Microsoft Management Console – Консоль Управления Microsoft). Я объясню вам вкратце, как использовать Group Policy Editor, но вначале, нам потребуется создать командный файл, который будет завершать сервисы Exchange.
Командный файл очень короткий и вы можете создать его в Notepad (Блокноте) (рисунок 1):
Здесь приведен текст, который я использовал, вы можете скопировать/вставить его вместо того, чтобы набирать самостоятельно:
net stop MSExchangeES /y
net stop MSExchangeIS /y
net stop MSExchangeMTA /y
net stop MSExchangeSA /y
net stop WinHttpAutoProxySvc /y
Или вы можете загрузить готовый файл с адреса http://www.leederbyshire.com/DL/ExchShutdown.zip
Для этого примера, я планирую сохранить этот файл в корне диска C: моего сервера, но помните, что вы можете также сохранить его в разделяемой папке, в случае, если вы хотите, чтобы он был доступен нескольким серверам.
Теперь, мы будем использовать Group Policy Editor для настройки сервера на исполнение этого командного файла каждый раз при его выключении. Щелкните на пункте Run (Выполнить) в меню «Пуск» вашего сервера и введите gpedit.msc, затем нажмите OK (рисунок 2) для запуска Group Policy Editor.
Когда Group Policy Editor запустится, раскройте дерево в левой части окна через Computer Configuration, Windows Settings, и затем выберите Scripts (Startup/Shutdown), так чтобы вы могли увидеть объекты Startup и Shutdown (Выключение) на правой панели. Щелкните правой кнопкой Shutdown и выберите пункт Properties (Свойства) из контекстного меню, как показано на рисунке 3.
Вы возможно еще не имеете настроенных скриптов, так что этот список, возможно, будет пустым (рисунок 4):
Нажмите кнопку Add (Добавить) и затем нажмите Browse… (Обзор) для поиска месторасположения командного файла, который вы создали. Помните, что я сохранил этот файл на моем диске C:, но ваше местоположение может быть иное. Когда вы выбрали местоположение файла в диалоге обзора, выберите файл и нажмите Open (Открыть) для указания месторасположения файла. Конечно, вы можете также набрать полный путь в поле Script Name (Имя скрипта).
Когда вы получите имя скрипта с путем командного файла, нажмите OK для добавления его в список Shutdown Scripts, как показано на рисунке 6:
Нажмите OK для сохранения изменений, закройте Group Policy Editor, и данная процедура будет завершена.
Заключение
Это возможно и не является тем, что вы можете немедленно протестировать (если вы не работаете очень поздно), но в следующий раз, когда вам потребуется выключить или перезагрузить сервер, вы должны обнаружить, что он выключается намного быстрее. В моем случае, это теперь занимает около трех минут, вместо двадцати минут. Конечно, все бы было намного проще, если бы программа установки Exchange как-нибудь автоматически располагала Сервисы Exchange для выключения в первую очередь, не правда ли? Возможно, это не так просто делается, как говорится.
(Эта статья основана на подобной статье, которую я написал несколько ранее. Благодаря полученным мною отзывам, особенно от Андраса Гаала (Andras Gaal), я смог описать этот улучшенный метод, который предполагает автоматизацию скриптом, а не ручное выполнение).