Автоматическая репликация областей отказоустойчивого DHCP сервера Windows Server 2012

С выходом Windows Server 2012 у администратора DHCP сервера появилась возможность использования DHCP сервера в режиме отказоустойчивости с репликацией зарезервированных адресов на вторичный DHCP сервер в режиме балансировки нагрузки либо в режиме горячей замены. Это большой шаг вперед, который позволил добиться высокой доступности DHCP серверов, снижения времени простоя на обслуживание, установку обновлений и прочие операции. Как водиться среди огромного количества плюсов не обошлось без небольшого, но неудобного минуса. Проблема заключается в том, что после создания резервирования на одной из нод отказоустойчивого кластера DHCP, обновленные данные, автоматически не реплицируются на вторичный сервер. Для репликации данных приходится использовать ручной режим, для этого необходимо щелкнуть правой кнопкой мыши по области в которую были внесены изменения и из выпадающего меню выбрать «Репликация отношений»

Автоматическая репликация областей отказоустойчивого DHCP сервера Windows Server 2012

 

Для репликации можно использовать командную строку, а именно оболочку PowerShell запущенную в режиме Администратора, в которой необходимо выполнить команду:

Invoke-DhcpServerv4FailoverReplication -ComputerName «имя dhcp сервера с которого необходимо реплицировать данные«

Пример использования команды Invoke-DhcpServerv4FailoverReplication

Команда ниже проведет репликацию всех областей участвующих в группе репликаций с именем MS-NN-Failover:

Invoke-DhcpServerv4FailoverReplication -ComputerName dhcpserver.contoso.com -Name MS-NN-Failover

Этот пример запустит процесс репликации всех областей находящихся на сервере dhcpserver.example.com

Invoke-DhcpServerv4FailoverReplication -ComputerName dhcpserver.example.com

Пример ниже выполнит репликацию областей имеющих ScopeID 10.10.10.0 и 20.20.20.0

Invoke-DhcpServerv4FailoverReplication -ComputerName dhcpserver.contoso.com -ScopeId 10.10.10.0,20.20.20.0

Следует помнить, что ScopeID это не имя области, а именно пул адресов выделенных для области:

Автоматическая репликация областей отказоустойчивого DHCP сервера Windows Server 2012

Автоматическая репликация областей отказоустойчивого DHCP сервера Windows Server 2012

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

Скрипт репликации

Создадим на диске C:\ файл PowerShell с произвольным названием, например: DhcpServerFailoverReplication.ps1. Откроем его на редактирование и добавим строку:

Invoke-DhcpServerv4FailoverReplication -ComputerName dhcp.example.com -force

Ключ -force позволит выполнить команду без вывода подтверждения действий. 

Сохраняем файл и переходим к созданию пользователя.

Создание пользователя

Так как мой сценарий работает в среде Active Directory я не буду использовать локального пользователя, а создам доменного. Он нам понадобиться для запуска задачи по расписанию. И так, создадим обычного пользователя с именем DhcpServerReplication, добавим его в группу локального администратора на каждом DHCP сервере участвующем в сценарии отказоустойчивости.

Автоматическая репликация областей отказоустойчивого DHCP сервера Windows Server 2012

Далее добавим нашего пользователя в локальную группу Администраторы DHCP.

Автоматическая репликация областей отказоустойчивого DHCP сервера Windows Server 2012

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

Создание задания в планировщике

Самое время перейти к созданию задания в планировщике. Казалось бы, можно создать простое задание и запускать его планировщиком, например, каждые 5 минут. Но такой вариант запуска будет бесполезно грузить канал трафиком репликации, не зависимо от того была обновлена запись резервирования или нет. Мы воспользуемся запуском задачи по событию. При создании нового резервирования сервер регистрирует в журнале Microsoft-Windows-DHCP Server Events/Работает событие с кодом 106.

Создание задания в планировщике

его мы и будем использовать при создании задания:

Создание задания в планировщике

Нажмем Далее

Создание задания в планировщике

На странице настройки триггера выберете: При занесении в журнал указанного события.

Создание задания в планировщике

В целях безопасности PowerShell скрипты могут выполняться только интерактивно, то есть сначала надо запустить оболочку PowerShell и уже в ней указать путь к скрипту. Поэтому в поле «Action» указываем запуск powershell.exe, а в поле «Add Arguments» параметр -File и путь к нашему скрипту, вот так:

-WindowStyle Hidden -File «C:\DhcpServerFailoverReplication.ps1»

-File — путь к исполняемому файлу PowerShell

-WindowStyle Hidden — не показывать окно оболочки PowerShell

Также в поле аргументы можно указать:

-Command — выполняет указанные команды и любые другие параметры. Этот параметр тоже можно использовать для запуска скрипта, например: -Command ″& {C:\Scripts\start.ps1}″. Кроме того, с его помощью можно передавать в скрипт параметры: -Command ″& {C:\Scripts\start.ps1 -a 1 -b 3}″;
-ExecutionPolicy — задает политику выполнения скриптов для текущего сеанса, может принимать значения Unrestricted, RemoteSigned, AllSigned и Restricted. Заданная политика будет действовать только в текущем сеансе и имеет приоритет над любыми ранее созданными политиками;
-NonInteractive — отключить вывод интерактивных запросов к пользователю;
-WindowStyle Hidden — запуск окна PowerShell в скрытом режиме, незаметно для пользователя;
-NoProfile — предотвращает загрузку профиля, что может несколько ускорить выполнение скрипта;
-NoExit — оставить оболочку открытой после отработки скрипта. Это может понадобиться при проверке и отладке скрипта.

Создание задания в планировщике

После создания задачи запуска скрипта по событию, откройте закладку Действия и проверьте правильность строки запуска.

Создание задания в планировщике

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

Создание задания в планировщике

Откройте закладку Триггеры, проверьте источник и событие запуска.

Создание задания в планировщике

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

Создание задания в планировщике

Откроем еще раз закладку Триггеры и нажмем кнопку Создать. В окне мастера заполним необходимые поля, как на примере ниже:

Журнал: Microsoft-Windows-DHCP Server Events/Работает
Источник: DHCP-server
Код события: 107

Создание задания в планировщике

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

Послесловие

Администратор DHCP сервера создает резервацию для компьютера. В журнале событий Microsoft-Windows-DHCP Server Events/Работает возникает событие, планировщик заданий получает информацию о возникшем событие и автоматически запускает задачу, которая в свою очередь запускает команду репликации. Вот таким не хитрым способом мы настроили автоматическую репликацию отказоустойчивого DHCP сервера.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *