---
id: "coordination-service"
type: "kind"
category: "ops"
url: "https://localhost:3000/catalogue/kinds/coordination-service"
---

# Coordination service

Strongly consistent service for metadata, locks, discovery and placement.

| | |
|---|---|
| Category | Operations |
| Properties | 5 |
| Components | 18 |
| Rules | 2 |

## Properties

| property | type | values | required | default |
|---|---|---|---|---|
| `consensus` | enum | `none`, `raft`, `paxos`, `zab` | no | "none" |
| `managed` | boolean | — | no | false |
| `nodes` | integer | — | no | — |
| `replicated` | boolean | — | no | false |
| `role` | enum | `metadata`, `lock`, `discovery`, `placement`, `sharding`, `leader-election`, `config` | yes | — |

## Rules for this kind · 2

### Shared dependency without redundancy `shared-dependency-without-redundancy` (error)

- Page: https://localhost:3000/catalogue/rules/shared-dependency-without-redundancy.md
- Why: The design requires redundant discovery, but this DNS or coordination service, which everything depends on, runs on a single provider or a single replica. Its failure is the whole system's failure.
- Applies to: every node of kind dns or coordination-service
- Message: Shared dependency '{{node.id}}' is not redundant, but the design requires redundant discovery.

It fires when:

- all of these hold:
  - the design requirement `availability.discoveryRedundant` is true
  - any of these hold:
    - the node's `redundantProviders` is false
    - the node's `replicated` is false

### Stateful engine pinned to a single zone `stateful-engine-pinned-to-single-zone` (error)

- Page: https://localhost:3000/catalogue/rules/stateful-engine-pinned-to-single-zone.md
- Why: A matching engine, coordination service or event store living in exactly one availability zone, with no failover and no replication, is lost with that zone. Everything that depends on it stops with it.
- Applies to: every node of kind matching-engine, coordination-service or event-store
- Message: '{{node.id}}' is pinned to a single availability zone with no failover or replication.

It fires when:

- all of these hold:
  - the node sits inside exactly 1 availability-zone group
  - any of these hold:
    - the node's `failover` is "none"
    - the node's `replicated` is false
    - the node's `replication` is "none"

## Components · 18

### vendor-neutral

- [Generic coordination service](https://localhost:3000/catalogue/components/coordination-service.md) `coordination-service` — the kind itself

### alibabacloud

- [Microservices Engine](https://localhost:3000/catalogue/components/alibaba-mse.md) `alibaba-mse` — 3 defaults

### aws

- [AWS Cloud Map](https://localhost:3000/catalogue/components/aws-cloud-map.md) `aws-cloud-map` — 2 defaults

### azure

- [Azure Arc](https://localhost:3000/catalogue/components/azure-arc.md) `azure-arc` — 2 defaults
- [Azure Device Registry](https://localhost:3000/catalogue/components/azure-device-registry.md) `azure-device-registry` — 2 defaults

### cloudflare

- [Durable Objects](https://localhost:3000/catalogue/components/cloudflare-durable-objects.md) `cloudflare-durable-objects` — 3 defaults

### default

- [Apache Helix](https://localhost:3000/catalogue/components/apache-helix.md) `apache-helix` — 3 defaults
- [Consul](https://localhost:3000/catalogue/components/consul.md) `consul` — 3 defaults
- [etcd](https://localhost:3000/catalogue/components/etcd.md) `etcd` — 3 defaults
- [Eureka](https://localhost:3000/catalogue/components/eureka.md) `eureka` — 3 defaults
- [Nacos](https://localhost:3000/catalogue/components/nacos.md) `nacos` — 2 defaults
- [Oxia](https://localhost:3000/catalogue/components/oxia.md) `oxia` — 3 defaults
- [Apache ZooKeeper](https://localhost:3000/catalogue/components/zookeeper.md) `zookeeper` — 3 defaults

### gcp

- [Service Directory](https://localhost:3000/catalogue/components/google-service-directory.md) `google-service-directory` — 3 defaults

### k8s

- [Endpoints](https://localhost:3000/catalogue/components/k8s-endpoints.md) `k8s-endpoints` — 2 defaults

### openstack

- [OpenStack Blazar](https://localhost:3000/catalogue/components/openstack-blazar.md) `openstack-blazar` — 2 defaults
- [OpenStack Cyborg](https://localhost:3000/catalogue/components/openstack-cyborg.md) `openstack-cyborg` — 2 defaults
- [OpenStack Placement](https://localhost:3000/catalogue/components/openstack-placement.md) `openstack-placement` — 2 defaults

## Source (`kind` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../schema/kind.schema.json
# Small strongly consistent service for cluster metadata, locks, discovery, placement and leader election (ZooKeeper, etcd, Consul, Helix).
# Absorbs control-plane-coordinator, sharding-coordinator and service-registry via role.
schemaVersion: "1"
type: "kind"
id: "coordination-service"
category: "ops"
properties:
  role:
    type: "enum"
    values: ["metadata", "lock", "discovery", "placement", "sharding", "leader-election", "config"]
    required: true
  consensus:
    type: "enum"
    values: ["none", "raft", "paxos", "zab"]
    default: "none"
  replicated:
    type: "boolean"
    default: false
  nodes:
    type: "integer"
  managed:
    type: "boolean"
    default: false
```

Human page: https://localhost:3000/catalogue/kinds/coordination-service
