目錄node
etcd是一個用於共享配置和服務的高可用鍵值存儲系統,由CoreOS使用開發並做爲CoreOS的基礎服務啓動。etcd的靈感來源於Apache ZooKeeper和doozer,其特色:git
etcd 2.0以後,規範了端口號的使用,而且寫入了IANA組織的標準端口記錄。etcd將提供給外部客戶端的端口變爲2379,而etcd服務間通訊的端口變爲2380github
etcd的安裝很是簡單,能夠直接下載編譯後的可執行文件,啓動以下:算法
etcd -name etcd1 -data-dir /data/etcd --advertise-client-urls http://10.116.21.131:2379,http://127.0.0.1:2379 --listen-client-urls http://10.116.21.131:2379,http://127.0.0.1:2379
須要說明的是,下面全部操做都是針對etcd2.0可用,etcd3.0的接口變更較大,還沒有進行驗證數據庫
一、set:設置鍵值json
#支持的選項: --ttl "0" #該鍵值的超時時間,單位爲s,默認爲0,永不超時 --swap-with-value value #若該鍵如今的值爲value,則進行設置操做 --swap-with-index '0' #若該鍵如今的索引值是指定索引,則進行設置操做 #示例: etcdctl set /foo/bar "hello" #設置/foo/bar的值爲hello etcdctl set /foo/bar "hello" --ttl 60 #設置/foo/bar的值爲hello,而且超時時間爲60s etcdctl set /foo/bar "world" --swap-with-value "hello" #當/foo/bar的值爲hello時,則設置/foo/bar的值爲world,若是不爲hello,則會拋出異常
二、mk:設置鍵的值,僅當該鍵不存在時設置 ,若是已存在,則拋出異常安全
etcdctl mk /foo/new_bar "hello" #支持的選項: --ttl "0"
三、update:更新一個鍵的值,僅當該鍵存在時,若是不存在,則拋出異常bash
etcdctl update /foo/bar "world" 支持的選項: --ttl "0" #單位爲s,默認爲0,永不超時
四、get:獲取某個鍵的值,若是不存在,則拋出異常curl
etcdctl get /foo/bar #支持的選項: --sort #對結果進行排序 --consistent #將請求結果發給主節點,保證獲取內容的一致性
五、rm:刪除某個鍵值 ,若是鍵不存在,則拋出異常分佈式
etcdctl rm testkey #支持的選項: --dir #若是鍵是空目錄或者鍵值對則刪除 --recursive #刪除目錄和全部子鍵 --with-value #檢查現有的值是否匹配,匹配時才刪除 --with-index '0' #檢查現有的index是否匹配
六、mkdir:若是給定的鍵目錄不存在,則建立一個新的鍵目錄,若是存在,則報錯
etcdctl mkdir testdir #支持的選項: --ttl "0"
七、setdir:建立一個鍵目錄,不管存在與否。
etcdctl setdir testdir #支持的選項: --ttl "0"
八、updatedir:更新一個已經存在的目錄,若是不存在,則拋出異常
#支持的選項: --ttl "0"
九、rmdir:刪除一個空目錄或者鍵值對。若是目錄不爲空,則拋出異常
etcdctl rmdir /dir
十、ls:列出目錄下的鍵或子目錄,默認不顯示子目錄的內容
etcdctl set dir/test "hello" etcdctl ls dir #支持的選項: --sort #將結果排序 --recursive #若是目錄下有子目錄,則遞歸輸出子目錄中的內容 -p #對於輸出爲目錄的,在最後添加"/"進行區分
一、backup:備份etcd數據
etcdctl backup --data-dir /data/etcd --backup-dir /data/backup/etcd #支持的選項: --data-dir #etcd的數據目錄 --backup-dir #備份到指定路徑
二、watch:監測一個鍵值的變化,一旦鍵值發生更新,就會輸出最新的值並退出
etcdctl watch testkey #支持的選項: --forever #一直監測,直到用戶按"Ctrl+C"退出 --after-index '0' #在指定index以前一直監測 --recursive #返回全部的鍵值和子鍵值
三、exec-watch:監測一個鍵值的變化 ,一旦鍵值發生更新,就執行給定的命令
etcdctl exec-watch testkey -- sh -c 'ls' #支持的選項: --after-index "0" #在指定的index前一直監測 --recursive #返回全部的值和子鍵值
四、member:經過list、add、remove命令列出、添加、刪除etcd實例到etcd集羣中
etcdctl member list #支持的選項: --debug #輸出 cURL 命令,顯示執行命令的時候發起的請求 --no-sync #發出請求以前不一樣步集羣信息 --output, -o 'simple' #輸出內容的格式 (simple 爲原始信息,json 爲進行 json格式解碼,易讀性好一些) --peers, -C #指定集羣中的同伴信息,用逗號隔開 (默認爲: "127.0.0.1:4001") --cert-file #HTTPS 下客戶端使用的 SSL 證書文件 --key-file #HTTPS 下客戶端使用的 SSL 密鑰文件 --ca-file #服務端使用 HTTPS 時,使用 CA 文件進行驗證
一、set操做
curl -L http://127.0.0.1:2379/v2/keys/foo/bar -XPUT -d value="hello world"
二、get操做
curl -L http://127.0.0.1:2379/v2/keys/foo/bar
三、rm操做
curl -L http://127.0.0.1:2379/v2/keys/foo/bar -XDELETE { "action":"delete", "node:{ "key":"/foo/bar", "modifiedIndex":28, "createdIndex":27 }, "prevNode":{ "key":"/foo/bar", "value":"hi, etcd", "modifiedIndex":27, "createdIndex":27 } }
參考:
https://tonydeng.github.io/2015/11/24/etcd-the-first-using/
http://cizixs.com/2016/08/02/intro-to-etcd