我是靠谱客的博主 单身未来,这篇文章主要介绍etcd部署和使用,现在分享给大家,希望可以做个参考。

介绍

高可用的分布式键值(key-value)数据库,raft共识算法实现分布式一致性,在k8s中做元数据存储。类似zookeeper。

官网
https://etcd.io/

github
https://github.com/etcd-io/etcd

部署:
1.github的release上下载最新安装包
etcd-v3.4.14-linux-amd64.tar.gz

2.解压

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
tar -zxvf etcd-v3.4.14-linux-amd64.tar.gz [root@localhost etcd-v3.4.14-linux-amd64]# ls default.etcd Documentation etcd etcdctl README-etcdctl.md README.md READMEv2-etcdctl.md 说明: etcd 服务端 etcdctl 客户端工具

3.启动

复制代码
1
2
3
4
5
6
cd etcd-v3.4.14-linux-amd64 nohup ./etcd --listen-peer-urls 'http://0.0.0.0:2380' --listen-client-urls 'http://0.0.0.0:2379' --advertise-client-urls 'http://0.0.0.0:2379' > /dev/null 2>&1 & # 说明 默认2379端口为客户端通信端口 默认2380位服务之间内部通信端口 0.0.0.0 为配置局域网通过ip访问

常用命令(来自官网)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# put 塞值 ./etcdctl put foo "hello world" # get 获取 ./etcdctl get foo # put 塞值 ./etcdctl --endpoints=localhost:2379 put web1 value1 ./etcdctl --endpoints=localhost:2379 put web2 value2 ./etcdctl --endpoints=localhost:2379 put web3 value3 # 前缀模糊获取 ./etcdctl --endpoints=localhost:2379 get web --prefix # 事务操作 ./etcdctl --endpoints=localhost:2379 put user1 bad ./etcdctl --endpoints=localhost:2379 txn --interactive compares: value("user1") = "bad" success requests (get, put, delete): del user1 failure requests (get, put, delete): put user1 good # del 删除操作 ./etcdctl --endpoints=localhost:2379 put key myvalue ./etcdctl --endpoints=localhost:2379 del key # 前缀模糊删除 ./etcdctl --endpoints=localhost:2379 put k1 value1 ./etcdctl --endpoints=localhost:2379 put k2 value2 ./etcdctl --endpoints=localhost:2379 del k --prefix # watch监听数据变化 ./etcdctl --endpoints=localhost:2379 watch stock1 ./etcdctl --endpoints=localhost:2379 put stock1 1000 # 前缀模糊监听 ./etcdctl --endpoints=localhost:2379 watch stock --prefix ./etcdctl --endpoints=localhost:2379 put stock1 10 ./etcdctl --endpoints=localhost:2379 put stock2 20 # lease租约 ./etcdctl --endpoints=localhost:2379 lease grant 30 # lease 694d779a4a223c8e granted with TTL(30s) # put值指定租约 ./etcdctl --endpoints=localhost:2379 put sample value --lease=694d779a4a223c8e ./etcdctl --endpoints=localhost:2379 get sample # 续约,租约的1/3时间,就会发生一次续约,比如租约是30s,每10s续约一次 ./etcdctl --endpoints=localhost:2379 lease keep-alive 694d7799dbeb0580 # 取消租约,执行之后值也清除 ./etcdctl --endpoints=localhost:2379 lease revoke 694d779a4a223c8e # 分布式锁, 获取一个锁,公平锁,释放之后另外一个客户端获得 ./etcdctl --endpoints=localhost:2379 lock mutex1 # 选举 ./etcdctl --endpoints=localhost:2379 elect one p1 # another client with the same name blocks ./etcdctl --endpoints=localhost:2379 elect one p2 # 查看集群状态 ./etcdctl --write-out=table --endpoints=localhost:2379 endpoint status

etcd常用场景:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1.元数据存储     强一致性的分布式kv存储系统特点,可实现可靠的分部署数据存储;put和get指令实现; 2.服务注册发现     利用lease租约和watch监听模糊前缀方式可实现;lease、put、实现方式:     1.客户端watch前缀模糊监听,当客户端上(put操作)/下线(客户端断开后ttl超时触发DELETE操作) watch     ./etcdctl --endpoints=localhost:2379 watch host_ --prefix     2.客户端创建租约 lease     ./etcdctl --endpoints=localhost:2379 lease grant 30     3.客户端put值指定租约 put     ./etcdctl --endpoints=localhost:2379 put host_192.168.1.101 value101 --lease=694d779a4a223c8e     4.客户端续约,lease keep-alive (租约的1/3时间,就会发生一次续约,比如租约是30s,每10s续约一次)     ./etcdctl --endpoints=localhost:2379 lease keep-alive 694d779a4a223c8e     5.watch收到变化之后,通过get前缀模糊获取服务list get     ./etcdctl --endpoints=localhost:2379 get host_ --prefix 3.分布式锁;lock指令实现     ./etcdctl --endpoints=localhost:2379 lock mutex1 4.选主/故障转移 elect选举指令实现 基于elect指令可实现选主,故障转移,当一个主节点故障之后,可通过选举得到主节点;

 

 

最后

以上就是单身未来最近收集整理的关于etcd部署和使用的全部内容,更多相关etcd部署和使用内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部