延伸:ZooKeeper 是一套分佈式系統中進行同步和一致性管理的工具,doozer 則是一個一致性分佈式數據庫。Raft 是一套經過選舉主節點來實現分佈式系統一致性的算法。
node
1 [root@etcdhost ~]# wget https://github.com/coreos/etcd/releases/download/v3.3.9/etcd-v3.3.9-linux-amd64.tar.gz 2 [root@etcdhost ~]# tar xzvf etcd-v3.3.9-linux-amd64.tar.gz 3 [root@etcdhost ~]# cd etcd-v3.3.9-linux-amd64/ 4 [root@etcdhost etcd-v3.3.9-linux-amd64]# ls 5 [root@etcdhost etcd-v3.3.9-linux-amd64]# cp etcd* /usr/local/bin/
1 [root@etcdhost ~]# yum -y install etcd
1 [root@etcdhost ~]# etcd
1 [root@etcdhost ~]# etcdctl set myname "xianghongying" #設置鍵值 2 xianghongying 3 [root@etcdhost ~]# etcdctl get myname #獲取鍵值 4 xianghongying 5 [root@etcdhost ~]# curl -L http://localhost:2379/v2/keys/myname #經過HTTP API獲取
1 [root@etcdhost ~]# etcdctl set /etcdb/myself/name "Xiang HongYing" 2 選項: 3 --ttl '0' #該鍵值的超時時間(單位爲秒),不配置(默認爲 0)則永不超時 4 --swap-with-value value #若該鍵如今的值是 value,則進行設置操做 5 --swap-with-index '0' #若該鍵如今的索引值是指定索引,則進行設置操做
1 [root@etcdhost ~]# etcdctl get /etcdb/myself/name 2 選項: 3 --sort #對結果進行排序 4 --consistent #將請求發給主節點,保證獲取內容的一致性
1 [root@etcdhost ~]# etcdctl get -o extended /etcdb/myself/name
1 [root@etcdhost ~]# etcdctl set /etcdb/myself/name --ttl 5
1 [root@etcdhost ~]# etcdctl update /etcdb/myself/name "Xiao XianNv" 2 [root@etcdhost ~]# etcdctl get /etcdb/myself/name 3 選項: 4 --ttl '0' #超時時間(單位爲秒),不配置(默認爲 0)則永不超時
1 [root@etcdhost ~]# etcdctl set --swap-with-value "Xiao XianNv" /etcdb/myself/name "Xiang HongYing"
1 [root@etcdhost ~]# etcdctl update --ttl 3 /etcdb/myself/name "Xiao XianNv"
1 [root@etcdhost ~]# etcdctl rm /etcdb/myself/name 2 選項: 3 --dir #若是鍵是個空目錄或者鍵值對則刪除 4 --recursive #刪除目錄和全部子鍵 5 --with-value #檢查現有的值是否匹配 6 --with-index '0' #檢查現有的 index 是否匹配
1 [root@etcdhost ~]# etcdctl rm --with-value "Xiao XianNv" /etcdb/myself/name
1 [root@etcdhost ~]# etcdctl mk /etcdb/myself/age "25"
1 --ttl '0' #超時時間(單位爲秒),不配置(默認爲 0)則永不超時
1 [root@etcdhost ~]# etcdctl mk --in-order /etcdb/myself/member zhangsan 2 [root@etcdhost ~]# etcdctl mk --in-order /etcdb/myself/member lisi
1 [root@etcdhost ~]# etcdctl setdir testetcd2 2 選項: 3 --ttl '0' #超時時間(單位爲秒),不配置(默認爲 0)則永不超時
1 [root@etcdhost ~]# etcdctl updatedir testetcd2 2 --ttl '0' #超時時間(單位爲秒),不配置(默認爲 0)則永不超時
1 [root@etcdhost ~]# etcdctl mkdir testetcd 2 選項: 3 --ttl '0' #超時時間(單位爲秒),不配置(默認爲 0)則永不超時
1 [root@etcdhost ~]# etcdctl rmdir /testetcd2 #刪除非空目錄 2 [root@etcdhost ~]# etcdctl rmdir /etcdb/myself 3 Error: 108: Directory not empty (/etcdb/myself) [16] 4 [root@etcdhost ~]# etcdctl get /etcdb/myself/age #刪除鍵值
1 [root@etcdhost ~]# etcdctl ls 2 [root@etcdhost ~]# etcdctl ls etcdb
1 選項: 2 --sort #將輸出結果排序 3 --recursive #若是目錄下有子目錄,則遞歸輸出其中的內容 4 -p #對於輸出爲目錄,在最後添加 `/` 進行區分
1 [root@etcdhost ~]# etcdctl backup --data-dir /var/lib/etcd/default.etcd --backup-dir /tmp 2 選項: 3 --data-dir #etcd 的數據目錄 4 --backup-dir #備份到指定路徑
1 [root@etcdhost ~]# etcdctl watch /etcdb/myself/name 2 [root@etcdhost ~]# etcdctl set /etcdb/myself/name "Xiang HongYing" 3 [root@etcdhost ~]# etcdctl update /etcdb/myself/name "Xiao XianNv"
1 --forever #一直監測,直到用戶按 `CTRL+C` 退出 2 --after-index '0' #在指定 index 以前一直監測 3 --recursive #返回全部的鍵值和子鍵值
1 [root@etcdhost ~]# etcdctl exec-watch /etcdb/myself/name -- sh -c 'etcdctl ls' 2 [root@etcdhost ~]# etcdctl set /etcdb/myself/name "Xiang HongYing" 3 [root@etcdhost ~]# etcdctl update /etcdb/myself/name "Xiao XianNv"
1 選項: 2 --after-index '0' #在指定 index 以前一直監測 3 --recursive #返回全部的鍵值和子鍵值
1 [root@etcdhost ~]# etcdctl watch --forever /etcdb/myself/name
1 [root@etcdhost ~]# etcdctl member list
1 [root@etcdhost ~]# etcdctl member add node2 http://172.24.8.101:2380
1 [root@etcdhost ~]# etcdctl member remove 8e9e05c52164694d
1 [root@etcdhost ~]# etcdctl member update node2 http://172.24.8.102:2380
1 [root@etcdhost ~]# etcdctl cluster-health #集羣健康檢查 2 [root@etcdhost ~]# etcdctl --version #查看etcd版本 3 [root@etcdhost ~]# etcdctl --help #獲取幫助 4 [root@etcdhost ~]# etcdctl cluster-health #查看集羣狀態
1 export ETCDCTL_API=3 #聲明API版本爲v3
1 etcdctl put /etcdb/myself/name "Xiao XianNv" 2 etcdctl put /etcdb/myself/name Xiang HongYing"
1 etcdctl del /etcdb/myself/name 2 etcdctl del /etcdb/myself/name --prefix #刪除全部name前綴的節點
1 etcdctl get /etcdb/myself/name 2 etcdctl get /etcdb/myself/name --prefix #查詢全部name前綴的鍵值
1 etcdctl watch /etcdb/myself/name 2 etcdctl watch /etcdb/myself --prefix #監聽子節點
1 etcdctl lease grant 40 #從申請開始計算時間
1 etcdctl put --lease=4e5e5b853f528859 /etcdb/myself/name Xiang HongYing" #節點的生命伴隨着租約到期將會被DELETE
1 etcdctl lease revoke 4e5e5b853f5286cc #撤銷租約和租約到期同樣,節點都會被刪除
1 etcdctl lease keep-alive 4e5e5b853f52892b #每當到期將會續約