etcd——是什么-做什么-如何用

etcd是什么

etcd是一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。 
etcd是一个服务发现系统,具备以下的特点: 
简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单 
安全:支持SSL证书验证 
快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作 
可靠:采用raft算法,实现分布式系统数据的可用性和一致性

 

etcd下载、安装、启动

wget https://github.com/coreos/etcd/releases/download/v3.1.5/etcd-v3.1.5-linux-amd64.tar.gz

tar xzvf etcd-v3.1.5-linux-amd64.tar.gz

cd etcd-v3.1.5-linux-amd64

启动一个单点的 etcd 服务,只需要运行 etcd 命令就行
设置了数据源的本地存储路径为 ~/data.etcd,服务侦听的地址为0.0.0.0:2379
etcd -data-dir ~/data.etcd -advertise-client-urls  http://0.0.0.0:2379 -listen-client-urls http://0.0.0.0:2379

用screen 启动

sh run.sh

cd build
./etcd -version
screen -dmS etcd ./etcd -data-dir ~/data.etcd -advertise-client-urls  http://0.0.0.0:2379 -listen-client-urls http://0.0.0.0:2379
screen -wipe
echo "ok"

 

 

若默认启动的话:
#./etcd

etcd 默认将数据存放到当前路径的 default.etcd/ 目录下
在 http://localhost:2380 和集群中其他节点通信
在 http://localhost:2379 提供 HTTP API 服务,供客户端交互
该节点的名称默认为 default
集群和每个节点都会生成一个 uuid
启动的时候,会运行 raft,选举出 leader 保证集群数据不丢失
这将在端口2379上进行etcd侦听以进行客户端通信,并在端口2380上进行侦听以进行服务器到服务器的通信。(这两个端口已经被 IANA 官方预留给 etcd)

etcdctl的使用

etcdctl是一个命令行的客户端,它提供了一个简洁的命令,可理解为命令工具集,可以方便我们在对服务进行测试或者手动修改数据库内容。

etcdctl与其他xxxctl的命令原理及操作类似(例如kubectl,systemctl)。

 

Etcd常用命令

(一)数据库操作命令
etcd 在键的组织上采用了层次化的空间结构(类似于文件系统中目录的概念),数据库操作围绕对键值和目录的 CRUD [增删改查]
(符合 REST 风格的一套操作:Create, Read, Update, Delete)完整生命周期的管理。 具体的命令选项参数可以通过 etcdctl command --help来获取相关帮助。 1)对象为键值 set[增:无论是否存在]:etcdctl set key value mk[增:必须不存在]:etcdctl mk key value rm[删]:etcdctl rm key update[改]:etcdctl update key value get[查]:etcdctl get key 2)对象为目录 setdir[增:无论是否存在]:etcdctl setdir dir mkdir[增:必须不存在]: etcdctl mkdir dir rmdir[删]:etcdctl rmdir dir updatedir[改]:etcdctl updatedir dir ls[查]:etcdclt ls (二)非数据库操作命令 backup[备份 etcd 的数据] etcdctl backup watch[监测一个键值的变化,一旦键值发生更新,就会输出最新的值并退出] etcdctl watch key exec-watch[监测一个键值的变化,一旦键值发生更新,就执行给定命令] etcdctl exec-watch key --sh -c "ls" member[通过 list、add、remove、update 命令列出、添加、删除 、更新etcd 实例到 etcd 集群中] etcdctl member list;etcdctl member add 实例;etcdctl member remove 实例;etcdctl member update 实例。 etcdctl cluster-health[检查集群健康状态] (三)常用配置参数 设置配置文件,默认为/etc/etcd/etcd.conf。 配置参数 参数说明 -name 节点名称 -data-dir 保存日志和快照的目录,默认为当前工作目录,指定节点的数据存储目录 -addr 公布的ip地址和端口。 默认为127.0.0.1:2379 -bind-addr 用于客户端连接的监听地址,默认为-addr配置 -peers 集群成员逗号分隔的列表,例如 127.0.0.1:2380,127.0.0.1:2381 -peer-addr 集群服务通讯的公布的IP地址,默认为 127.0.0.1:2380. -peer-bind-addr 集群服务通讯的监听地址,默认为-peer-addr配置 -wal-dir 指定节点的was文件的存储目录,若指定了该参数,wal文件会和其他数据文件分开存储 -listen-client-urls -listen-peer-urls 监听URL,用于与其他节点通讯 -initial-advertise-peer-urls 告知集群其他节点url. -advertise-client-urls 告知客户端url, 也就是服务的url -initial-cluster-token 集群的ID -initial-cluster 集群中所有节点 -initial-cluster-state -initial-cluster-state=new 表示从无到有搭建etcd集群 -discovery-srv 用于DNS动态服务发现,指定DNS SRV域名 -discovery 用于etcd动态发现,指定etcd发现服务的URL [https://discovery.etcd.io/],用环境变量表示

 

 

 1035  ./etcdctl -h
 1036  ./etcdctl set --ttl '10' key "Hello..."
 1037  ./etcdctl get key
 1038  ./etcdctl ls
 1039  ./etcdctl set key "Hello world"
 1040  ./etcdctl watch key
 1041  ./etcdctl rm key
 1042  ./etcdctl ls
 1043  ./etcdctl set testkey "Hello world"
 1044  ./etcdctl get testkey 
 1045  ./etcdctl exec-watch testkey -- sh -c 'll'
 1046  ./etcdctl exec-watch testkey -- sh -c 'ls'
 1047  ./etcdctl member list
 1048  ./etcdctl ll
 1049  ./etcdctl ls
 1050  ./etcdctl member list
 1002  ./etcdctl update key "haha"
 1003  ./etcdctl update testkey "haha........"
 1004  ./etcdctl update testkey "haha......."
 1005  ./etcdctl update testkey "haha........"
 1006  ./etcdctl -help
 1007  ./etcdctl ls
 1008  ./etcdctl member lsit
 1009  ./etcdctl member list
 1010  ./etcdctl ls
 1011  ./etcdctl member list
 1012  ./etcdctl ls
 1013  ./etcdctl member list

 

上一篇:MyBatis(2)


下一篇:阿里巴巴飞天大数据平台计算引擎MaxCompute最新特性