etcd使用手记

etcd是一个用于共享配置和服务的高可用键值存储系统,由CoreOS使用开发并作为CoreOS的基础服务启动。etcd的灵感来源于Apache ZooKeeper和doozer,其特点:
· 简单:可用curl进行操作(HTTP+JSON)
· 安全:可使用SSL客户端证书验证
· 快速:基准测试在每个实例1000次写入每秒
· 可靠: 使用Raft协议来进行合理的分布式
etcd是go语言写的,并使用Raft一致性算法来管理一个高可用的复制日志。Raft协议这里有个动画版教程,很赞的哦。当前etcd版本为0.4.6。

安装etcd

etcd的安装非常简单,可以直接下载编译后的可执行文件。

etcd的存储模型和ZooKeeper差不多,都是类似文件系统的树形结构。请参考 zookeeper:一个用于分布式系统的分布式协作服务程序etcd file system。但与ZooKeeper不同的是,etcd中区分文件节点(file node)和目录节点(directory node)。当目标为目录节点时,GET操作获得它的子节点。

使用etcdctl

etcdctl包含了etcd所有的操作,基本等同于ZooKeeper的功能。

通过curl来维护etcd

下面是几个基本的测试,完成的API文档在这里~~

建立集群

etcd的配置选项中,比较重要的有下面几项
-name 节点名称,默认为UUID
-data-dir – 保存日志和快照的目录,默认为当前工作目录。
-addr 公布的ip地址。默认为127.0.0.1:4001
-bind-addr 用于客户端连接的监听地址,默认为公布IP地址。
-peers 集群成员逗号分割的列表,例如203.0.113.101:7001,203.0.113.102:7001
-peer-addr 集群服务通讯的公布的IP地址,默认为 127.0.0.1:7001.
-peer-bind-addr 集群服务通讯的监听地址,默认为peer-addr
也可以设置参数文件(默认为/etc/etcd/etcd.conf),其他的选项可以参考Etcd Configuration
下面在同一主机上建立一个三节点的etcd服务模拟集群。其etcd服务节点分别为etcd1,etcd2,etcd3,而datadir分别/data/etcd1, /data/etcd2, /data/etcd3

^^
参考:

https://github.com/coreos/etcd

Posted in Ops, Virtualization.