etcd:一款 Go 语言编写的高可用分布式键值数据库
etcd 是一款可靠的分布式键值(key-value)存储数据库,专注于:
- 简单:定义明确、面向用户的 API(gRPC)
- 安全:具有可选客户端证书身份验证的自动 TLS
- 快速:benchmark 基准测试 10,000 writes/sec
- 可靠:使用 Raft 一致性算法
etcd 使用 Go 语言编写,使用 Raft 共识算法来管理高可用的 replicated log。
etcd 已经被多个公司用于生产环境,开发团队在关键部署场景中支持它,在这些场景中,etcd 经常与 Kubernetes、locksmith、vulcand、Doorman 等应用合作。通过严格的稳健性测试进一步确保了可靠性。
开始
获取 etcd
获取 etcd 的最简单方法是使用预构建发布的二进制文件,这些二进制文件可在其发布页面上获取,适用于 OSX、Linux、Windows 和 Docker。
运行 etcd
首先启动 etcd 的单个成员集群
如果 etcd 是使用预构建发布的二进制文件,请在安装目录中运行:
/tmp/etcd-download-test/etcd
可使用如下命令将其移动到系统目录再执行,如下:
mv /tmp/etcd-download-test/etcd /usr/local/bin/
etcd
这一操作会启动 etcd,使之监听 2379 端口以供客户端通信,监听 2380 端口以供服务端之间通信。
接着,我们设置单个 key,并检索之:
etcdctl put mykey "this is awesome"
etcdctl get mykey
etcd 现在正在运行并为客户端请求提供服务。欲了解更多信息,请查看:
etcd TCP 端口
官方的 etcd 端口为:2379 用于客户端请求,2380 用于对等通信。
运行本地 etcd 集群
首先安装 goreman
,它管理基于 Procfile 的应用
Procfile 脚本会安装本地示例集群。使用如下命令开始:
goreman start
这将带来 3 个 etcd 成员 infra1、infra2 和 infra3,以及可选的 etcd grpc-proxy,它们在本地运行并组成一个集群。
每个集群成员和代理都接受键值的读写。
按照 Procfile.learner 中的步骤将 learner 节点添加到集群中。使用以下内容启动 learner 节点:
goreman -f ./Procfile.learner start
安装 etcd client v3
go get go.etcd.io/etcd/client/v3