[Перевод] Зачем нужно перезагружать контроллеры домена раз в месяц
Active Directory предоставляет сервисы аутентификации и авторизации. Работоспособная среда Active Directory позволяет эффективно работать другим службам.
Ранее в руководстве по проверке работоспособности Active Directory (Active Directory Health Check Server Tutorial) мы рассмотрели 2 важных вопроса связанных с проверкой надлежащей работы службы каталогов: «Реплицированная топология Active Directory» и «Подсети не связанные с сайтами Active Directory». Мы рассказали о преимуществах использования сетевой топологии по сравнению с «ячеичной топологией», а также предложили скрипт в PowerShell, который вы можете использовать для получения информации о количестве сайтов, связанных по ссылке AD.
Сегодня мы объясним, для чего нужно перезагружать хотя бы раз в месяц контроллеры доменов и как можно использовать скрипт Power Shell для получения информации об аптайме контроллеров домена. Скрипт будет представлен ниже.
Важно понимать, что контроллеры домена предназначены для обеспечения критически важных сервисов аутентификации и авторизации и постоянно находятся в работе.
Поэтому их необходимо перезагружать ежемесячно, либо в специально отведенный для обслуживания временной промежуток согласно вашим стандартам проверки работоспособности системы.
Перед тем как рассмотреть скрипт Power Shell для получения информации об аптайме контроллеров домена, давайте определимся с тем, зачем нам необходимо перезагружать контроллеры домена. Есть две веские причины, которые необходимо учитывать при принятии решения о перезагрузке. Рассмотрим их:
- Проблемы утечки памяти: утечка памяти происходит при запуске процесса Lsass.exe. Этот процесс осуществляется на контроллере домена и отвечает за предоставление сервисов идентификации клиентам Active Directory. Со временем утечка памяти может повлиять на работоспособность контроллеров домена. Масштабная утечка памяти может привести к неприемлемому временному отклику со стороны процесса Lsass.exe и высокому потреблению памяти операционной системой. Для того чтобы справиться с проблемами утечки памяти рекомендуется периодически перезагружать доменные контроллеры.
Несмотря на то, что в новых версиях операционных систем для серверов Windows Server 2012 R2 и Windows Server 2016 функция восстановления памяти реализована автоматически, всё же рекомендуется перезагружать доменные контроллеры, что в свою очередь может помочь решить проблемы утечки памяти, которые операционная система не может автоматически решить.
- Большинство обновлений для системы безопасности требуют перезагрузки: Важно отметить, что Windows сервер и доменные контроллеры требуют регулярные патчи для установки пакетов обновлений и хотфиксов, а версии патчей системы безопасности должны быть совместимы на всех контроллерах домена. Новые патчи заменяют низкоуровневые Dll файлы в операционной системе, поэтому большинство обновлений систем безопасности требуют перезагрузки, после которой обновления будут успешно применены. Компания Майкрософт ежемесячно выпускает обновления системы безопасности и поэтому крайне важно перезагружать контроллеры, чтобы внести изменения.
Принимая во внимание вышеуказанные причины перезагрузки, предлагаем вам скрипт в Power Shell, который вы можете использовать для получения информации об аптайме контроллера домена. Данный скрипт также поможет вам узнать количество дней, прошедших с последней перезагрузки каждого контроллера домена.
Шаги:
Меняем ITDynamicPacks. Прописываем имя главного домена в AD forest name. Получаем перечень всех доменных контроллеров и главного домена Active Directory, прописав команду, указанную ниже, результат сохраняется в файле C:\Temp\DCList.TXT file:
DSQuery Server -o rdn > C:\Temp\DCList.TXT
Копируем полный скрипт указанный ниже в файл PS1 и исполняем в PowerShell окне
$CurForestName="ITDynamicPacks.Net"
$TestCSVFile="C:\Temp\DCUpTimeReport.CSV"
$GDCList="C:\Temp\DCList.TXT"
$TotNo=0
$ItemCount=0
$TestText = "Please check result"
$TestStatus="Completed"
$SumVal = "NA"
$ErrorOrNot = "No"
$ThisString="Domain Controller, Up Time, Local Time, Time Zone, Days Not Rebooted, Status"
Add-Content "$TestCSVFile" $ThisString
$TodaysDate = Get-Date
Foreach ($ItemName in Get-Content "$GDCList")
{
$operatingSystem = Get-WmiObject Win32_OperatingSystem -ComputerName $ItemName
IF ($Error.count -ne 0)
{
$ThisSTR = $ItemName+",Error Connecting"
$ErrorOrNot = "Yes"
Add-Content "$TestCSVFile" $ThisStr
}
else
{
$RTime=[Management.ManagementDateTimeConverter]::ToDateTime($operatingSystem.LastBootUpTime)
$LocalTime=[Management.ManagementDateTimeConverter]::ToDateTime($operatingSystem.LocalDateTime)
$CurTimeZone=$operatingSystem.CurrentTimeZone
$StatusNow = ""
$R = $RTime
$Z = $TodaysDate
$DayNotRebooted = (New-TimeSpan -Start $R -End $Z).Days
IF ($DayNotRebooted -ge 30)
{
$StatusNow = "WARNING: Not rebooted since last 30 days"
}
$ThisStr=$ItemName+","+$RTime+","+$LocalTime+","+$CurTimeZone+","+$DayNotRebooted+","+$StatusNow
Add-Content "$TestCSVFile" $ThisStr
}
}
Когда завершится исполнение скрипта по всем контроллерам домена, будет сформирован отчет в DCUpTimeReport.CSV файле в папке C: Temp folder как показано на следующем скриншоте:
Как можно увидеть из отчета, скрипт даёт возможность получить информацию об аптайме каждого контроллера домена, указанную в C:\Temp\DCList.TXT файле. А отчет о том, сколько дней доменный контроллер не перезагружался можно увидеть в графе «Days Not Rebooted».
Приведенный выше скрипт является частью «Теста контроллеров домена на аптайм» Dynamic Pack, который доступен для использования с Active Directory Health Profiler. Данный тест может быть проведен как для одного, так и для множества доменов AD и вы можете увидеть результаты теста в консоли Active Directory Health Profiler как показано на скриншоте ниже:
Вывод
Мы подробно рассмотрели две ключевые причины перезагрузки контроллеров домена. Основной целью данной перезагрузки является своевременное обслуживание контроллерами домена запросов на аутентификацию и авторизацию, а также максимальная безопасность посредством своевременных обновлений систем безопасности.
Предложенный PowerShell скрипт поможет вам поддерживать работоспособность контроллеров домена на должном уровне, для этого вам раз в месяц их необходимо перезагружать.
Комментарии (3)
28 ноября 2016 в 16:47
0↑
↓
[irony]Так вот для чего Microsoft придумал PowerShell![/irony]28 ноября 2016 в 16:56
0↑
↓
Вы серьезно, а чего не через posh?DSQuery Server -o rdn > C:\Temp\DCList.TXT
28 ноября 2016 в 17:40
0↑
↓
всё же рекомендуется перезагружать доменные контроллеры
Угу. А винду на компе раз в год непременно переустанавливать, а то засоряется.
Компания Майкрософт ежемесячно выпускает обновления системы безопасности и поэтому крайне важно перезагружать контроллеры, чтобы внести изменения.
Это бессмысленный абзац. Если на КД настроено автообновление — он сам без советов перезагрузится. Если не настроено — перезагрузки сами по себе к установке обновлений не приведут.
Технология тоже интересна — перед вызовом скрипта отдельно вызвать команду, которой писать текстовый файл, который читать через powershell, вместо того, чтобы вызывать команду в скрипте же (не говоря уж об использовании родного модуля Active Directory). Зачем?
IF ($Error.count -ne 0)
Это что, такая своеобразная замена Try/Catch/Finally? Не страшно, что переменная $error не обнуляется, и этот блок будет отрабатывать постоянно после первой же ошибки (причем любой, а не только при выполнении предыдущей команды)?