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


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

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

https://blog.eaglenn.ru/wp-content/uploads/2015/07/Avtomaticheskaya-replikatsiya-oblastej-otkazoustojchivogo-DHCP-servera-Windows-Server-2012.png

 

Для репликации можно использовать командную строку, а именно оболочку 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 это не имя области, а именно пул адресов выделенных для области:

https://blog.eaglenn.ru/wp-content/uploads/2015/07/Avtomaticheskaya-replikatsiya-oblastej-otkazoustojchivogo-DHCP-servera-Windows-Server-20121.png

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

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

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

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

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

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

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

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

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

https://blog.eaglenn.ru/wp-content/uploads/2015/07/Avtomaticheskaya-replikatsiya-oblastej-otkazoustojchivogo-DHCP-servera-Windows-Server-20122.png

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

https://blog.eaglenn.ru/wp-content/uploads/2015/07/Avtomaticheskaya-replikatsiya-oblastej-otkazoustojchivogo-DHCP-servera-Windows-Server-20123.png

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

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

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

https://blog.eaglenn.ru/wp-content/uploads/2015/07/Sozdanie-zadaniya-v-planirovshhike8.png

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

https://blog.eaglenn.ru/wp-content/uploads/2015/07/Sozdanie-zadaniya-v-planirovshhike.png

Нажмем Далее

https://blog.eaglenn.ru/wp-content/uploads/2015/07/Sozdanie-zadaniya-v-planirovshhike1.png

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

https://blog.eaglenn.ru/wp-content/uploads/2015/07/Sozdanie-zadaniya-v-planirovshhike2.png

В целях безопасности 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 — оставить оболочку открытой после отработки скрипта. Это может понадобиться при проверке и отладке скрипта.

https://blog.eaglenn.ru/wp-content/uploads/2015/07/Sozdanie-zadaniya-v-planirovshhike3.png

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

https://blog.eaglenn.ru/wp-content/uploads/2015/07/Sozdanie-zadaniya-v-planirovshhike4.png

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

https://blog.eaglenn.ru/wp-content/uploads/2015/07/Sozdanie-zadaniya-v-planirovshhike5.png

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

https://blog.eaglenn.ru/wp-content/uploads/2015/07/Sozdanie-zadaniya-v-planirovshhike6.png

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

https://blog.eaglenn.ru/wp-content/uploads/2015/07/Sozdanie-zadaniya-v-planirovshhike9.png

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

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

https://blog.eaglenn.ru/wp-content/uploads/2015/07/Sozdanie-zadaniya-v-planirovshhike7.png

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

Послесловие

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

Больше статей в блоге: Заметки IT инженера, посвященном технологиям Microsoft.