简单记录一下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有多行)。不贴具体的脚本了,可以从【–>这里<–】获取,脚本主要功能如下

  1. Support configuration annotation
  1. Support for registering null values. like “value=”
  2. Support for registration of recursive directories
  3. Add exception capture
  4. Add null file support
  5. Add null dircectory support
  6. Add etcd v3 api support
  7. 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对比介绍】