前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >etcd常用操作介绍

etcd常用操作介绍

作者头像
KevinYan
发布2019-10-29 23:46:05
1.5K0
发布2019-10-29 23:46:05
举报
文章被收录于专栏:网管叨bi叨网管叨bi叨

安装

最简单的安装方法是直接去etcd GitHub的Release页下载预编译好的二进制文件。etcd官方为各个系统提供了不同的二进制文件,供开发者根据自己的系统去下载。

下载地址:https://github.com/etcd-io/etcd/releases

下载完成解压后,目录中有两个二进制文件, etcd以及 etcdctl。其中 etcd就是运行etcd服务的二进制文件, etcdctl是官方提供的命令行etcd客户端,使用 etcdctl可以在命令行中访问etcd服务。

etcdetcdctl这两个文件软链到系统环境变量 $PATH对应的目录下,方便服务启动,当然试验目的直接把工作目录切换到刚才下载的目录直接运行两个文件即可。

我从GitHub上下载了MacOS对应的etcd文件,执行下面的命令可以看到etcd的版本

➜  etcd-v3.3.17-darwin-amd64 ./etcd --versionetcd Version: 3.3.17Git SHA: 6d8052314Go Version: go1.12.9Go OS/Arch: darwin/amd64➜  etcd-v3.3.17-darwin-amd64

运行

直接运行 etcd指令在电脑上启动和运行 etcd服务

......2019-10-22 13:15:32.244300 I | embed: listening for peers on http://localhost:23802019-10-22 13:15:32.244466 I | embed: listening for client requests on localhost:2379......

通过启动命令的输出日志中可以找到两行关键的信息,etcd服务启动后提供给外部客户端通信的端口是2379,而etcd服务中成员间的通信端口是2380(Peer是对同一个 etcd 集群中另外一个 Member 的称呼)。

启动命令时比较重要的options:

-name 节点名称,默认是UUID

-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配置

上述配置也可以设置配置文件,默认为 /etc/etcd/etcd.conf

使用etcd

etcdctl是一个命令行的客户端,它提供了一下简洁的命令,可以方便我们在对服务进行测试或者手动修改数据库内容。建议刚刚接触etcd的同学可以先通过etcdctl来熟悉相关操作。这些操作跟etcd提供的HTTP API是对应的。

通过 -h选项可以看到 etcdctl支持的操作。

➜  etcd-v3.3.17-darwin-amd64 ./etcdctl -hNAME:   etcdctl - A simple command line client for etcd.......
VERSION:   3.3.17
COMMANDS:     backup          backup an etcd directory     cluster-health  check the health of the etcd cluster     mk              make a new key with a given value     mkdir           make a new directory     rm              remove a key or a directory     rmdir           removes the key if it is an empty directory or a key-value pair     get             retrieve the value of a key     ls              retrieve a directory     set             set the value of a key     setdir          create a new directory or update an existing directory TTL     update          update an existing key with a given value     updatedir       update an existing directory     watch           watch a key for changes     exec-watch      watch a key for changes and exec an executable     member          member add, remove and list subcommands     user            user add, grant and revoke subcommands     role            role add, grant and revoke subcommands     auth            overall auth controls     help, h         Shows a list of commands or help for one command

这些操作命令基本上分为键值库操作命令和行为控制命令。

键值库操作

set

设置键(或者叫主题)的值

➜  etcd-v3.3.17-darwin-amd64 ./etcdctl set /root/test/keyOne "Hello etcd"Hello etcd➜  etcd-v3.3.17-darwin-amd64

支持的选项包括:

--ttl '0'            该键值的超时时间(单位为秒),不配置(默认为 0)则永不超时--swap-with-value value 若该键现在的值是 value,则进行设置操作--swap-with-index '0'    若该键现在的索引值是指定索引,则进行设置操作
get

获取给定键的值

➜  etcd-v3.3.17-darwin-amd64 ./etcdctl get /root/test/keyOneHello etcd➜  etcd-v3.3.17-darwin-amd64

当尝试获取不存的值时会报错

➜  etcd-v3.3.17-darwin-amd64 ./etcdctl get /root/test/keyTwoError:  100: Key not found (/root/test/keyTwo) [11]➜  etcd-v3.3.17-darwin-amd64

支持的选项为

--sort    对结果进行排序--consistent 将请求发给主节点,保证获取内容的一致性
update

更新给定键中存储的值

➜  etcd-v3.3.17-darwin-amd64 ./etcdctl update /root/test/keyOne "Hello World"Hello World➜  etcd-v3.3.17-darwin-amd64

同样尝试更新不存在的值时会报错

➜  etcd-v3.3.17-darwin-amd64 ./etcdctl update /root/test/keyTwo "Hello World"Error:  100: Key not found (/root/test/keyTwo) [11]

支持的选项为

--ttl '0'    超时时间(单位为秒),不配置(默认为 0)则永不超时
rm

删除给定的键,如果命令参数中给定的键不存在则会报错

➜  etcd-v3.3.17-darwin-amd64 ./etcdctl rm /root/test/keyOnePrevNode.Value: Hello World➜  etcd-v3.3.17-darwin-amd64
--dir        如果键是个空目录或者键值对则删除--recursive        删除目录和所有子键--with-value     检查现有的值是否匹配--with-index '0'    检查现有的 index 是否匹配
setdir

创建一个目录,无论存在与否。

支持的选项为

--ttl '0'    超时时间(单位为秒),不配置(默认为 0)则永不超时
updatedir

更新一个已经存在的目录。支持的选项为

--ttl '0'    超时时间(单位为秒),不配置(默认为 0)则永不超时
ls

列出目录(默认为根目录)下的键或者子目录,默认不显示子目录中内容。

支持的选项包括

--sort    将输出结果排序--recursive    如果目录下有子目录,则递归输出其中的内容-p        对于输出为目录,在最后添加 `/` 进行区分

行为操作

backup

备份 etcd 的数据。

支持的选项包括

--data-dir         etcd 的数据目录--backup-dir     备份到指定路径
watch

监测一个键值的变化,一旦键值发生更新,就会输出最新的值并退出。

例如

➜  etcd-v3.3.17-darwin-amd64 ./etcdctl set root/test/KeyThree "Hello etcd"Hello etcd // 设置root/test/KeyThree的值// 监控root/test/KeyThree,在其他会话里将它的值改为"Hello World" 这里就能收到更新后的结果➜  etcd-v3.3.17-darwin-amd64 ./etcdctl watch  root/test/KeyThree --foreverHello World

支持的选项包括

--forever        一直监测,直到用户按 `CTRL+C` 退出--after-index '0'    在指定 index 之前一直监测--recursive        返回所有的键值和子键值
exec-watch

监测一个键值的变化,一旦键值发生更新,就执行给定命令。

例如,用户更新 testkey 键值。

➜ etcd-v3.3.17-darwin-amd64 ./etcdctl exec-watch testkey -- sh -c 'ls'default.etcdDocumentationetcdetcdctletcd-migrateREADME-etcdctl.mdREADME.md

支持的选项包括

--after-index '0'    在指定 index 之前一直监测--recursive        返回所有的键值和子键值
member

通过 list、add、remove 命令列出、添加、删除 etcd 实例到 etcd 集群中。

例如本地启动一个 etcd 服务实例后,可以用如下命令进行查看。

➜  etcd-v3.3.17-darwin-amd64 ./etcdctl member list8e9e05c52164694d: name=default peerURLs=http://localhost:2380 clientURLs=http://localhost:2379 isLeader=true➜  etcd-v3.3.17-darwin-amd64
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网管叨bi叨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 运行
  • 使用etcd
    • 键值库操作
      • set
      • get
      • update
      • rm
      • setdir
      • updatedir
      • ls
    • 行为操作
      • backup
      • watch
      • exec-watch
      • member
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档