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