Tech:DNS

Miraheze's DNS is self-hosted, on two servers: ns1 and ns2. [//github.com/gdnsd/gdnsd GDNSD] is the software used for this task, and we chose it because GDNSD is open-source, fast, and easy.

Configuration
Our GDNSD configuration can be found at [//github.com/miraheze/dns GitHub], and can be edited by staff with global root access. That doesn't mean though no one can improve our configuration because everyone is welcome to create pull requests.

config
config is the file that contains GDNSD configuration. There is a stanza in it that can be used to load balance the main traffic to multiple servers (e.g. servers running HAProxy). More information about the available options in this file can be found here.

zones
DNS records (for one domain name) are stored in a zone (e.g. https://raw.githubusercontent.com/miraheze/dns/master/zones/miraheze.org).

Deployment
Code is deployed automatically through puppet. This allows code to be merged and put into production within a short time frame and aids quick development cycles as the TTL means a record can be live within 15 minutes to all users. This does, however, bring issues in that deployment is not monitored and a failure (whilst very visible) can cause service issues.

The system should be moved to manual at some point, though there is not enough risk to justify this yet.