高可用性指南

Designate 支持以“主动-主动”HA模式运行其所有组件服务。

某些服务需要额外的设置才能确保它们能够在主动-主动模式下工作,这些服务如下所示。

designate-api

需要访问:

  • 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";
}

说明

要运行多个 designate-api 服务,您应该在负载均衡器后运行这些服务。

在负载均衡器后,您可能需要设置以下内容

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

或者以下内容

[oslo_middleware]
enable_proxy_headers_parsing = true

然后配置负载均衡器以设置适当的标头(例如,在 apache 中启用 mod_proxy)。

designate-central

需要访问:

  • AMQP

  • 数据库

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";
}

说明

只要它们都能访问 AMQP 服务器,您可以运行任意数量的 designate-central 服务,工作将在所有服务之间分配。

designate-mdns

需要访问:

  • AMQP

  • 数据库

  • DNS 服务器

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"
}

说明

只要它们都能访问 AMQP 服务器,您可以运行任意数量的 designate-mdns 服务,工作将在所有服务之间分配。

designate-worker

需要访问:

  • AMQP

  • DNS 服务器

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"
}

说明

只要它们都能访问 AMQP 服务器,您可以运行任意数量的 designate-worker 服务,工作将在所有服务之间分配。

designate-producer

需要访问:

  • 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"
}

说明

只要它们都能访问 AMQP 服务器和分布式锁管理器,您可以运行任意数量的 designate-producer 服务,工作将在所有服务之间分片。

您需要设置一个协调 backend_url。这需要是一个受 tooz 支持的 DLM,并且支持组管理。请参阅 tooz 驱动程序列表 以获取可用的驱动程序

警告

未能设置 backend_url 可能会导致意外后果,并可能导致某些周期性任务被运行多次。

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

designate-sink

需要访问:

  • 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];
}

说明

只要它们都能访问 AMQP 服务器,您可以运行任意数量的 designate-sink 服务,工作将在所有服务之间分配。