Заметки о Windows и других программных продуктах Microsoft...

Настройка DHCP failover в Windows Server 2016

Настройка DHCP failover в Windows Server 2016

Третья, заключительная статья о DHCP. В завершение темы я расскажу о том, как обеспечить отказоустойчивую работы DHCP-сервера с помощью технологии DHCP failover.

Но сначала немного истории.

До выхода Windows Server 2012 единственным способом обеспечить отказоустойчивость DHCP-сервера была так называемая схема 80\20. Суть этой схемы заключается в том, что для обслуживания одной области используются два DHCP-сервера. Область делится между ними в пропорции 80\20, соответственно основному серверу отдается 80%, а резервному 20% имеющихся IP-адресов. В нормальном режиме работы область обслуживается основным сервером, а при выходе из его строя резервный берет на себя нагрузку и выдает клиентам адреса из оставшихся 20%, тем самым поддерживая работу сети.

Данный способ вполне рабочий и используется до сих пор, но у него есть некоторые недостатки:

• При разделении области имеющиеся адреса используются не самым оптимальным образом;
• Клиенты не могут продлить аренду с имеющимся адресом;
• Проблемы при использовании резервирования.

Примечание. Резервирование (DHCP reservation) — настройка DHCP-сервера, при которой к MAC-адресу клиента привязывается постоянный IP-адрес. Это гарантирует, что клиент всегда будет получать в аренду один и тот же адрес. Резервирование настраивается на конкретном сервере и при его недоступности клиент не сможет получить зарезервированный за ним адрес.

Недостатки конечно некритичные, но доставляющие много неудобств. Видимо поэтому в Windows Server 2012 была добавлена новая фича под названием DHCP failover, предназначенная для обеспечения высокой доступности DHCP-серверов. DHCP failover позволяет обеспечить высокую доступность службы DHCP и не имеет недостатков, описанных выше. При использовании DHCP failover два DHCP-сервера реплицируют между собой текущие настройки и данные об аренде, что позволяет одному серверу обслуживать всех клиентов (выдавать новые адреса, продлевать аренду и т.п.) в том случае, когда другой недоступен.

DHCP failover может работать в двух режимах.

Режим балансировки (Load balance)

В этом режиме область делится на две части в определенной пропорции и обслуживается обоими серверами одновременно. При получении запроса каждый сервер вычисляет хэш MAC-адреса клиента в соответствии с алгоритмом, описанным в RFC 3074. MAC-адреса хэшируются в диапазоне от 1 до 256, балансировка происходит по следующему принципу: если нагрузка распределена в пропорции 50\50 и если при вычислении хэша получено значение от 1 до 128, то отвечает первый сервер, если же от 129 до 256 — то отвечает второй. При изменении коэффициента распределения нагрузки распределение хэш-блоков между серверами изменяется в той же пропорции. Такой подход гарантирует, что за одного конкретного клиента отвечает только один сервер.

Если же один из серверов перестает отвечать, то второй забирает всю область и продолжает обслуживать как своих клиентов, так и клиентов партнера.

Режим горячей замены (Hot Standby)

В таком режиме область обслуживается одним сервером (основным). В отличие от режима балансировки в режиме горячего резерва сервера не вычисляют хэш MAC-адреса клиента. Основной сервер отвечает на все запросы клиентов, резервный в нормальном состоянии не отвечает вообще. Только когда основной сервер становится недоступным, резервный переходит в состояние потери партнера (PARTNER_DOWN) и начинает отвечать на запросы клиентов. Когда основной сервер возвращается в строй, резервный переходит в режим ожидания и перестает обслуживать клиентов.

Обратите внимание, что термин основной\резервный относится к конкретной DHCP-области. К примеру DHCP-сервер может являться основным для одной области и резервным для другой.

От теории перейдем к практике. Для создания отказоустойчивой конфигурации возьмем 2 сервера — SRV1 и SRV2, находящихся в одной подсети. На SRV1 создаем область (Scope) и полностью настраиваем ее, на SRV2 только устанавливаем роль DHCP, никаких настроек не производим. После этого приступаем к настройке DHCP failover.

Настройка DHCP failover

Для начала настроим режим балансировки (Load balance). Для этого заходим на сервер SRV1 и открываем оснастку DHCP. Выбираем область, кликаем на ней правой клавишей и в контекстном меню отмечаем пункт «Configure Failover».

запуск мастера настройки

 

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

выбор области для настройки dhcp-failover

 

Добавляем сервер-партнер, на котором будет находится второй экземпляр области.

выбор сервера-партнера

 

На следующем этапе выбирается режим работы и основные настройки.

В качестве имени для создаваемых доверительных отношений (Relationship Name) по умолчанию используются имена серверов, но в принципе можно указывать что угодно. Режим работы (Mode) выбираем балансировку (Load balance) и в поле «Load Balance Percentage» указываем в процентах пропорции, в которых будет разделена область между двумя серверами. По умолчанию нагрузка делится в соотношении 50\50, но мы сделаем по привычной схеме 80\20, т.е. 80% обслуживает основной сервер и 20% резервный.

Теперь два очень важных параметра, на которых надо обратить внимание:

• State Switchover Interval — интервал времени, по истечении которого партнер считается недоступным (PARTNER_DOWN). Если не задавать этот параметр, то при падении партнера автоматического переключения не произойдет и переключатся придется вручную;
• Maximum Client Lead Time — очень интересный параметр, определяющий срок продления аренды в случае падения основного сервера. Когда клиент пытается продлить аренду, полученную на основном сервере, то резервный сервер продлевает ее не на срок аренды, указанный в свойствах области, а на время, указанное в данном параметре. И так пока основной сервер не восстановит работу. Также этот параметр определяет, сколько времени сервер будет ждать возвращения партнера из состояния PARTNER_DOWN прежде чем забрать контроль над всей областью. А еще этот параметр определяет время перехода в нормальное состояние при возвращении партнера.

Примечание. Параметры State Switchover Interva и Maximum Client Lead Time определяют скорость срабатывания failover-а. Каждый из партнеров обслуживает свой диапазон адресов до того момента, пока один из серверов не перейдет в состояние PARTNER_DOWN  и не пройдет время, указанное в параметре Maximum Client Lead Time. Только после этого ″оставшийся в живых″ сервер возьмет на себя контроль над всей областью.

Сервера должны безопасно общаться друг с другом. Для этого включаем параметр «Enable Message Authentication» и в поле «Shared Secret» задаем кодовое слово, которое сервера будет использоваться для связи.

выбор режима и настройка параметров

 

В заключение проверяем настройки, подтверждаем создание failover-а

подтверждение настроек

 

и ждем завершения процесса.

завершение настройки

 

Посмотреть настройки и текущее состояние партнеров можно в свойствах области, на вкладке «Failover».

просмотр параметров и состояния dhcp-failover

 

То же самое можно сделать с помощью PowerShell. Создаем доверительные отношения:

Add-DhcpServerv4Failover -ComputerName srv1.test.local -Name ″srv1-srv2″ -PartnerServer srv2.test.local -ScopeId 10.0.0.0 -LoadBalancePercent 80 -MaxClientLeadTime 00:10:00 -AutoStateTransition $true -StateSwitchInterval 00:10:00 -SharedSecret ″12345678″ -Force

Проверяем результат:

Get-DhcpServerv4Failover -Name ″srv1-srv2″ | fl

настройка dhcp-failover с помощью PowerShell

 

Теперь сменим конфигурацию, сначала отключив failover. Для этого в оснастке DHCP кликаем на область и выбираем пункт меню «Deconfigure Failover».

отключение dhcp-failover

 

Затем подтверждаем удаление доверительных отношений,

запрос на подтверждение отключения dhcp-failover

 

еще раз подтверждаем удаление

финальный запрос на отключение запрос на подтверждение отключения dhcp-failover

 

и ждем завершения. При удалении на сервере-партнере будут удалены все области, для которых был настроен failover.

завершение отключения dhcp-failover

 

Для удаления с помощью PowerShell достаточно выполнить одну команду:

Remove-DhcpServerv4Failover -Name ″srv1-srv2″ -Force

отключение dhcp-failover с помощью PowerShell

 

Теперь настроим DHCP failover в режиме Hot standby. Для этого опять запускаем мастер на SRV1 и выбираем сервер-партнер. Обратите внимание, что если между серверами ранее уже были настроены доверительные отношения, то их можно использовать повторно.

повторное включение dhcp-failover

 

Выбираем режим Hot standby и производим настройки. Для режима Hot standby они несколько отличаются:

• Role of Partner Server — серверы делятся на основной (Active) и резервный (Standby) и надо выбрать роль для  сервера-партнера. Если мы выбираем Standby, то текущий сервер соответственно становится Active, и наоборот.
• Addresses reserved for standby server — еще один важный параметр, задающий процент адресов, выделенный для резервного сервера. Суть этого параметра в том, что после выхода из строя основного сервера и перехода в состояние PARTNER_DOWN должно пройти время, заданное в параметре Maximum Client Lead Time. Только после этого резервный сервер забирает контроль над над всем диапазоном IP-адресов. В промежутке между этими двумя событиями резервный сервер может обслуживать клиентов, выдавая им адреса из данного резерва. Если этот параметр установить в ноль, то резервный сервер не сможет выдавать адреса до тех пор, пока не захватит всю область.

настройка параметров

 

Дальше все так же — проверяем настройки, подтверждаем их

подтверждение настроек

 

и ждем завершения.

завершение настройки

 

То же из консоли PowerShell:

Add-DhcpServerv4Failover -ComputerName srv1.test.local -Name ″srv1-srv2″ -PartnerServer srv2.test.local -ScopeId 10.0.0.0 -ReservePercent 10 -MaxClientLeadTime 00:10:00 -AutoStateTransition $true -StateSwitchInterval 00:10:00 -SharedSecret ″12345678″ -Force

настройка dhcp-failover с помощью PowerShell

 

Изменить настройки и режим работы DHCP failover можно ″на лету″, не удаляя текущую конфигурацию. Для этого в оснастке управления надо выбрать раздел IPv4 (или IPv6, если failover настраивался для этого протокола), кликнуть правой клавишей мыши и выбрать пункт «Properties».

переход к редактированию настроек dhcp-failover

 

Затем перейти на вкладку «Failover», выбрать доверительные отношения и нажать «Edit».

выбор dhcp-failover для редактирования

 

В открывшемся окне мы можем поменять абсолютно любые настройки и даже изменить режим работы failover-а, например перейти с Load Balance на Hot Standby.

изменение режима работы dhcp-failover

 

А теперь с помощью PowerShell вернемся обратно к режиму балансировки, попутно изменив интервалы MaxClientLeadTime и StateSwitchInterval:

Set-DhcpServerv4Failover -Name ″srv1-srv2″ -Mode LoadBalance -LoadBalancePercent 80 -MaxClientLeadTime 00:02:00 -StateSwitchInterval 00:02:00 -Force

изменение режима работы dhcp-failover с помощью PowerShell

Тестирование работы DHCP failover

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

текущие настройки аренды

 

Теперь зайдем в свойства DHCP failover и проверим состояние серверов-партнеров.

текущее состояние failover

 

Запомним полученные настройки на клиенте. Как видите, клиент имеет адрес 10.0.0.20, полученный с сервера 10.0.0.1 (SRV1).

текущее состояние клиента

 

Теперь погасим сервис DHCP на SRV1 и перейдем на SRV2. Здесь откроем оснастку DHCP и перейдем в настройки доверительных отношений. Как видите, после потери связи с партнером здесь стала активна кнопка ″Change to partner down″. С помощью этой кнопки можно перевести сервер в состояние PARTNER_DOWN, не дожидаясь пока истечет State Switcover Interval.

перевод партнера в состояние down

 

Еще раз проверяем состояние серверов. Резервный сервер перешел в состояние Partner down и готов к захвату контроля над областью.

состояние failover после отключения партнера

 

Ждем 2 минуты и еще раз проверяем настройки на клиенте. Как можно увидеть, IP-адрес не изменился, при этом в качестве DHCP-сервера указан уже 10.0.0.2 (SRV2). Т.е. клиент успешно продлил на SRV2 аренду адреса, полученного от SRV1.

состояние клиента после отключения партнера

 

Возвращаем SRV1 в строй, ждем пока клиент обновит аренду и еще раз проверяем его настройки. Как видите, IP-адрес не изменился, а адрес DHCP-сервера опять SRV1.

состояние клиента после включения партнера

 

Вот так и работает DHCP-failover.

 
 
Комментарии

А в 2016 резервации все так же надо руками синкать ??

Да, все так же.

Владимир

Да, странно, что MS так и не сделали автоматическую синхронизацию.
Опять использовать костыли через подписку на событие 106, 107

Алекс

Расскажите пожалуйста по подробнее зачем вы используете подписку на события 106, 107

DHCP-Server в журнале Microsoft-Windows-DHCP регистрирует событие 106 на создание и 107 на удаление резервации. На них вешается Invoke-DhcpServerv4FailoverReplication для репликации этих изменений на партнёров.

придурок

не отрабатывает нормально, не переносятся dhcp options такие как 003 router да даже бл мак адрес не реплицируется на сервер партёр, луче вручную убедится что всё збс иначе потом словиш приколы

Как-нибудь решили проблему с отсутствием репликации dhcp options?

Бобёр

А кого указывать IP-helper (он же DHCP-relay) на маршрутизаторах если они живут на разных IP ?

Иоанн

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

Leave a Reply to Kirill