DNS and DHCP are core services that people probably want on their home network. Most home users will be given a router or purchase one and just use the services built into it. The Stein home network is a little more complicated with multiple sub-nets and VLANs, so a more comprehensive solution was desired.
A major concern facing this design is that DNS and DHCP services are very important and need to be highly available. Secondary factors are low cost and simplicity. Both the ISC tools and Pacemaker were considered, but it was decided that they increased complexity without providing enough of a gain in functionality.
On a high level the design consists of two Linux virtual machines hosted on two different host servers. They both run dnsmasq, but with only one server being active at a time. DNS lookup services are directed to a virtual IP, (IPv4 and ipV6), that moves between the two servers. While it is possible to store DHCP leases in a database, a mirrored disk is used so that configuration files can also be shared. The heartbeat software manages which server holds the IP, is running the dnsmasq service and has control of the disk.
As the domain names are hosted by a third party, ddclient is used to dynamically update IPv4 addresses with them. Unfortunately there is not currently a dynamic IPv6 client available. While people may say that this should not be necessary in the few years that I have been running IPv6, (beginning around 2015), Comcast has changed my network prefix two times. That is not a lot, but it is annoying as I have to update configurations on my domain name maintainer, my local network and my firewall.
For the complete write-up of how this was implemented on my home network see the document linked below.