Skip to content

Etcd

1. 介绍

etcd 是一款基于 Raft 开源的分布式一致性键值存储,由 CoreOS 公司进行维护。

etcd = unix “/etc” + 分布式系统”d”istibuted,大规模分布式系统的配置信息存储系统;

最新版本为 v3.1.1,但 API 有 v3 和 v2 之分,通常指 API 版本号,主要是存储引擎、命令不一样;

数据存储:/var/lib/etcd

2. 术语

术语 描述 备注
Raft 分布式一算法
Leader Raft 的领导节点
Follower Raft 的从属节点
Candidate 候选节点
Node 节点 raft 状态机的一个实例,有唯一标识,并内部记录其他节点的发展,如果它是 leader
Member 成员 etcd 的一个实例。它承载一个 node/节点,并为client/客户端提供服务
Peer 同伴 同一个集群中的其他成员
Cluster 集群 由多个 member/成员组成,每个成员的节点遵循 raft 一致性协议来复制日志。集群从成员中接收提案,提交他们并应用到本地存储
Proposal 提议 一个需要完成 raft 协议的请求(例如写请求,配置修改请求)
Lease 租期
Watch 检测机制
Term 任期
WAL 预写式日志
Client 客户端 集群 HTTP API 的调用者

3. 架构

  • HTTP Server:用于处理用户发送的 API 请求以及其它 etcd 节点的同步与心跳信息请求。
  • Store:用于处理 etcd 支持的各类功能的事务,包括数据索引、节点状态变更、监控与反馈、事件处理与执行等等,是 etcd 对用户提供的大多数 API 功能的具体实现。
  • Raft:Raft 强一致性算法的具体实现,是 etcd 的核心。
  • WAL:Write Ahead Log(预写式日志),是 etcd 的数据存储方式。除了在内存中存有所有数据的状态以及节点的索引以外,etcd 就通过 WAL 进行持久化存储。WAL 中,所有的数据提交前都会事先记录日志。- - Snapshot 是为了防止数据过多而进行的状态快照;Entry 表示存储的具体日志内容。

常用指令

# v2
ETCDCTL_API=2 etcdctl ls /
# v3
ETCDCTL_API=3 etcdctl get /

参考