Я использую ISC DHCP версии 4.1.1 в Debian GNU / Linux на обоих серверах. Я попытался решить следующую проблему, используя различные версии ISC DHCP, но она осталась прежней.
Моя конфигурация для переключения между двумя серверами в разных подсетях:
#-----------------------------------------------
# Primary Server
#-----------------------------------------------
authoritative;
default-lease-time 900;
max-lease-time 1800;
option domain-name "foo.com";
option domain-name-servers 10.12.0.254;
failover peer "foo" {
primary;
address 10.12.0.254;
port 647;
peer address 10.10.10.12;
peer port 647;
max-response-delay 30;
max-unacked-updates 10;
load balance max seconds 3;
mclt 1800;
split 128;
}
subnet 10.12.0.0 netmask 255.255.0.0 {
pool {
failover peer "foo";
range 10.12.10.0 10.12.112.0;
range 10.12.112.12 10.12.255.254;
deny dynamic bootp clients;
}
option routers 10.12.0.254;
option subnet-mask 255.255.0.0;
option broadcast-address 10.12.255.255;
}
#-----------------------------------------------
# Secondary Server
#-----------------------------------------------
authoritative;
default-lease-time 900;
max-lease-time 1800;
option domain-name "foo.com";
option domain-name-servers 10.12.0.254;
failover peer "foo" {
secondary;
address 10.10.10.12;
port 647;
peer address 10.12.0.254;
peer port 647;
max-response-delay 30;
max-unacked-updates 10;
load balance max seconds 3;
}
subnet 10.12.0.0 netmask 255.255.0.0 {
pool {
failover peer "foo";
range 10.12.10.0 10.12.112.0;
range 10.12.112.12 10.12.255.254;
deny dynamic bootp clients;
}
option routers 10.12.0.254;
option subnet-mask 255.255.0.0;
option broadcast-address 10.12.255.255;
}
subnet 10.10.10.0 netmask 255.255.255.240 {
}
Помощник IP (он же помощник UDP) и ретрансляция DHCP включены на маршрутизаторе, который соединяет сеть первичного сервера с сетью вторичного сервера. Я могу пинговать и ssh с одного сервера на другой и обратно.
Когда я запускаю службу dhcpd на обоих серверах, они не могут сбалансировать свои аренды.
Приклеиваю образец логов обоих серверов
Основной сервер
Sep 19 10:31:11 primary dhcpd: failover peer foo: I move from recover to startup
Sep 19 10:31:11 primary dhcpd: failover peer foo: I move from startup to recover
Sep 19 10:31:11 primary dhcpd: Sent update request all message to foo
Sep 19 10:31:20 primary dhcpd: peer foo: disconnected
Sep 19 10:31:22 primary dhcpd: failover peer foo: peer moves from recover-done to recover-done
Sep 19 10:31:22 primary dhcpd: failover peer foo: peer moves from recover-done to recover-done
Sep 19 10:31:45 primary dhcpd: DHCPINFORM from 10.12.181.177 via eth1
Sep 19 10:31:45 primary dhcpd: DHCPACK to 10.12.181.177 (00:17:42:c0:e3:ce) via eth1
Sep 19 10:32:45 primary dhcpd: DHCPDISCOVER from 00:16:d3:e5:3a:3c (PC1) via eth1: not responding (recovering)
Sep 19 10:32:46 primary dhcpd: DHCPINFORM from 10.12.181.177 via eth1
Sep 19 10:32:46 primary dhcpd: DHCPACK to 10.12.181.177 (00:17:42:c0:e3:ce) via eth1
Sep 19 10:32:49 primary dhcpd: DHCPDISCOVER from 00:16:d3:e5:3a:3c (PC1) via eth1: not responding (recovering)
Sep 19 10:32:57 primary dhcpd: DHCPDISCOVER from 00:16:d3:e5:3a:3c (PC1) via eth1: not responding (recovering)
Sep 19 10:33:13 primary dhcpd: DHCPDISCOVER from 00:19:99:95:41:99 (PC2) via eth1: not responding (recovering)
Sep 19 10:33:13 primary dhcpd: DHCPDISCOVER from 00:16:d3:e5:3a:3c (PC1) via eth1: not responding (recovering)
Sep 19 10:33:17 primary dhcpd: DHCPDISCOVER from 00:19:99:95:41:99 (PC2) via eth1: not responding (recovering)
Sep 19 10:33:25 primary dhcpd: DHCPDISCOVER from 00:19:99:95:41:99 (PC2) via eth1: not responding (recovering)
Sep 19 10:33:41 primary dhcpd: DHCPDISCOVER from 00:19:99:95:41:99 (PC2) via eth1: not responding (recovering)
Вторичный Сервер
Sep 19 10:31:11 secondary dhcpd: Update request all from foo: sending update
Sep 19 10:31:23 secondary dhcpd: Wrote 22 leases to leases file.
Sep 19 10:31:23 secondary dhcpd: failover peer foo: I move from recover-done to startup
Sep 19 10:31:23 secondary dhcpd: failover peer foo: I move from startup to recover-done
Sep 19 10:31:45 secondary dhcpd: DHCPINFORM from 10.12.181.177 via 10.12.0.1
Sep 19 10:31:45 secondary dhcpd: DHCPACK to 10.12.181.177 (00:17:42:c0:e3:ce) via eth0
Sep 19 10:32:45 secondary dhcpd: DHCPDISCOVER from 00:16:d3:e5:3a:3c via 10.12.0.1: not responding (recover done)
Sep 19 10:32:46 secondary dhcpd: DHCPINFORM from 10.12.181.177 via 10.12.0.1
Sep 19 10:32:46 secondary dhcpd: DHCPACK to 10.12.181.177 (00:17:42:c0:e3:ce) via eth0
Sep 19 10:32:49 secondary dhcpd: DHCPDISCOVER from 00:16:d3:e5:3a:3c via 10.12.0.1: not responding (recover done)
Sep 19 10:32:57 secondary dhcpd: DHCPDISCOVER from 00:16:d3:e5:3a:3c via 10.12.0.1: not responding (recover done)
Sep 19 10:33:13 secondary dhcpd: DHCPDISCOVER from 00:19:99:95:41:99 via 10.12.0.1: not responding (recover done)
Sep 19 10:33:13 secondary dhcpd: DHCPDISCOVER from 00:16:d3:e5:3a:3c via 10.12.0.1: not responding (recover done)
Sep 19 10:33:17 secondary dhcpd: DHCPDISCOVER from 00:19:99:95:41:99 via 10.12.0.1: not responding (recover done)
Sep 19 10:33:25 secondary dhcpd: DHCPDISCOVER from 00:19:99:95:41:99 via 10.12.0.1: not responding (recover done)
Sep 19 10:33:41 secondary dhcpd: DHCPDISCOVER from 00:19:99:95:41:99 via 10.12.0.1: not responding (recover done)
Sep 19 10:34:46 secondary dhcpd: DHCPDISCOVER from 00:1a:4b:45:3a:2f via 10.12.0.1: peer holds all free leases
Sep 19 10:34:51 secondary dhcpd: DHCPDISCOVER from 00:1a:4b:45:3a:2f via 10.12.0.1: peer holds all free leases
Sep 19 10:34:59 secondary dhcpd: DHCPDISCOVER from 00:1a:4b:45:3a:2f via 10.12.0.1: peer holds all free leases
Sep 19 10:35:16 secondary dhcpd: DHCPDISCOVER from 00:1a:4b:45:3a:2f via 10.12.0.1: peer holds all free leases
Sep 19 10:38:28 secondary dhcpd: DHCPDISCOVER from 00:16:d3:e5:3a:3c via 10.12.0.1: not responding (recover done)
Sep 19 10:38:32 secondary dhcpd: DHCPDISCOVER from 00:16:d3:e5:3a:3c via 10.12.0.1: not responding (recover done)
Кажется, у меня нет строк журнала балансировки нагрузки, поэтому я не думаю, что балансировка аренды происходит ...
Sent update request all message to foo
Update request all from foo: sending update
Кажется, что процесс балансировки застрял на двух строках выше
Если я отключу демон DHCPD на одном сервере, одноранговый узел не перейдет к власти, даже если обнаружит, что другой одноранговый узел не работает.
Как я могу исправить эту проблему?
Заранее спасибо (и извините за мой плохой английский) :-)
Сообщение not responding (recovering)
указывает, что сервер не отвечает, потому что он восстанавливается после аварийного переключения (или первоначального запуска). И, вероятно, все еще заполняет базы данных аренды всеми бесплатными арендами из вашего пула, что может занять некоторое время, если у вас большой пул.
Попробуйте использовать пул меньшего размера, чтобы убедиться, что аварийное переключение работает правильно, а затем выполните корректировку. Ваш диапазон очень велик и, вероятно, причина того, что он зависает при обновлении.
Я уже сталкивался с этой проблемой раньше. Для меня это был брандмауэр, блокирующий порт 647 / tcp на обоих серверах. Я запустил следующее на каждом сервере, и это решило проблему.
firewall-cmd --add-port=647/tcp --permanent
firewall-cmd --reload
После этого перезапустите службу dhcpd.
Сообщение об ошибке peer holds all free leases
также может означать, что запрос был получен не на том сетевом интерфейсе, например если компьютер настроен только на получение IP eth0
, но запрос DHCP получен eth1
. deny dynamic bootp clients
типично для такой установки. В моем случае один интерфейс предназначался для сети рабочей станции, а другой - только для принтеров, и кто-то подключил рабочую станцию к сети принтера.
Видеть моя запись в блоге о том, когда я столкнулся с этим сообщением об ошибке и не нашел очевидной причины на Debian тоже.
Я не могу вспомнить, что видел сообщение not responding (recovering)
тогда, но у меня также было peer holds all free leases
на обоих DHCP-серверах.