This work is licensed under a Creative Commons Attribution 3.0 Unported License. http://creativecommons.org/licenses/by/3.0/legalcode
Server Pools¶
https://blueprints.launchpad.net/designate/+spec/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
Distribution¶
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
Proposed change¶
Terminology¶
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
Term |
Meaning |
Also known as |
---|---|---|
Server Pool |
group of DNS servers |
|
DNS Zone |
DNS Zone (aka subzone.domain.com.) more commonly referred to as a domain |
|
Zone |
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 |
Backend |
A driver that allows Designate to control a particular type of DNS Server software (BIND, PowerDNS etc) |
|
MiniDNS |
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 |
|
FQDN |
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. example.com. ) |
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.
Scheduler¶
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]
https://wiki.openstack.org/w/images/a/a7/Designate-MiniDNS-Pools.gif [2]
We have discusses this in person twice now - once in the Icehouse mid-cycle, and once in Atlanta at the design summit.
Milestones¶
- Target Milestone for completion:
Kilo-2 [3]
Work Items¶
Work Item |
Assignee |
Priority |
Milestone |
Notes |
---|---|---|---|---|
server-pools-storage |
https://launchpad.net/~rjrjr / https://launchpad.net/~darshan104 |
High |
||
server-pool-manager |
https://launchpad.net/~rjrjr / https://launchpad.net/~darshan104 |
High |
||
server-pools-minidns-support |
High |
|||
server-pools-api |
High |