etcd 非關(guān)系數(shù)據(jù)庫 簡單使用和操作

1.介紹:

etcd 是 CoreOS 團隊于 2013 年 6 月發(fā)起的開源項目,它的目標(biāo)是構(gòu)建一個高可用的分布式鍵值(key-value)數(shù)據(jù)庫,基于 Go 語言實現(xiàn)。我們知道,在分布式系統(tǒng)中,各種服務(wù)的配置信息的管理分享,服務(wù)的發(fā)現(xiàn)是一個很基本同時也是很重要的問題。CoreOS 項目就希望基于 etcd 來解決這一問題。

受到?Apache ZooKeeper?項目和?doozer?項目的啟發(fā),etcd 在設(shè)計的時候重點考慮了下面四個要素:

簡單:支持 REST 風(fēng)格的 HTTP+JSON API

安全:支持 HTTPS 方式的訪問

快速:支持并發(fā) 1k/s 的寫操作

可靠:支持分布式結(jié)構(gòu),基于 Raft 的一致性算法

注:Apache ZooKeeper 是一套知名的分布式系統(tǒng)中進行同步和一致性管理的工具。?

注:doozer 則是一個一致性分布式數(shù)據(jù)庫。?

注:Raft 是一套通過選舉主節(jié)點來實現(xiàn)分布式系統(tǒng)一致性的算法,相比于大名鼎鼎的 Paxos 算法,它的過程更容易被人理解

一般情況下,用戶使用 etcd 可以在多個節(jié)點上啟動多個實例,并添加它們?yōu)橐粋€集群。同一個集群中的 etcd 實例將會保持彼此信息的一致性

2.安裝:

方法1---安裝(最新版本3.3.9):

下載地址:

wget https://github.com/coreos/etcd/releases/download/v3.3.9/etcd-v3.3.9-linux-amd64.tar.gz

tar zxf??etcd-v3.3.9-linux-amd64.tar.gz?

mv?etcd-v3.3.9-linux-amd64? ?/usr/local/etcd

其中 etcd 是服務(wù)主文件,etcdctl 是提供給用戶的命令客戶端

運行:

/usr/local/etcd/etcd? ?&? (默認(rèn)數(shù)據(jù)存放在./default.etcd)

啟動信息

簡單信息查看:

1)在http://localhost:2380和集群中其他節(jié)點通信

2)在http://localhost:2379提供HTTP API服務(wù),供客戶端交互。

3)heartbeat為100ms,該參數(shù)的作用是leader多久發(fā)送一次心跳到followers,默認(rèn)值是100ms。

4)election為1000ms,該參數(shù)的作用是重新投票的超時時間,如果follow在該時間間隔沒有收到心跳包,會觸發(fā)重新投票,默認(rèn)為1000ms。

5)snapshot count為10000,該參數(shù)的作用是指定有多少事務(wù)被提交時,觸發(fā)截取快照保存到磁盤

6)集群和每個節(jié)點都會生成一個uuid,啟動的時候會運行raft,選舉出leader

方法2安裝(版本3.2.22):

yum install etcd -y

啟動:

systemctl start etcd??

配置文件:

配置文件:/etc/etcd/etcd.conf

systemd 服務(wù)文件:/usr/lib/systemd/system/etcd.service

3.etcdctl相關(guān)命令

/usr/local/etcd/etcdctl? ?-h? ?----幫助信息

etcdctl 是一個命令行客戶端,它能提供一些簡潔的命令,供用戶直接跟 etcd 服務(wù)打交道

etcd 在鍵的組織上采用了層次化的空間結(jié)構(gòu)(類似于文件系統(tǒng)中目錄的概念),用戶指定的鍵可以為單獨的名字,如?testkey,此時實際上放在根目錄?/?下面,也可以為指定目錄結(jié)構(gòu),如?cluster1/node2/testkey,則將創(chuàng)建相應(yīng)的目錄結(jié)構(gòu)

1)指定某個鍵的值:? /usr/local/etcd/etcdctl set ./default.etcd/testkey "hello"

2)獲取某個鍵的值:? /usr/local/etcd/etcdctl get ./default.etcd/testkey "hello"? ??

?----當(dāng)鍵不存在時,則會報錯

3)當(dāng)鍵存在時,更新值內(nèi)容:? ??/usr/local/etcd/etcdctl? update ./default.etcd/testkey "world"

當(dāng)鍵不存在時,則會報錯

4)刪除某個鍵:/usr/local/etcd/etcdctl? rm ./default.etcd/testkey

當(dāng)鍵不存在時,則會報錯

5)給定的鍵不存在,則創(chuàng)建一個新的鍵值:

?/usr/local/etcd/etcdctl? mk? ./default.etcd/testkey "world? hello"

當(dāng)鍵存在的時候,執(zhí)行該命令會報錯

6)給定的鍵目錄不存在,則創(chuàng)建一個新的鍵目錄:

?/usr/local/etcd/etcdctl? mkdir testdir? ? ? ? ? ---------->當(dāng)鍵目錄存在的時候,執(zhí)行該命令會報錯

7)創(chuàng)建一個鍵目錄,無論存在與否:

?/usr/local/etcd/etcdctl? setdir testdir

8)更新一個鍵目錄,無論存在與否:

?/usr/local/etcd/etcdctl? updatedir testdir

9)刪除一個空目錄,或者鍵值對:

/usr/local/etcd/etcdctl??rmdir testdir? ? ? ------------->若目錄不空,會報錯

10)列出目錄(默認(rèn)為根目錄)下的鍵或者子目錄,默認(rèn)不顯示子目錄中內(nèi)容

/usr/local/etcd/etcdctl? ?ls

11)數(shù)據(jù)庫的備份:

/usr/local/etcd/etcdctl? ?backup --data-dir default.etcd --backup-dir 備份目錄

12)監(jiān)測一個鍵值的變化,一旦鍵值發(fā)生更新,就會輸出最新的值并退出

/usr/local/etcd/etcdctl? ? watch? ?./default.etcd/testkey

13)監(jiān)測一個鍵值的變化,一旦鍵值發(fā)生更新,就執(zhí)行給定命令:

/usr/local/etcd/etcdctl? ? execwatch? ?./default.etcd/testkey?-- sh -c '執(zhí)行的命令'

14)查看集群中存在的節(jié)點:

/usr/local/etcd/etcdctl? ?member list

15)刪除集群中存在的節(jié)點

/usr/local/etcd/etcdctl member remove? 節(jié)點號

16)向集群中新加節(jié)點

/usr/local/etcd/etcdctl?member add? 節(jié)點名稱【etcd3】 節(jié)點地址【http://192.168.1.100:2380】

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容