A distributed, reliable key-value store for the most critical data of a distributed system


Features


Simple interface

Read and write values using standard HTTP tools, such as curl

Key-value storage

Store data in hierarchically organized directories, as in a standard filesystem

Watch for changes

Watch specific keys or directories for changes and react to changes in values

/configapp2app1



Optional SSL client certificate authentication



Benchmarked at 1000s of writes/s per instance



Optional TTLs for keys expiration



Properly distributed via Raft protocol


What is etcd?


Project


etcd is a strongly consistent, distributed key-value store that provides a reliable way to store data that needs to be accessed by a distributed system or cluster of machines. It gracefully handles leader elections during network partitions and can tolerate machine failure, even in the leader node.

Applications of any complexity, from a simple web app to Kubernetes, can read data from and write data into etcd.

Your applications can read from and write data into etcd. A simple use case is storing database connection details or feature flags in etcd as key-value pairs. These values can be watched, allowing your app to reconfigure itself when they change. Advanced uses take advantage of etcd’s consistency guarantees to implement database leader elections or perform distributed locking across a cluster of workers.

etcd is open source, available on GitHub, and backed by the Cloud Native Computing Foundation.

Technical overview


etcd is written in Go, which has excellent cross-platform support, small binaries and a great community behind it. Communication between etcd machines is handled via the Raft consensus algorithm.

Latency from the etcd leader is the most important metric to track and the built-in dashboard has a view dedicated to this. In our testing, severe latency will introduce instability within the cluster because Raft is only as fast as the slowest machine in the majority. You can mitigate this issue by properly tuning the cluster. etcd has been pre-tuned on cloud providers with highly variable networks.

Adopters


etcd is the backend for service discovery and stores cluster state and configuration
etcd serves as the orchestration engine for Rook
CoreDNS uses etcd as an optional backend
M3, a large-scale metrics platform for Prometheus created by Uber, uses etcd for rule storage and other functions
OpenStack supports etcd as an optional provider of configuration storage, distributed key locking, and more

  • Patroni

    A template for PostgreSQL HA with ZooKeeper, etcd, or Consul

  • Trillian

    A transparent, highly scalable and cryptographically verifiable data store, created by Google


In addition, thousands of projects on GitHub are affiliated with etcd, including projects built on etcd, client bindings, and more.

etcd is a Cloud Native Computing Foundation incubating project