1.装置

wget下载地址 https://mirrors.huaweicloud.c...

etcd.config

name: "etcd"data-dir: "/var/lib/etcd/data"listen-client-urls: "http://0.0.0.0:2379"advertise-client-urls: "http://0.0.0.0:2379"

启动

./etcd --config-file=/opt/etcd/etcd.config

2.根本命令

设置key

etcdctl put slq1 1

获取key

etcdctl get slq1 //获取key为slq1的valueetcdctl get slq1 --print-value-only   //只打印对应的值etcdctl get slq1 --hex   //以十六进制显示etcdctl get slq1 slq5 //获取肯定范畴的key 不包含slq5etcdctl get --prefix slq  //获取以slq为前缀的keyetcdctl get --limit=2 --prefix slq  //限度数量为2etcdctl get --from-key s  //查找大于s的所有keyetcdctl get --prefix --rev=4 slq1 //获取slq1 key version为4时候对应的值

删除key

etcdctl del slq1 //删除slq1etcdctl del slq1 slq5 //删除slq1到slq5的keyetcdctl del --prefix slq //删除前缀为slq的keyetcdctl del --from-key s //删除大于s的所有key

监听key变动

etcdctl watch slq1 //监测slq1        etcdctl watch slq1 slq5 //监测slq1到slq5的key        etcdctl watch --prefix slq //监测前缀为slq的key        etcdctl watch --from-key s //监测大于s的所有key

对key进行加锁

etcdctl lock slq1------------------------------------[root@node3 opt]# etcdctl lock slq1slq1/694d7afa84f70318------------------------------------[root@node3 etcd]# etcdctl lock slq1产生阻塞------------------------------------

事务txn

etcdctl txn -i   //-i应用交互式

清理历史版本信息compact

etcdctl compact 5[root@prometheus ~]# etcdctl compact 3compacted revision 3[root@prometheus ~]# 

lease和ttl

[root@prometheus ~]# etcdctl lease grant 100lease 694d7afa84f70339 granted with TTL(100s)[root@prometheus ~]# [root@prometheus ~]# [root@prometheus ~]# etcdctl put --lease=694d7afa84f70339 slqslq slqOK[root@prometheus ~]# [root@prometheus ~]# etcdctl get slqslqslqslqslq[root@prometheus ~]#撤销租期[root@prometheus ~]# etcdctl lease revoke 694d7afa84f70339lease 694d7afa84f70339 revoked[root@prometheus ~]# [root@prometheus ~]# [root@prometheus ~]# etcdctl get slqslq[root@prometheus ~]#查看租期无效工夫[root@prometheus ~]# etcdctl lease timetolive 694d7afa84f70343lease 694d7afa84f70343 granted with TTL(100s), remaining(66s)放弃租期无效etcdctl lease keep-alive 694d7afa84f70339 [root@prometheus ~]# etcdctl lease keep-alive 694d7afa84f70343lease 694d7afa84f70343 keepalived with TTL(100)

3.clientv3操作api

下载包

go get -u go.etcd.io/etcd/clientv3@v3.3.24

程序

package mainimport(    "context"    "fmt"    "go.etcd.io/etcd/clientv3"    "log"    "time")func main() {    client, err := clientv3.New(clientv3.Config{        Endpoints:   []string{"http://192.168.56.111:2379"},        DialTimeout: 2 * time.Second,    })    if err != nil {        log.Println("create client err:",err)    }    defer client.Close()    keyName := "slq0909"    ctx, cancel := context.WithTimeout(context.Background(), time.Second)    _, err = client.Put(ctx, keyName, "xxxxxx")    cancel()    if err != nil {        log.Printf("put to etcd failed,err:%v \n",err)        return    }    ctx, cancel = context.WithTimeout(context.Background(), time.Second)    resp,err := client.Get(ctx, keyName)    cancel()    if err != nil {        log.Println("get keyname err:",err)    }    for _,ev := range resp.Kvs {        fmt.Printf("%s:%s \n",ev.Key,ev.Value)    }}

后果

问题

装置clientv3遇到的问题

go: downloading golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985# github.com/coreos/etcd/clientv3/balancer/picker..\..\go\pkg\mod\github.com\coreos\etcd@v3.3.25+incompatible\clientv3\balancer\picker\err.go:37:44: undefined: balancer.PickOptions..\..\go\pkg\mod\github.com\coreos\etcd@v3.3.25+incompatible\clientv3\balancer\picker\roundrobin_balanced.go:55:54: undefined: balancer.PickOptions# github.com/coreos/etcd/clientv3/balancer/resolver/endpoint..\..\go\pkg\mod\github.com\coreos\etcd@v3.3.25+incompatible\clientv3\balancer\resolver\endpoint\endpoint.go:114:78: undefined: resolver.BuildOption..\..\go\pkg\mod\github.com\coreos\etcd@v3.3.25+incompatible\clientv3\balancer\resolver\endpoint\endpoint.go:182:31: undefined: resolver.ResolveNowOption

go.mod

replace google.golang.org/grpc => google.golang.org/grpc v1.26.0