etcd基础使用
1 etcd架构

2 特征,使用场景
2.1 特征
使用简单
存储结构是key-value类型
能实时感知变化
权限校验
性能高
集群数据一致性
2.2 使用场景
存储数据
注册中心、配置中心
消息发布订阅
分布式锁
leader选举
适当参考中文网,描述有些夸大
3 部署
3.1 单节点
linux环境的二进制部署
1、下载软件:https://github.com/etcd-io/etcd/releases/
2、复制到你的centos7系统的任意目录
3、解压并配置
4、注册系统服务
5、启动
3.2 集群
集群部署分为仨方式:静态发现、动态发现、DNS发现
1、下载软件:https://github.com/etcd-io/etcd/releases/
2、复制到三台服务器中
3、解压并配置(配置不同了)
4、注册系统服务
5、启动
3.3 可视化控制台(Etcdkeeper)
3.3.1 centos7
1、下载软件:https://github.com/evildecay/etcdkeeper/releases/
2、复制到任意服务器并解压
3、给权限
4、注册系统服务
5、启动并测试:http:192.168.8.137:8080/etcdkeeper
3.3.2 windows
1、下载软件:https://github.com/evildecay/etcdkeeper/releases/
2、复制到任意服务器并解压
3、启动
4 基础操作
4.1 查看命令
输入etcdctl –h可以查看etcdctl的命令,注释如下:
| 命令 | 注释 | 命令 | 注释 | 命令 | 注释 |
|---|---|---|---|---|---|
| alarm disarm | 解除所有的报警 | elect | 加入leader选举 | lease timetolive | 获取租约信息 |
| alarm list | 列出所有报警 | endpoint hashkv | 打印指定实例的历史键值对的hash值 | lock | 获取命名锁 |
| auth disable | 禁用Authentication | endpoint health | 打印指定etcd实例的健康信息 | make-mirror | 指定一个etcd集群为镜像集群 |
| auth status | 返回Authentication状态 | endpoint status | 打印指定etcd实例的状态信息 | member add | 为集群增加一个成员 |
| check datascale | 对于给定服务实例检查持有数据的存储使用率 | get | 获取键值对 | member list | 罗列集群所有成员 |
| check perf | 检查集群的性能 | help | 帮助 | member promote | 提升集群中的一个non-voting成员 |
| compaction | 压缩历史事件 | lease grant | 创建租约 | member remove | 移除集群中的成员 |
| auth enable | 启用Authentication | lease keep-alive | 续约 | member update | 更新集群中的成员信息 |
| del | 移除指定的或者范围的键值对 | lease list | 罗列所有有效的租约 | move-leader | 替换进群中的leader |
| defrag | 整理存储碎片 | lease revoke | 撤销租约 | put | 写入键值对 |
| role add | 增加一个角色 | role delete | 删除一个角色 | role get | 获取一个角色的详细信息 |
| role grant-permission | 给某个角色授予key | role list | 罗列所有的角色 | role revoke-permission | 撤销一个角色的key |
| snapshot restore | 恢复快照 | snapshot save | 存储某个etcd节点的快照到指定位置 | snapshot status | 获取指定文件的后端快照文件状态 |
| txn | 在一个事务内处理所有的请求 | user add | 增加一个用户 | user delete | 删除一个用户 |
| user get | 获取用户的详细信息 | user grant-role | 给用户授予角色 | user list | 罗列所有用户 |
| user passwd | 给用户修改密码 | user revoke-role | 撤销某个用户的角色 | version | 打印etcd版本 |
| watch | 监测指定键或者前缀的事件流 |
4.2 增、该
命令格式:etcdctl put < key> < value>[options]
Options选项:
⚫ –lease : 设置key所使用的lease ID
⚫ –prev-kv:返回该key修改之前的值
⚫ –ignore-lease:使用当前的lease更新key
⚫ –ignore-value:使用当前的value更新key
4.3 查
命令格式:etcdctl get < key> [options]
Options选项:
⚫ –form-key: 按照字节序,筛选大于或等于的key
⚫ –prefix:筛选以该前缀的key
⚫ –keys-only:只输出key
⚫ –print-value-only:只输出value
⚫ –limit :限制输出条数,当为0时不做限制
⚫ –sort-by <”create”|”key”|”modify”|”value”|”version”>:按照创建时间、键、修改时间、值或版本号排序
⚫ –order <“ascend”|“descend”> :按照升序或降序排列
⚫ –rev :指定 key 的版本。etcd 对 key 的写操作,会更新全局修订版本, 通过指定版本可以读取旧的数据
⚫ –consistency <“l”|“s”> :一致性,默认是 Linearizable,可以设置为 Serializable
4.4 删
命令格式:etcdctl del < key> [options]
Options选项:
⚫ –form-key: 按照字节序,筛选大于或等于的key
⚫ –prefix:筛选以该前缀的key
⚫ –prev-kv:返回该key修改之前的值
⚫ –range:该选项避免删除延迟,默认延迟2s
4.5 watch
命令格式:etcdctl watch < key> [options]
Options选项:
⚫ –prev-kv:返回该key修改之前的值
⚫ –prefix:筛选以该前缀的key
4.6 租约
命令格式:
⚫ etcdctl lease grant :创建租约
⚫ etcdctl lease list:返回说有为过时或未被废弃的租约
⚫ etcdctl lease revoke :废弃租约
⚫ etcdctl lease keep-alive [–once] :周期性续约,–once只续约一次
⚫ etcdctl lease timetolive [–once] [–keys]:获取租约信息,–keys附带关键的key信息