ETCD
簡介
ETCD是一個開源的、分布式的鍵值對數據存儲系統,由Go語言實現,用於存儲key-value鍵值對,同時不僅僅是存儲,主要用途是提供共享配置及服務發現,使用Raft一致性算法來管理高度可用的復制日志。有下面特點
- 簡單:定義明確,面向用戶的API(gRPC)
- 安全:具有可選客戶端證書身份驗證的自動TLS
- 快速:基准測試10,000次/秒
- 可靠:使用Raft正確分布
NOTE:
ETCD適用於較小的原數據鍵值對的處理,對於大的鍵值對數據的處理回導致其他請求時間的增加。數據目前最大支持1M數據的RPC請求,目前來說沒有辦法實現更大數據的配置
使用場景:服務發現、消息定義發布、負載均衡、分布式通知與協調、分布式鎖、分布式隊列、集群監控與Leader競選
安裝
環境Linux,下載安裝包https://github.com/etcd-io/etcd/releases/download/v3.4.0/etcd-v3.4.0-linux-amd64.tar.gz到本地,從git中篩選版本https://github.com/etcd-io/etcd/releases
[root@centos7 ~]# wget https://github.com/etcd-io/etcd/releases/download/v3.4.0/etcd-v3.4.0-linux-amd64.tar.gz
解壓
[root@centos7 ~]# tar zxvf etcd-v3.4.0-linux-amd64.tar.gz
進入目錄,啟動,默認監聽本地2379端口
[root@centos7 ~]# cd etcd-v3.4.0-linux-amd64 [root@centos7 etcd-v3.4.0-linux-amd64]# ./etcd
驗證
[root@centos7 etcd-v3.4.0-linux-amd64]# ./etcdctl put foo bar OK [root@centos7 etcd-v3.4.0-linux-amd64]# ./etcdctl get foo foo bar
查看接口版本
[root@centos7 etcd-v3.4.0-linux-amd64]# ./etcdctl version etcdctl version: 3.4.0 API version: 3.4
查看集群成員信息
[root@centos7 ~]# etcdctl member list 8e9e05c52164694d, started, default, http://localhost:2380, http://localhost:2379, false
簡單使用
寫入
[root@centos7 ~]# etcdctl put foo bar OK [root@centos7 ~]# etcdctl put foo1 bar1 OK
讀取
[root@centos7 ~]# etcdctl get foo foo bar [root@centos7 ~]# etcdctl get foo --print-value-only bar [root@centos7 ~]# etcdctl get --prefix foo foo bar foo1 bar1
刪除
[root@centos7 ~]# etcdctl del foo 1 [root@centos7 ~]# etcdctl get foo
租期
授權租期
[root@centos7 ~]# etcdctl lease grant 20 lease 694d6d2a9dbd8d0d granted with TTL(20s) [root@centos7 ~]# etcdctl put --lease=694d6d2a9dbd8d0d foo bar OK [root@centos7 ~]# etcdctl get foo foo bar [root@centos7 ~]# etcdctl get foo
撤銷租期
[root@centos7 ~]# etcdctl lease grant 60 lease 694d6d2a9dbd8d1c granted with TTL(60s) [root@centos7 ~]# etcdctl put --lease=694d6d2a9dbd8d1c foo bar OK [root@centos7 ~]# etcdctl lease revoke 694d6d2a9dbd8d1c lease 694d6d2a9dbd8d1c revoked [root@centos7 ~]# etcdctl get foo
租期保持存活
[root@centos7 ~]# etcdctl lease grant 10 lease 694d6d2a9dbd8d24 granted with TTL(10s) [root@centos7 ~]# etcdctl lease keep-alive 694d6d2a9dbd8d24 lease 694d6d2a9dbd8d24 keepalived with TTL(10) lease 694d6d2a9dbd8d24 keepalived with TTL(10) lease 694d6d2a9dbd8d24 keepalived with TTL(10) lease 694d6d2a9dbd8d24 keepalived with TTL(10)
觀察者
[root@centos7 ~]# etcdctl watch foo PUT foo bar1 DELETE foo