Looking through old notes

Setup description in Services/Club DNS appears to still be mostly accurate.

Things that have changed:

Probably better/easier to use IP aliases on a single interface than to setup two. (This should avoid messages in Observium's event log about MAC <-> IP mappings changing.)

auto eth0:0
iface eth0:0 inet static
        address <addr>
        netmask <mask>

Fits better in Debian's filesystem hierarchy to put the tinydns and dnscache home directories in /var/local. Blech... /var/tinydns is coded into dnsupdate.sh though. So I made a symlink.

Daemontools-run has integration with systemd. Re-arrangement of /etc/inittab shouldn't be necessary. Not yet sure if there are any new gotchas from systemd.

Instead of adding rsync-dns.sh to rsync's crontab, install cclub-rsync-slave-dns.

Can prevent axfrdns from answering AXFR requests (but still allow it to serve DNS-over-TCP) by using :allow,AXFR="" in /var/local/axfrdns/tcp.

Systemd handling for daemontools-run and svinitd actually seems to be a little better than sysvinit handling was in wheezy. Starting the default down services out of /etc/init.d works as expected. Though it's helpful to add LSB headers to those scripts. E.g.,

### BEGIN INIT INFO
# Provides:          authoritative-dns
# Required-Start:    $network daemontools
# Required-Stop:     $network daemontools
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start axfrdns and tinydns at boot time
# Description:       Enable authoritative DNS service provided over TCP by 
#                    axfrdns and provided over UDP by tinydns.
### END INIT INFO

Script needs to be executable, and then enabled at the default run levels (update-rc.d authoritative-dns defaults). Reload systemd so it generates the corresponding unit (systemctl daemon-reload).

Packages

Basic packages for the DNS servers:

Packages for the HA support:

Interaction with the AFS PT/VL servers

Don't want the node-1 servers to answers requests for node-2, if node-1 has taken over DNS for node-2.

This is sort of kludgy. There's /var/lib/openafs/local/NetInfo and /var/lib/openafs/NetRestrict, but that only seems to affect the addresses that are advertised within the protocol. Daemons can use an "-rxbind" options which causes the daemons to only bind to the first IP address.

Possible alternative is mix of NetInfo/NetRestrict and firewall rules.

...

Decided that the best bet is to put the advertised interface in NetInfo, the blocked interfaces in NetRestrict, and block all the ports on the undesired interfaces. NetInfo/NetRestrict seem to be used for advertisements in ubik, and it's okay if the targeted interface is not there.

Basic Idea

Cluster Setup

Gotcha: Need to make sure there aren't entries in /etc/hosts mapping node names to 127.0.1.1!

Essentially follow the Clusters from Scratch documentation for initial cluster setup.

Note that we actually want the corosync and pacemaker services enabled, as opposed to the document's suggestion of always starting them manually.

kbare at CLUB.CC.CMU.EDU/HA DNS Experiment (last edited 2018-07-30 03:40:46 by kbare@CLUB.CC.CMU.EDU)