Меню

Как настроить dhcp failover

Настройка службы DHCP Failover в Windows Server 2012

Начнем сначала с общей информации. Одной из новых возможностей, появившихся в Windows Server 2012, является — DHCP Failover. Это новый метод обеспечения высокой доступности службы DHCP (High Availability). Windows Server 2008 R2 предоставлял нам два параметра высокой доступности.

  1. DHCP в отказоустойчивом кластере Windows. (DHCP-сервер размещается в кластере)
  2. Разделенные области DHCP — DHCP Split Scope . (В этом случае используются два независимых DHCP-сервера, которые разделяют одну область между собой. Если клиентам не удается подключиться к основному серверу, то они могут получить IP-адрес у дополнительного сервера. Развертывание разделенных областей не обеспечивает непрерывность IP-адресов.)

Failover DHCP в Windows Server 2012 позволяет администраторам развертывать высоко доступную службу DHCP для поддержки своей инфраструктуры и не имеет недостатков, описанных выше. Два DHCP-сервера реплицируют между собой сведения об аренде, позволяя одному серверу обеспечивать обслуживание клиентов всей подсети, когда другой сервер недоступен. Если DHCP-сервер недоступен, то DHCP-клиент может продлить срок действия аренды текущего IP-адреса, обратившись к другому DHCP-серверу. Failover DHCP в Windows Server 2012 обеспечивает поддержку не более двух DHCP-серверов. Failover DHCP может работать в двух режимах —

  1. Режим горячей замены — (Hot standby mode).
  2. Режим балансировки нагрузки — (Load balance mode).
  • В режиме горячей замены активный сервер отвечает за предоставление IP-адресов и параметров конфигурации всем клиентам в области или подсети. Дополнительный сервер принимает эту ответственность на себя в случае, если основной сервер становится недоступным. Сервер является основным или дополнительным в контексте подсети. Например, сервер, имеющий роль основного сервера для некоторой подсети, может быть дополнительным сервером для другой подсети.
  • При использовании режима балансировки нагрузки (используется по умолчанию) два сервера одновременно предоставляют IP-адреса и сетевые параметры клиентам подсети. Запросы клиентов распределяются между двумя серверами. Каждый DHCP сервер при получении запроса клиента вычисляет хэш MAC-адреса клиента, используя алгоритм хэширования. Каждый сервер получает значение хэша в диапазоне от 1 до 256. Если распределение нагрузки между узлами выставлено в 50:50, то клиентский запрос, содержащий MAC-адрес хэш которого будет в интервале от 1 до 128 будет обработан первым сервером, если хэш будет в интервале от 129 до 256, то запрос будет обрабатываться вторым сервером.

Тестовая среда.

В тестовой среде, используется 2 контроллера домена, которые также выступают в роли DHCP серверов и два dhcp-клиента.

  • Начнем установку DHCP-службы на DC из PowerShell. Конечно, можно производить установку и настройку из консоли MMC, но я буду показывать на примере PowerShell — считаю что это намного быстрее и в последствии можно написать свой скрипт и облегчить себе жизнь. Запускаем новый редактор PowerShell ISE на prmdc01 -> Win+R -> PowerShell_ISE.exe. Запуск команды -> установить на нее курсор и нажать F8 или кнопку Run Selection.

Install-WindowsFeature -Name DHCP -IncludeManagementTools

Install-WindowsFeature -Name DHCP -ComputerName prmdc02.corp.local

Install-WindowsFeature -Name RSAT-DHCP -ComputerName prmdc02.corp.local

  • Теперь необходимо авторизовать наши сервера DHCP в Active Directory.

Add-DhcpServerInDC -DnsName «prmdc01.corp.local»

Add-DhcpServerInDC -DnsName «prmdc02.corp.local»

  • Далее создаем DHCP-область «VLAN 1» на сервере prmdc01.corp.local.

Add-DhcpServerv4Scope -Name «VLAN 1» -StartRange 172.30.65.17 -EndRange 172.30.65.19 -SubnetMask 255.255.255.224

Add-DhcpServerv4Reservation -ScopeId 172.30.65.0 -Name «Test WDS Server» -IPAddress 172.30.65.19 -ClientId F1-D1-F1-D1-7A-7A -Description «Sample Reserv»

Get-DhcpServerv4Reservation -ScopeId 172.30.65.0

  • Перейдем к настройке параметров области.
Читайте также:  Как отремонтировать мойку высокого давления керхер своими руками

Set-DhcpServerv4OptionValue -ScopeId 172.30.65.0 -OptionId 6 -Value 172.30.65.6,172.30.65.6

Set-DhcpServerv4OptionValue -ScopeId 172.30.65.0 -Router 172.30.65.1

Set-DhcpServerv4OptionValue -ScopeId 172.30.65.0 -DnsDomain «corp.local»

Set-DhcpServerv4Scope -ScopeId 172.30.65.0 -LeaseDuration 00.00:30:00

Get-DhcpServerv4OptionValue -ScopeId 172.30.65.0

После создания области и определения всех необходимых опций, можно приступить к конфигурации Failover DHCP. Для конфигурации Failover используется команда — Add-DhcpServerv4Failover. Общий синтаксис команды:

  • Parameter Set: LoadBalance Add-DhcpServerv4Failover [-Name] [-ScopeId] [-PartnerServer] [-AsJob] [-AutoStateTransition ] [-CimSession ] [-ComputerName ] [-Force] [-LoadBalancePercent ] [-MaxClientLeadTime ] [-PassThru] [-SharedSecret ] [-StateSwitchInterval ] [-ThrottleLimit ] [-Confirm] [-WhatIf] [ ]
  • Parameter Set: HotStandby Add-DhcpServerv4Failover [-Name] [-ScopeId] [-PartnerServer] [-AsJob] [-AutoStateTransition ] [-CimSession ] [-ComputerName ] [-Force] [-MaxClientLeadTime ] [-PassThru] [-ReservePercent ] [-ServerRole ] [-SharedSecret ] [-StateSwitchInterval ] [-ThrottleLimit ] [-Confirm] [-WhatIf] [ ]

Важные параметры для конфигурации:

AutoStateTransition — Параметр отвечает за автоматический переход от состояния COMM_INTERUPTED (потеря связи со своим партнером) до состояния PARTNER_DOWN (партнер неработоспособен). Если эта опция не задана, администратор должен вручную осуществить переход сервера DHCP в «PARTNER_DOWN» с помощью консоли управления DHCP или PowerShell. Если установить параметр AutoStateTransition в True, а параметр StateSwitchInterval будет опущен (не задан), то он установится автоматически в значение 1 час. Если задать параметр для StateSwitchInterval, а параметр AutoStateTransition установить в False (0) будет ошибка.

StateSwitchInterval — Проще говоря, этот параметр задает таймер, по истечению которого произойдет —AutoStateTransition (переход состояния). В Windows Server 8 Beta назывался — SafePeriod. Если будет задан параметр StateSwitchInterval, то параметр AutoStateTransition будет автоматически включен, то есть установлен в True (1).

LoadBalancePercent — Данные параметр задает процент от диапазона IP-адресов, чтобы зарезервировать для каждого сервера. Если задан параметр LoadBalancePercent 70, то первый (Local Server) будет использовать 70 адресов, второй 30 (Partner Server) (если всего доступно 100 адресов). Каждый сервер будет использовать свои IP-адреса в заданном диапазоне до того момента пока один из серверов не перейдет в состояние «PARTNER_DOWN» и время заданное в параметре Maximum Client Lead Time истечет. После этого доступный сервер возьмет на себя контроль над всем диапазоном IP-адресов из области.

MaxClientLeadTime — Определяет период времени, на которое DHCP аренда может быть продлена при потере контакта с партнером. Этот период также определяет сколько времени, сервер будет ожидать возвращения своего партнера из «PARTNER_DOWN» прежде чем приступить к контролю над всем диапазоном IP-адресов из области. Также определяет сколько времени будет выход из состояния «RECOVER_WAIT» в Normal.

ReservePercent — Определяет процент адресов, которые будут зарезервированы Standby сервером. Standby сервер будет использовать этот процент адресов для обслуживания новых клиентов после выхода из строя Active сервера. Standby сервер возьмет на себя контроль над всем диапазоном IP-адресов после перехода Active сервера в состояние «PARTNER_DOWN» и истечет время заданное в параметре Maximum Client Lead Time. Если устанавить этот параметр в ноль, то Standby не сможет предоставлять новые адреса клиентам, пока не захватит всю область.

  • Приступим к конфигурации: сначала создадим — (Load balance mode) затем — (Hot standby mode).

Add-DhcpServerv4Failover -ComputerName localhost -Name «prmdc01-prmdc02» -PartnerServer prmdc02.corp.local -ScopeId 172.30.65.0 -LoadBalancePercent 100 -MaxClientLeadTime 00:10:00 -AutoStateTransition $true -StateSwitchInterval 00:02:00 -SharedSecret «Keykeykey»

Get-DhcpServerv4Failover -Name «prmdc01-prmdc02» | format-list

Теперь давайте протестируем нашу конфигурацию на предмет сбоя и разберем как ведут себя параметры используемые при конфигурации Failover DHCP.

  • Включаем DHCP1-PC. DHCP1 получает адрес в аренду на 10 минут согласно параметру -MaxClientLeadTime 00:10:00. По истечению 50% времени аренды т.е. 5 минут prmdc01 продлевает аренду уже на 30 минут согласно параметру аренды у самой области. Далее через 15 минут, согласно RenewTimeValue, аренда снова будет продлена, на 30 мин и т.д. пока один из серверов, DHCP не выйдет из строя.
Читайте также:  Как отремонтировать электрическую швейную машину

  • Останавливаем службу DHCP на сервере prmdc01.corp.local. Как видим prmdc02 потерял связь с партнером. Вы можете сменить состояние партнера руками (Change to partner down) на PARTNER_DOWN или дождаться когда истечет время заданное в параметре StateSwitchInterval (в нашем случае 2 минуты) и произойдет AutoStateTransition (автоматически сменит состояние партнера на PARTNER_DOWN).

  • Теперь стартуем DHCP2-PC. Он не получает адреса.
  • Состояние сменилось на PARTNER_DOWN.

  • Через 10 минут (MaxClientLeadTime) prmdc02 захватит область и DHCP2-PC получит свой адрес на 10 минут.
  • После истечения аренды prmdc02 будет снова и снова продлять аренду DHCP1 и DHCP2 на 10 минут, пока не станет доступен prmdc01.
  • Включаем службу на prmdc01.corp.local, сервер переходит в состояние «Recover Wait«. Через 10 минут сервер вернется в состояние Normal. (параметрMaxClientLeadTime у нас равен 10 минутам).

  • Теперь создадим конфигурацию Hot standby mode. prmdc01 — Active | prmdc02 — Standby. Сервер где выполняется команда по-умолчанию будет Active. Добавим в нашу среду DHCP3-PC.

Get-DhcpServerv4Reservation -ScopeId 172.30.65.0 | Remove-DhcpServerv4Reservation

Get-DhcpServerv4lease -ScopeId 172.30.65.0 | Remove-DhcpServerv4Lease

Remove-DhcpServerv4Failover -Name «prmdc01-prmdc02»

Add-DhcpServerv4Failover -ComputerName localhost -Name «prmdc01-prmdc02» -PartnerServer prmdc02.corp.local -ScopeId 172.30.65.0 -ReservePercent 40 -MaxClientLeadTime 00:10:00 -AutoStateTransition $true -StateSwitchInterval 00:02:00 -SharedSecret «Keykeykey»

Get-DhcpServerv4Failover -Name «prmdc01-prmdc02» | format-list

  • Просмотр пула адресов выделенных каждому серверу. На prmdc01 (Active) доступно 2 адреса для выдачи на партнере prmdc02 (Standby) 1 адрес.

Тестирование конфигурации: ситуация схожа с Load Balance Mode.

  • Включаем DHCP1-PC. DHCP1 — получает адрес в аренду.
  • Останавливаем службу DHCP на prmdc01.
  • Сервер prmdc02 теряет контакт с сервером prmdc01.
  • Включаем DHCP2-PC. DHCP2 — получает аренду потому что, ReservePercent 40 (исходя из ситуации доступен 1 адрес).
  • Включаем DHCP3-PC. DHCP3 — не получает адрес в аренду.
  • Ждем перехода сервера в состояние «PARTNER_DOWN».
  • Партнер перешел в состояние «PARTNER_DOWN».
  • Ждем время заданное в параметре Maximum Client Lead Time.
  • Время в Maximum Client Lead Time истекло.
  • prmdc02 — захватил область.
  • DHCP3-PC — получает адрес в аренду. Если бы значение ReservePercent было ноль, то на этом шаге и DHCP2 получил бы свой адрес.

COMM_INTERUPTED -> StateSwitchInterval -> AutoStateTransitionPARTNER_DOWN -> MaxClientLeadTime -> область обслуживается одним сервером.

Источник

Два DHCP сервера на Centos7 с failover, dhcp-relay и динамическим обновлением зон

Приветствую всех хабраюзеров. Мой первый опыт написания статей на Хабре, так что любая конструктивная критика приветствуется. Написать решил только лишь потому, что недавно столкнулся с задачей, решения которой «в лоб» не нашел.

Суть задачи в том, что в большой организации нужен был отказоустойчивый DHCP-сервер, с dhcp-relay и возможностью быстро синхронизировать конфигурацию. Основной момент, что в большинстве найденных мной руководствах рассматривается либо вариант failover, либо dhcp-relay и нигде оба варианта не рассматривались вместе да ещё и с удобным методом синхронизации конфигурации. Вдруг кому моя статья немного поможет?

Суть задачи в следующем: есть большое предприятие, сеть на >1000 компов, единственный vlan, 2 контроллера домена, в сети dhcp отсутствует(!). Предыдущие админы умели только так, но это отдельный рассказ и не для Хабра.

Понятно, что первой же задачей стала модернизация сети, а именно сегментация на vlan и внедрение dhcp. При анализе задачи были выработаны следующие требования:

  • Отказоустойчивость — независимость от какого-либо железа
  • Учитывая планы по сегментации сети — необходимо, чтоб сервер знал, в какой vlan какую адресацию отдавать
  • «Репликация» — учитывая, что планируется широко использовать dhcp «привязки» по MAC, нужно чтоб эти «привязки» работали всегда (например, сетевые принтеры)
  • Автоматическое ведение обратных DNS зон
Читайте также:  Как настроить outlook 2007 для автоматического ответа

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

  • Две виртуальные машины на двух разных гипервизорах
  • На машинах стоит centos7 и isc-dhcpd
  • На dhcp настроены failover, динамическое обновление зон и распознавание option 82
  • Option 82 меткой того VLAN, из которого пришел запрос, серверу отдают центральные коммутаторы L3+, на которых все VLAN и разруливаются
  • Так как большинство админов плохо ориентируются в linux и vim, нужна автоматизация процесса добавления статических привязок и механизм репликации конфига

Схема сети:

  • DC0 и DC1 с настроенными DNS серверами, 10.1.2.2 и 10.1.2.3
  • DHCP0 и DHCP1, 10.1.2.4 и 10.1.2.14
  • VLAN’ы пользователей: 10, 11, 20, 21
  • Домен corp.example.ru
  • Дополнительную DNS зону (для linux серверов) — example.lan
  • Маршрутизаторы на базе L3 коммутаторов с поддержкой dhcp option 82. Во всех VLAN’ах они имеют 1-й IP адрес, связаны через OSPF

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

    Для начала в Windows DNS создаем все обратные зоны для всех VLAN’ов, разрешаем зонам небезопасные обновления.

Устанавливаем на виртуальные машины минимальный centos 7, устанавливаем пакет dhcp.

Настраиваем DHCP-relay на интерфейсах управляемых коммутаторов. При этом в качестве circuit-id приходит строка «VLAN10» и т.п.

Теперь добавляем файл конфигурации для каждого VLAN (на примере /etc/dhcp/dhcpd.d/vlan10.conf)

Для второго DHCP сервера создаем аналогичные конфиги, только исправляем в основном файле:

Получились у нас 2 dhcp сервера, в случае отключения одного из них его функции подхватывает второй, при этом оба отвечают на запросы от dhcp relay agent и на основании установленной в dhcp option 82 circuit-id строки (в нашем случае имя VLAN) выдает каждому сегменту его диапазон.

Для репликации серверов достаточно написать скрипт, который синхронизирует файлы в каталоге «/etc/dhcp/dhcpd.d/» и перезапускает dhcp-демон после этого. Сам скрипт приводить не буду из-за очень «костыльного» кода, который писался на коленке и на очень скорую руку. Возможно синхронизировать конфиги с помощью утилиты типа csync2 или rsync.

Для добавления статических привязок также был написан отдельный скрипт, который мне стыдно приводить тут по тем же причинам. Каждый может порезвиться с этим сам либо добавлять статические привязки «ручками».

Единственное «но» — при добавлении нового VLAN основной файл конфигурации «/etc/dhcp/dhcpd.conf» придется править ручками, так как у меня не получилось сделать include на весь каталог, только на конкретные файлы.

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

Повторюсь ещё раз — большинство информации, описанной мной, в интернете навалом, но нигде я не нашел как совместить failover, dhcp-relay и сделать это удобным для синхронизации. Жду ваших замечаний и предложений

Источник

Adblock
detector