Using DNS TXT Records for Configuring Server Nodes
Large-scale server systems are common in this age. A small computing grid can easily consist of a few hundred nodes. Configuring such a server network can be tedious and usually requires a centralized change management system. If the centralized change management system went down, configuration/updates on the nodes can be affected.
By establishing a standard in your DNS TXT records, we can embed information such as:
- Remote upstream server's hostname
- Listening TCP ports on this hostname
- Available services (in the form of a bitmask) on this server
For instance, we have a node with a hostname called node123.abc.com which connects to job1.abc.com to communicate information. We can embed the upstream hostname information (job1) in the DNS TXT record for node123. We will also embed the TCP listening ports and the type of services available in job1's DNS TXT record. Now, the client software on node123 only needs to retrieve node123's DNS TXT and learns that it needs to connect job1 as its upstream server. It will then retrieve job1's DNS TXT record and learns of the listening TCP ports on job1 machine that will listen for incoming TCP connections.
Advantages
- Resilient distribution mechanism built on top of DNS infrastructure with DNS caching and secondary DNS servers.
- Centralized configuration node can be "hidden" behind a firewall without being exposed on the Internet.
- Zero-configuration on the nodes as all configuration information could potentially be learnt from the DNS TXT records, so a single installation base can be utilized for all computing nodes. In fact, in theory, you will only need to configure the node's hostname and IP network information.
Disadvantages
- Delay in changes from configuration updates to actual change implementation on the server (due to DNS cache)
- Potential leaks in configuration information as anyone can "lookup" the DNS records.
- Often requires significant changes in client source code to use DNS TXT records to learn about its connection configuration
- Limited by the small data size (approx 250 bytes) in the DNS TXT record specification.