Tech:DNS

Miraheze's DNS is self-hosted, on three servers (with two of them being dedicated to this task): ns1, ns2 and ns3. [//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 (while very very easily to be seen) can cause service issues.

The system should be moved to manual at some point though there is not enough risk to justify this yet as all DNS changes are reviewed by John before going live.