# High Availability Guide

Designate supports running all of its components services in “active-active” HA modes.

Some services require some extra setup to ensure that they can work in active-active, and the services are listed below.

## designate-api

### Needs Access to:

- AMQP

digraph APIHA { rankdir=LR {"L7 Load Balancers" [shape=box] "API Server 1" [shape=box] "API Server 2" [shape=box] "API Server 3" [shape=box] "AMQP Servers" [shape=box] } subgraph "API Servers" { cluster=true; label="API Servers"; "API Server 1"; "API Server 2"; "API Server 3"; } "L7 Load Balancers" -> {"API Server 1" "API Server 2" "API Server 3"} -> "AMQP Servers"; }

### Notes

To run multiple designate-api services, you should run the services behind a load balancer.

When behind the load balancer, you may need to set the following:

    [service:api]
    api_base_uri = http://<load balancer URI>/
    enable_host_header = True

Or the following:

    [oslo_middleware]
    enable_proxy_headers_parsing = true

And then the load balancer to set appropriate headers (e.g. enable mod_proxy in apache.)

## designate-central

### Needs Access to:

- AMQP

- Database

digraph CENTRALHA { rankdir=LR {"AMQP Servers" [shape=box] "designate-central Server 1" [shape=box] "designate-central Server 2" [shape=box] "designate-central Server 3" [shape=box] "Database Servers" [shape=cylinder] } subgraph "designate-central Servers" { cluster=true; label="designate-central Servers"; "designate-central Server 1"; "designate-central Server 2"; "designate-central Server 3"; } "AMQP Servers" -> "designate-central Server 1" [dir=both]; "AMQP Servers" -> "designate-central Server 2" [dir=both]; "AMQP Servers" -> "designate-central Server 3" [dir=both]; "designate-central Server 1" -> "Database Servers"; "designate-central Server 2" -> "Database Servers"; "designate-central Server 3" -> "Database Servers"; }

### Notes

You can run as many designate-central services as needed, as long as they all have access to the AMQP server(s), work will be distributed across all of them.

## designate-mdns

### Needs Access to:

- AMQP

- Database

- DNS Servers

digraph MDNSHA { rankdir=LR {"AMQP Servers" [shape=box] "designate-mdns Server 1" [shape=box] "designate-mdns Server 2" [shape=box] "designate-mdns Server 3" [shape=box] "DNS Servers" [shape=egg] "Database Servers" [shape=cylinder] } subgraph "designate-mdns Servers" { cluster=true; label="designate-mdns Servers"; "designate-mdns Server 1"; "designate-mdns Server 2"; "designate-mdns Server 3"; } "AMQP Servers" -> "designate-mdns Server 1" [dir=both]; "AMQP Servers" -> "designate-mdns Server 2" [dir=both]; "AMQP Servers" -> "designate-mdns Server 3" [dir=both]; "designate-mdns Server 1" -> "Database Servers" [dir=back]; "designate-mdns Server 2" -> "Database Servers" [dir=back]; "designate-mdns Server 3" -> "Database Servers" [dir=back]; "designate-mdns Server 1" -> "DNS Servers" "designate-mdns Server 2" -> "DNS Servers" "designate-mdns Server 3" -> "DNS Servers" }

### Notes

You can run as many designate-mdns services as needed, as long as they all have access to the AMQP server(s), work will be distributed across all of them.

## designate-worker

### Needs Access to:

- AMQP

- DNS Servers

digraph WORKERSHA { rankdir=LR {"AMQP Servers" [shape=box] "designate-worker Server 1" [shape=box] "designate-worker Server 2" [shape=box] "designate-worker Server 3" [shape=box] "DNS Servers" [shape=egg] } subgraph "designate-worker Servers" { cluster=true; label="designate-worker Servers"; "designate-worker Server 1"; "designate-worker Server 2"; "designate-worker Server 3"; } "AMQP Servers" -> "designate-worker Server 1" [dir=both]; "AMQP Servers" -> "designate-worker Server 2" [dir=both]; "AMQP Servers" -> "designate-worker Server 3" [dir=both]; "designate-worker Server 1" -> "DNS Servers" "designate-worker Server 2" -> "DNS Servers" "designate-worker Server 3" -> "DNS Servers" }

### Notes

You can run as many designate-worker services as needed, as long as they all have access to the AMQP server(s), work will be distributed across all of them.

## designate-producer

### Needs Access to:

- AMQP

- DLM

digraph PRODUCERSHA { rankdir=LR {"AMQP Servers" [shape=box] "designate-producer Server 1" [shape=box] "designate-producer Server 2" [shape=box] "designate-producer Server 3" [shape=box] "DLM Servers" [shape=octagon] } subgraph "designate-producer Servers" { cluster=true; label="designate-producer Servers"; "designate-producer Server 1"; "designate-producer Server 2"; "designate-producer Server 3"; } "AMQP Servers" -> "designate-producer Server 1" [dir=both]; "AMQP Servers" -> "designate-producer Server 2" [dir=both]; "AMQP Servers" -> "designate-producer Server 3" [dir=both]; "designate-producer Server 1" -> "DLM Servers" "designate-producer Server 2" -> "DLM Servers" "designate-producer Server 3" -> "DLM Servers" }

### Notes

You can run as many designate-producer services as needed, as long as they all have access to the AMQP server(s), and a distributed lock manager, work will be sharded across all the services.

You will need to set a coordination backend_url. This needs to be a DLM that is supported by tooz, that supports group membership. See tooz driver list for available drivers

Warning

Failure to set a backend_url can cause unexpected consequences, and may result in some periodic tasks being ran more than once.

    [coordination]
    backend_url = kazoo://<zookeeper url>:<zookeeper port>

## designate-sink

### Needs Access to:

- AMQP

digraph SINKSHA { rankdir=LR {"AMQP Servers" [shape=box] "designate-sink Server 1" [shape=box] "designate-sink Server 2" [shape=box] "designate-sink Server 3" [shape=box] } subgraph "designate-sink Servers" { cluster=true; label="designate-sink Servers"; "designate-sink Server 1"; "designate-sink Server 2"; "designate-sink Server 3"; } "AMQP Servers" -> "designate-sink Server 1" [dir=both]; "AMQP Servers" -> "designate-sink Server 2" [dir=both]; "AMQP Servers" -> "designate-sink Server 3" [dir=both]; }

### Notes

You can run as many designate-sink services as needed, as long as they all have access to the AMQP server(s), work will be distributed across all of them.

this page last updated: 2026-08-19 02:25:39

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug