简单记录一下Etcd API v3
版本的基本操作和可视化WEB UI
使用,关于V2的使用可以看我之前的一篇介绍【etcd v2】。Etcd v2 和 v3 本质上是共享同一套 raft 协议代码的两个独立的应用,接口不一样,存储不一样,数据也是互相隔离的。
V3相对V2的一些主要变化:
- 接口通过grpc提供rpc接口,放弃了v2的http接口。优势是长连接效率提升明显,缺点是使用不如以前方便,尤其对不方便维护长连接的场景。
- 废弃了原来的目录结构,变成了纯粹的kv,用户可以通过前缀匹配模式模拟目录
- 内存中不再保存value,同样的内存可以支持存储更多的key
- watch机制更稳定,基本上可以通过watch机制实现数据的完全同步
- 提供了批量操作以及事务机制,用户可以通过批量事务请求来实现Etcd v2的CAS机制(批量事务支持if条件判断)
–以上摘自王渊命的文章[侵删]
使用Etcdctl管理
这里列下我常用的,其他选项可以查看help或者官网说明,链接在最后
1
2
3
4
5
6
7
8
|
ETCDCTL_API=3 etcdctl put mykey "this is awesome" #设置
ETCDCTL_API=3 etcdctl get mykey #获取
ETCDCTL_API=3 etcdctl del mykey #删除
ETCDCTL_API=3 etcdctl get "" --from-key #获取所有的键值
ETCDCTL_API=3 etcdctl get "" --from-key --keys-only #只获取所有的key不含value
ETCDCTL_API=3 etcdctl get "" --from-key --keys-only --limit 3 #获取key只显示3个
ETCDCTL_API=3 etcdctl get --prefix my #获取所有以my开头的key及对应value
ETCDCTL_API=3 etcdctl del my --prefix #删除所有以my开头的键值
|
使用HTTP管理
HTTP接口没有怎么用,请参考【API】及【grpc官方】
1
2
3
4
|
curl -L http://localhost:2379/v3alpha/maintenance/status -X POST -d '{}'
curl -L http://localhost:2379/v3alpha/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'
curl -L http://localhost:2379/v3alpha/kv/range -X POST -d '{"key": "Zm9v"}'
curl -L http://localhost:2379/v3alpha/watch -X POST -d '{"create_request": {"key": "Zm9v"}}'
|
注册脚本
我提供的这个脚本主要是将本地目录中的文件以递归的形式注册到etcd上(文件内容是key=value有多行)。不贴具体的脚本了,可以从【–>这里<–】获取,脚本主要功能如下
- Support configuration annotation
- Support for registering null values. like “value=”
- Support for registration of recursive directories
- Add exception capture
- Add null file support
- Add null dircectory support
- Add etcd v3 api support
- Support e3w https://github.com/soyking/e3w
主要说两个问题:
- 在V2中创建目录
这个主要使用ETCD的HTTP接口实现,可以直接创建目录,比用key-value的形式要好,V2的可视化,推荐【Etcd-view】
- 在V3中创建目录
在V3中本并不存在目录的概念了,但是如果想要使用【E3W】实现可视化,需要使用特定的value给目录这个key。如下root_v3是个目录,它下面那个就是特定的value
1
2
3
|
[root@ip ops_user]# ETCDCTL_API=3 etcdctl get root_v3
root_v3
etcdv3_dir_$2H#%gRe3*t
|
权限机制
占位,之后根据需要补充
1
2
3
4
5
|
export ETCDCTL_API=3
etcdctl user add root
etcdctl auth enable
etcdctl user list
ETCDCTL_API=3 etcdctl user add root --endpoints="https://10.17.1.32:2379"
|
参考文档
【Etcd项目地址】
【Etcd API】
【Etcd对比介绍】