
The agent service has been replaced by Pools, we should remove it now that pools has fully merged. Additionaly, the Backend tests rely on the Agent code, and no tests exist for Pools based backends. This will be fixed as a priority in Kilo 2. Change-Id: I9cf96dbe8c079792bd55a9eab7a12efb7a983552
3.2 KiB
Architecture
double: architecture; brief
High Level Topology
Designate API
designate-api provides the standard OpenStack style REST API service,
accepting HTTP requests, validating authentication tokens with Keystone
& passing them to the designate-central
service over AMQP. Multiple versions
of the API can be hosted, as well as API extensions, allowing for
pluggable extensions to the core API.
Although designate-api is capable of handling HTTPS traffic, it's typical to terminate HTTPS elsewhere, for example by placing nginx in front of designate-api or by letting the external facing load balancers terminate HTTPS.
Designate Central
designate-central is the service that handles RPC requests via the MQ, it coordinates the persistent storage of data & manipulating backend DNS servers via backends or agents. Storage is provided via plugins, typically SQLAlchemy, although MongoDB or other storage drivers should be possible.
Designate Sink
designate-sink is an optional service which listens for event notifications, such as compute.instance.create.end, handlers are available for Nova and Neutron. Notification events can then be used to trigger record creation & deletion.
The current sink implementations generate simple forward lookup A
records, using a format specified in handler-nova
configuration. Any field in the event
notification can be used to generate a record.
DNS Backend
Backends are drivers for a particular DNS server. Designate supports multiple backend implementations, PowerDNS, BIND and MySQL BIND, you are also free to implement your own backend to fit your needs, as well as extensions to provide extra functionality to complement existing backends.
Message Queue
Designate uses oslo.rpc for messaging between components, therefore it inherits a requirement for a supported messaging bus (such as RabbitMQ, Qpid or ZeroMQ). Typically this means a RabbitMQ setup is dedicated to Designate, but as only a single virtualhost is required for a normal installation, you’re free to use other RabbitMQ instances as you see fit.
Database/Storage
Storage drivers are drivers for a particular SQL/NoSQL server. Designate needs a SQLAlchemy-supported storage engine for the persistent storage of data. The recommended driver is MySQL.