[Перевод] Зачем нужно перезагружать контроллеры домена раз в месяц

Для оптимальной производительности и безопасности контроллеров домена службы каталогов Active Directory требуется их регулярное  обслуживание. Наше новое руководство поможет вам максимально эффективно настроить работу ваших контроллеров домена при обслуживании запросов аутентификации и авторизации.

746cef79f181446e9c9b0b935506a936.jpg

Active Directory предоставляет сервисы аутентификации и авторизации. Работоспособная среда  Active Directory позволяет эффективно работать другим службам.

Ранее в руководстве по проверке работоспособности Active Directory (Active Directory Health Check Server Tutorial)  мы рассмотрели  2 важных вопроса связанных с проверкой надлежащей работы службы каталогов: «Реплицированная топология Active Directory» и «Подсети не связанные с сайтами Active Directory». Мы рассказали о преимуществах использования сетевой топологии по сравнению с «ячеичной топологией», а также предложили скрипт в PowerShell, который вы можете использовать для получения информации о количестве сайтов, связанных по ссылке AD.

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

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

Перед тем как рассмотреть скрипт Power Shell для получения информации об аптайме контроллеров домена, давайте определимся с тем, зачем нам необходимо перезагружать контроллеры домена. Есть две веские причины, которые необходимо учитывать при принятии решения о перезагрузке. Рассмотрим их:

  1. Проблемы утечки памяти:  утечка памяти происходит при запуске  процесса Lsass.exe. Этот процесс осуществляется на контроллере домена и отвечает за предоставление сервисов идентификации клиентам Active Directory. Со временем утечка памяти может повлиять на работоспособность контроллеров домена. Масштабная утечка памяти может привести к неприемлемому временному отклику со стороны процесса  Lsass.exe и высокому потреблению памяти операционной системой. Для того чтобы справиться с проблемами утечки памяти рекомендуется периодически перезагружать доменные контроллеры.

    Несмотря на то, что в новых версиях операционных систем для серверов Windows Server 2012 R2 и Windows Server 2016 функция восстановления памяти  реализована автоматически, всё же  рекомендуется перезагружать доменные контроллеры, что в свою очередь может помочь решить проблемы утечки памяти, которые операционная система не может автоматически решить.

  2. Большинство обновлений для системы безопасности  требуют перезагрузки:  Важно отметить, что 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 как показано на следующем скриншоте:
c482165830a7c40509ed1da341a102e3.png

Как можно увидеть из отчета, скрипт даёт возможность получить информацию об аптайме каждого контроллера домена, указанную в C:\Temp\DCList.TXT файле. А отчет о том, сколько дней доменный контроллер не перезагружался можно увидеть в графе «Days Not Rebooted».

Приведенный выше скрипт является частью  «Теста контроллеров домена на аптайм»  Dynamic Pack,  который доступен для использования с Active Directory Health Profiler. Данный тест может быть проведен как для одного, так и для множества доменов AD и вы можете увидеть результаты теста  в консоли Active Directory Health Profiler как показано на скриншоте ниже:

dc0ff26e4ae48462f113008665771c87.png

Вывод


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

Предложенный 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 не обнуляется, и этот блок будет отрабатывать постоянно после первой же ошибки (причем любой, а не только при выполнении предыдущей команды)?

© Habrahabr.ru