编程

etcd:一款 Go 语言编写的高可用分布式键值数据库

1171 2023-04-22 09:15:00

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