This work is licensed under a Creative Commons Attribution 3.0 Unported License.

Server Pools

Problem description

Server Pools are required for a few different scenarios:

Private Pools

This allows users to have ‘private’ DNS servers. These servers would typically allow non standard TLDs (.dev , .local etc), and may not have the same level of blacklist restrictions. They would be aimed at people with Neutron Networking, and VPC style set ups, where access to the DNS server would come from trusted networks (E.G. in-cloud - owned instances, and onsite resources connect by VPN)

This would allow customers to set DNS entries for internal servers, on domains that would not be available on the public pools, and have them accessible by internal users


Having multiple public pools with the same capabilities, would allow the scheduler to distribute zones across multiple infrastructures.

As part of the pools change we are also changing how the servers API works, to allow for more fine grained control of servers, their capabilities and backends

Features / Premium Systems

By using scheduler hints, we can mark different pools as having different capabilities - such as GeoIP / Round Robin DNS / Anycast.

This allows operators to run different DNS infrastructures as required. For example this allow users to have some zones on pools with GeoIP, and pay a premium for this feature, while having the rest of their zones on a cheaper ‘standard’ tier.

Proposed change


The terms for different parts of pool manager can be confusing, so the following list should be use when referring to components of Server Pools



Also known as

Server Pool

group of DNS servers

DNS Zone

DNS Zone (aka more commonly referred to as a domain


See DNS Zone

Presentation DNS Server

Customer Facing DNS server (used by people to resolve zones owned by designate)

Name Server

A FQDN (or IP, but usually a FQDN) that is used to populate the NS Records of a Designate Managed Zone. Each Pool will have a set of Name Servers, which users then delegate to from their registrar

nameserver, ns record


A driver that allows Designate to control a particular type of DNS Server software (BIND, PowerDNS etc)


A designate service that is used to send notifies to servers that need to be updated (with new information about Zones), and serves AFXR requests with the new information. There is usually a shared set of MiniDNS servers for all pools


Fully Qualified Domain Name - a DNS entry that has both a hostname section (i.e. ns1. ) and a zone section (including the trailing ‘.’) (i.e. )

This will allow us to split domains between different groups of servers. This will have a fairly massive impact across the whole system - and will require changes to nearly every part of Designate.

We will add 2 major pieces to Designate:

Pool Manager

This is a service that will be responsible for notifying DNS servers that changes have occured. This will take the backends implemented for MiniDNS, and load them.

It will take the place of the miniDNS notifier section, and will be responsible for checking async operations.


This service will be resonsible for assigning zones to pools.

The scheduler will assign a zone to a pool based on hints in the request, or if there is no hints in the request, any pool that has capacity.

Initially for pools there a single ‘default pool’ defined in the config, and overrides will be allowed via the ‘hints’ section of a zone create API request

Flow of information with Server Pools

Single Frames available [1]

Overview Image [2]

We have discusses this in person twice now - once in the Icehouse mid-cycle, and once in Atlanta at the design summit.



Target Milestone for completion:

Kilo-2 [3]

Work Items

Work Item





server-pools-storage /


server-pool-manager /