Running ISC DHCP in an active-active pair keeps address assignment available during node maintenance or unexpected reboots, reducing the chance of clients failing to obtain or renew leases.
An active-active DHCP design relies on the dhcpd failover protocol so both servers can answer requests while coordinating lease ownership. pcs (Pacemaker) manages the DHCP systemd unit as a cloned resource so the daemon runs on every cluster node and is restarted when health checks fail.
Starting multiple DHCP servers without failover coordination risks duplicate leases and intermittent client connectivity. Ensure both nodes share the same pools and options, the failover peer relationship is stable, and inter-node traffic allows failover synchronization (commonly TCP port 647) before handing DHCP service control to pcs.
Steps to set up ISC DHCP active-active with PCS:
- Confirm the cluster is online with quorum.
$ sudo pcs status Cluster name: clustername Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: node-01 (version 2.1.6-6fdc9deea29) - partition with quorum * Last updated: Thu Jan 1 04:29:59 2026 on node-01 * Last change: Thu Jan 1 04:29:57 2026 by root via cibadmin on node-01 * 3 nodes configured * 0 resource instances configured Node List: * Online: [ node-01 node-02 node-03 ] Full List of Resources: * No resources Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
- Identify the ISC DHCP systemd service unit name.
$ systemctl list-unit-files --type=service | grep -E '^(isc-dhcp-server|dhcpd)\.service' isc-dhcp-server.service disabled enabled
- Validate the /etc/dhcp/dhcpd.conf syntax on each node.
$ sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf Internet Systems Consortium DHCP Server 4.4.3-P1 Copyright 2004-2022 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Config file: /etc/dhcp/dhcpd.conf Database file: /var/lib/dhcp/dhcpd.leases PID file: /var/run/dhcpd.pid
No output indicates the configuration parsed successfully.
Syntax errors prevent the daemon from starting and can trigger repeated restart attempts.
- Disable automatic DHCP service start outside Pacemaker on each node.
$ sudo systemctl disable isc-dhcp-server.service Synchronizing state of isc-dhcp-server.service with SysV service script with /usr/lib/systemd/systemd-sysv-install. Executing: /usr/lib/systemd/systemd-sysv-install disable isc-dhcp-server Synchronizing state of isc-dhcp-server.service with SysV service script with /usr/lib/systemd/systemd-sysv-install. Executing: /usr/lib/systemd/systemd-sysv-install disable isc-dhcp-server Synchronizing state of isc-dhcp-server.service with SysV service script with /usr/lib/systemd/systemd-sysv-install. Executing: /usr/lib/systemd/systemd-sysv-install disable isc-dhcp-server
Use dhcpd.service when that unit is present.
Using --now can interrupt lease renewals if no other DHCP server is active.
- Create the ISC DHCP service resource.
$ sudo pcs resource create dhcp_service systemd:isc-dhcp-server op monitor interval=30s
Use systemd:dhcpd when that unit is present.
Related: How to create a Pacemaker resource
- Clone the ISC DHCP service resource across nodes.
$ sudo pcs resource clone dhcp_service meta clone-max=2 clone-node-max=1
Set clone-max to the number of nodes expected to run dhcpd.
- Verify the cloned resource status.
$ sudo pcs status resources * Clone Set: dhcp_service-clone [dhcp_service]: * Started: [ node-01 node-02 ] - Confirm the DHCP daemon is listening on UDP port 67 on each node.
$ sudo ss -lunp | grep -E ':67[[:space:]]' UNCONN 0 0 0.0.0.0:67 0.0.0.0:* users:(("dhcpd",pid=180019,fd=7))Port 67/udp serves DHCPv4, while DHCPv6 uses 547/udp.
- Update DHCP relays to forward client requests to all active nodes.
- Run a failover test with the traffic distribution in place.
Mohd Shakir Zakaria is a cloud architect with deep roots in software development and open-source advocacy. Certified in AWS, Red Hat, VMware, ITIL, and Linux, he specializes in designing and managing robust cloud and on-premises infrastructures.
