什么是Etcd,如何运维Etcd ?

介绍

ETCD 是一个分布式、可靠的 key-value 存储的分布式系统,用于存储分布式系统中的关键数据;固然,它不单单用于存储,还提供配置共享及服务发现;基于Go语言实现。html

ETCD的特色

简单:定义明确,面向用户的API(gRPC)
安全:具备可选客户端证书身份验证的自动TLS
快速:基准10,000次写入/秒
可靠:使用Raft正确分发node

ETCD的做用

etcd中存储了集群的元数据信息,集群状态和网络配置,在高可用集群中每每会采用奇数节点(最少3个)的集群。git

ETCD proxy功能简介

etcd提供了proxy功能,即代理功能,etcd能够代理的方式来运行。github

etcd代理能够运行在每一台主机,在这种代理模式下,etcd的做用就是一个反向代理,把客户端的etcd请求转发到真正的etcd集群。这种方式既增强了集群的弹性,又不会下降集群的写的性能。shell

在rainbond集群中,除管理节点之外的其余节点都经过etcd-proxy方式与etcd服务端创建链接。安全

ETCD经常使用运维命令

etcd 提供了 etcdctl 命令行工具 和 HTTP API 两种交互方法。etcdctl命令行工具用 go 语言编写,也是对 HTTP API 的封装,平常使用起来也更容易。因此这里咱们主要使用 etcdctl 命令行工具演示。性能优化

  • etcd最新的API版本是v3,与v2相比,v3更高效更清晰。要使用v3,设置环境变量便可。
export ETCDCTL_API=3
etcdctl version
  • 列出集群内的成员以及他们当前的角色是否是leader
etcdctl member list
  • 查看节点状态
etcdctl endpoint health
  • 跟集群成员相关的命令以下:
member add        添加成员
member remove     删除成员
member update     更新集群中的一个成员
member list       列出及集群中的成员
  • 经过 put 将 key 和 value 存储到 etcd 集群中。每一个存储的密钥都经过 Raft 协议复制到全部 etcd 集群成员,以实现一致性和可靠性。示例:

设置键的值的命令 key 到 value:网络

$ etcdctl put key value
OK
  • 从etcd 集群中读取 key 的值。
etcdctl get  key

上述命令同时返回 key 和 value,若是只读取 key 对应的值,则使用如下命令运维

etcdctl get key --print-value-only

按key前缀查找rainbond集群全部节点信息分布式

etcdctl get /rainbond/node  --prefix
  • 监测一个键值的变化,一旦键值发生更新,就会输出最新的值
etcdctl watch key
  • 删除key

删除 key 为 key的命令

$ etcdctl del key
1

删除具备前缀的键的命令:

etcdctl del --prefix key
  • 更新内容
$  etcdctl put key testvalue
OK
$  etcdctl get key
key
testvalue

端口

端口 端口说明
2380 和集群中其余节点通讯
2379 提供 HTTP API 服务,供客户端交互

ETCD备份恢复

备份

因为etcd的强一致性,备份一个节点的数据便可,生产环境中,为了防止单节点异常没有生成备份,能够多加几个节点

export ETCDCTL_API=3
etcdctl --endpoints=http://节点IP:2379 snapshot save /etcd_bak/snap-$(date +%Y%m%d%H%M).db

恢复

etcdctl snapshot restore snapshot.db --name m3 --data-dir=/etcd_bak/snap-...db
相关资料推荐

ETCD 项目地址:https://github.com/etcd-io/etcd
ETCD官方文档:https://etcd.io/
ETCD官方文档中文版:https://doczhcn.gitbook.io/etcd/
CoreOS实战剖析ETCD: https://www.infoq.cn/article/coreos-analyse-etcd/
ETCD性能优化实践:https://www.kubernetes.org.cn/6295.html
ETCD灾难恢复: https://skyao.gitbooks.io/learning-etcd3/content/documentation/op-guide/recovery.html

相关文章
相关标签/搜索