Brussels / 30 & 31 January 2016


Managing a complex DNS environment

At Facebook DNS has many purposes, from inventory, service management, to global load balancer for the DNS record. It makes managing all those different use cases a challenge when we want to reconcile the ability to be flexible and the need of a stable infrastructure. This talk will show how the configuration is generated and processed by a set of micro services, and also how the DNS servers themselves consume it. It concludes on a small digression about how in addition to the common DNS records we use to load balance our billion daily active user and make them connect to the closest location.

This talk will cover the pipelines that generates the configuration which is a data driven process, it shows how we aggregate and override configuration for human and machines, how we distribute the configuration and update it but also how we can keep human in control in case of emergency. It involves presenting most of the tool on which that pipeline relies, which is lots of open source software (TinyDNS, Unbound, Zookeeper, BitTorrent, ExaBGP, Sparts, Thrift, Git, LXC, ...) and a good share of Python Glue. The real life example of a global load balancer includes a small presentation about how are daily egress and ingress traffic is and how we have the ability to segment users and optimize the network capacity in our point of presence to direct user to those entry points. The configuration of those is based on a system that compute the distance to the user in terms of round trip time and generate the DNS data accordingly.


Stephan Gorget