etcd快速入门

官方链接: etcd命令行

  • 快速入门

    • 单机启动

      etcd
      
    • 本地集群启动

      • 使用goreman启动本地三节点
        Procfile

        goreman -f Procfile start
        #go get 慢解决
        #go env -w GOPROXY=https://goproxy.cn,direct
        
      • 查看节点列表

       etcdctl --write-out=table --endpoints=localhost:2379  member list
      
      • 管理节点

        • 关闭某节点

            goreman run stop etcd2
          
        • 重启

            goreman run restart etcd2
          
  • etcd命令行

    • 获取etcd版本号

        #目前版本是v3,之前有版本是v2
        etcdctl version
      
    • 写入 put

      • 普通写入

          #成功设置后返回OK
          etcdctl put foo bar
        
      • 带上lease

          1. 创建lease
            #60的意思是60秒返回: lease 694d73f278bcd80a granted  with TTL(60s)​
            etcdctl lease grant 60
          
          1. 普通写入命令加上lease id
          #注意点
          #1.  如果lease过期的话会提示lease不存在,抛出异常
          #2.  如果lease过期,key会被自动删除
          #3.  lease可以续期和撤销看后面lease的管理​​​
           etcdctl put foo bar1 --lease=694d73f278bcd80a
          
    • 读取 get

      • 准备测试数据

          etcdctl put foo bar
          etcdctl put foo1 bar1
          etcdctl put  foo2 bar2
          etcdctl put foo3 bar3​​​​
        
      • 获取单个key

        • 简单

            etcdctl get foo
          
        • 只显示value

             etcdctl get foo --print-value-only
          
        • 获取详细信息

         etcdctl get foo -w=json
        
        • 显示16进制

          etcdctl get foo --hex
          
      • 获取range

        • 前闭后开range

          #特别注意这个是前闭后开,即包含foo,foo1,foo2 不含foo3
          etcdctl get foo foo3
          
        • 前缀匹配

            etcdctl get --prefix foo
          
        • 前缀匹配+条数限制

            etcdctl get --prefix --limit=1 foo
          
      • 获取之前版本的key

        • etcd版本号的理解

          • 对etcd集群键值存储的每次修改都会增加etcd集群的全局修订, 类似git commitId

          • 取值逻辑 可以理解为是一个快照

            • 历史版本的时候如果key不存在,则不展示

            • 历史版本的时候key存在,则展示当时版本的value

          • 举例

              foo = bar # revision = 2
              foo1 = bar1 # revision =  3
              foo = bar_new # revision = 4
              foo1 = bar1_new #  revision = 5
            
          • 如果版本号不存在的话会抛出异常 Error: etcdserver: mvcc: required revision is a future revision

        • 语法

          etcdctl get foo --prefix --rev=3
          
      • 读取大于等于key的值

      • 测试数据

        a =123
        b = 456
        z = 789​
        
      • 读取命令

          etcdctl get --from-key b
        
    • 删除 del

      • 普通删除
      etcdctl del a
      
      • 范围删除

          etcdctl del foo foo4
        
      • 前缀删除

          etcdctl del --prefix foo
        
      • 大于等于key的删除

        etcdctl del --from-key b
        
      • 返回删除前的值

        • 前面的四个删除命令返回的是影响的key的数量

          • 比如成功删了1个key,则返回1;但是没有值
        • 需要带上旧值的话

            etcdctl del --prev-kv zoo
          
    • 查看变化 watch

      • 简单用法

        • watch单个key

           etcdctl watch foo
          
        • range key

            etcdctl watch foo foo9
          
        • prefix

            etcdctl watch --prefix foo
          
        • 多个key

          etcdctl watch -i
          watch foo
          watch zoo​​
        
      • 历史变化watch

        • 指定版本

            etcdctl watch --rev=2 foo
          
        • 获取上一次变化

          etcdctl watch --prev-kv foo
        
      • process

        • 语法
          watch a
          progress
        
        • 用处

          • 类似乐观锁
      • 实验

        • 客户端1 watch

            etcdctl watch foo
          
        • 客户端2 修改key

            etcdctl put foo bar1
          
        • 客户端1输出

          PUT
          foo
          bar1
        
      • 注意点

        • 客户端1 watch可以连续监听不是一次性的 zk的watch是一次性的
    • 合并版本 compact

        etcdctl compact 5
      
      • 作用

        • rev=1 到 rev=4的数据清除了

        • 为了节约空间

    • 租约 lease

      • 新建租约

          etcdctl lease grant 60
        
      • 使用租约

        etcdctl put --lease=32695410dcc0ca06 foo bar
        
      • 撤销租约

       etcdctl lease revoke 32695410dcc0ca06
      
      • 如果key使用了租约,租约过期key会被删除

        • 实验

          1. 新建租约
        #694d73f278bcd85a granted with TTL(60s)
        etcdctl lease grant 60​lease
        
          1. 创建key,使用租约
          etcdctl put hello world --lease=694d73f278bcd85a​
        
          1. 撤销租约
          etcdctl lease revoke 694d73f278bcd85
        
          1. 获取key
          • 结果返回为空
      • 续约

          etcdctl lease keep-alive 32695410dcc0ca06
        
        • 效果是如果不中断这个续约步骤会一直续约
          image
          image
      • 获取租约信息 租约失效了会报错

        • 根据租约id

             etcdctl lease timetolive 694d5765fc71500b
          
        • 获取租约相关的key

            #输出结果​lease 694d73f278bcd860 granted with  TTL(60s), remaining(46s), attached keys([hello])
            etcdctl lease timetolive --keys 694d5765fc71500b
          

你可能感兴趣的:(etcd快速入门)