Etcd是一個高可用的 Key/Value 存儲系統,主要用於分享配置和服務發現.
特點:
簡單:支持 curl 方式的用戶 API (HTTP+JSON)
安全:可選 SSL 客戶端證書認證
快速:單實例可達每秒 1000 次寫操作
可靠:使用 Raft 實現分佈式
etcd結構:
一個 etcd 節點的核心由三部分組成:
Raft:raft 狀態機是對 raft 共識算法的實現
WAL:raft 日誌存儲
Storage:數據的存儲與索引
安裝和使用:
wget https://github.com/coreos/etcd/releases/download/v0.4.6/etcd-v0.4.6-linux-amd64.tar.gz cp etcd* /bin/ etcd -version 啓動etcd: # mkdir /data/etcd # /bin/etcd -name etcdserver -peer-addr 192.168.1.21:7001 -addr 192.168.1.21:4001 -data-dir /data/etcd -peer-bind-addr 0.0.0.0:7001 -bind-addr 0.0.0.0:4001 & 參數“-peer-addr”指定與其它節點通訊的地址;參數“-addr”指定服務監聽地址;參數“-data-dir”爲指定數據存儲目錄
API接口調用:
設置(set)插入數據: curl -L http://127.0.0.1:4001/v2/keys/apps/abc.com -XPUT -d value="5.5.5.5:8080|6.6.6.6:8080" curl -L http://127.0.0.1:4001/v2/keys/apps/bcd.com -XPUT -d value="3.3.3.3:8080|4.4.4.4:8080" curl -L http://127.0.0.1:4001/v2/keys/apps/ef.com -XPUT -d value="1.1.1.1:8080|2.2.2.2:8080" 查詢(get)數據: curl -L http://127.0.0.1:4001/v2/keys/apps 刪除(del)數據: curl -L http://127.0.0.14001/v2/keys/lekey -XDELETE
ectdctl命令使用:
列出根目錄下的內容: etcdctl ls / etcdctl get /apps/ap.com/ etcdctl mkdir /demo 新建目錄 etcdctl mk demo 新建鍵 etcdctl rm /path --recursive 遞歸刪除目錄下的所有目錄和鍵 curl -L http://127.0.0.1:7001/v2/admin/config curl -L http://127.0.0.1:7001/v2/admin/machines
在Etcd的存儲系統中,所有以下劃線開頭的目錄都被認爲是“隱藏目錄”。這種目錄是不能通過 etcdctl ls 命令或 HTTP GET訪問其上級目錄列出來的。而知道路徑的準確名稱的用戶可以通過的完整路徑以處理普通數據一樣的方式對隱藏目錄下的數據節點進行增刪查改;然後直接使用GET訪問 /App 目錄看到的是一個空目錄,但顯示的獲取 /App/_message數據節點,卻能發現這個鍵是確實存在的。也就是說,隱藏的目錄或鍵不會被列出,只有知道完整路徑的用戶可以直接訪問到.