Richard Bucker

SkyDNS vs Consul

Posted at — Jul 3, 2016

Competition is a good thing and that someone at HasiCorp decided to compare SkyDNS to Consul is also a good thing. I’m just a little tweaked about the biased nature of the review even though I cannot find fault with wanting to come out on top.


Getting SkyDNS started is as simple as:
  1. start etcd if not already running (systemctl start etcd2)
  2. pull SkyDNS from the docker registry (docker pull skynetservices/skydns)
  3. set your SkyDNS config (etcdctl set /skydns/config ‘{“dns_addr”:“127.0.0.1:53”,“ttl”:3600, “domain”:“nuc.local”, “nameservers”: [“8.8.8.8:53”,“8.8.4.4:53”]}’)
    1. you must restart SkyDNS after any config change
    2. only supports one domain
    3. passthru to other nameservers
  4. launch SkyDNS (docker run -it –net host –name skydns skynetservices/skydns)
  5. install a test record (etcdctl set /skydns/local/nuc/bob ‘{“host”:“127.0.0.1”,“port”:8080}’)
  6. test SkyDNS (dig @localhost bob.nuc.local)
  7. remove the test record (etcdctl rm /skydns/local/nuc/bob)
Some of the criticism from the mentioned reviewer was the distributed datacenter. SkyDNS does not really support that model even though the reviewer said it did and that under DR conditions it was slow to recover. Frankly these statements are WRONG. SkyDNS relies on etcd which does not specifically have a spanning datacenter feature. Partitioned datacenters are common and WAN distributed systems with highlevel of dependency an replication are a problem unto themselves.

In more concise terms. The reviewer said that Consul handled partitioned networks better but then fails to recognize that if the datacenters were partitioned that the dependent distributed services might also be partitioned.
The one benefit of Consul over SkyDNS is a false example.
Operations teams know that there are a number of costs associaed cross datacenter transactions and network reliability, latency, throughout and costs… Consul offers no distinct advantage here. etcd, on the other hand, separates the storage from the protocol.

Lastly; the reviewer makes the point that both HTTP and DNS protocols are supported. In a way that is true, however, to be precise the HTTP(s) service is actually provided by etcd and not SkyDNS.

PS: as of this point in time version 3 of etcd is newly available although I do not know what new and improved features to expect.