安裝
最簡單的安裝方法是直接去etcd GitHub的Release頁下載預編譯好的二進位制檔案。etcd官方為各個系統提供了不同的二進位制檔案,供開發者根據自己的系統去下載。
下載地址:https://github.com/etcd-io/etcd/releases
下載完成解壓後,目錄中有兩個二進位制檔案,etcd
以及etcdctl
。其中etcd
就是執行etcd服務的二進位制檔案,etcdctl
是官方提供的命令列etcd客戶端,使用etcdctl
可以在命令列中訪問etcd服務。
將etcd
和etcdctl
這兩個檔案軟鏈到系統環境變數$PATH
對應的目錄下,方便服務啟動,當然試驗目的直接把工作目錄切換到剛才下載的目錄直接執行兩個檔案即可。
我從GitHub上下載了MacOS對應的etcd檔案,執行下面的命令可以看到etcd的版本
➜ etcd-v3.3.17-darwin-amd64 ./etcd --version
etcd Version: 3.3.17
Git SHA: 6d8052314
Go Version: go1.12.9
Go OS/Arch: darwin/amd64
➜ etcd-v3.3.17-darwin-amd64
執行
直接執行etcd
指令在電腦上啟動和執行etcd
服務
......
2019-10-22 13:15:32.244300 I | embed: listening for peers on http://localhost:2380
2019-10-22 13:15:32.244466 I | embed: listening for client requests on localhost:2379
......
透過啟動命令的輸出日誌中可以找到兩行關鍵的資訊,etcd服務啟動後提供給外部客戶端通訊的埠是2379,而etcd服務中成員間的通訊埠是2380(Peer是對同一個 etcd 叢集中另外一個 Member 的稱呼)。
啟動命令時比較重要的options:
-name
節點名稱,預設是UUID-data-dir
儲存日誌和快照的目錄,預設為當前工作目錄-addr
公佈的ip地址和埠。 預設為127.0.0.1:2379-bind-addr
用於客戶端連線的監聽地址,預設為-addr配置-peers
叢集成員逗號分隔的列表,例如 127.0.0.1:2380,127.0.0.1:2381-peer-addr
叢集服務通訊的公佈的IP地址,預設為 127.0.0.1:2380.-peer-bind-addr
叢集服務通訊的監聽地址,預設為-peer-addr配置
上述配置也可以設定配置檔案,預設為/etc/etcd/etcd.conf
。
使用etcd
etcdctl
是一個命令列的客戶端,它提供了一下簡潔的命令,可以方便我們在對服務進行測試或者手動修改資料庫內容。建議剛剛接觸etcd的同學可以先透過etcdctl來熟悉相關操作。這些操作跟etcd提供的HTTP API是對應的。
透過-h
選項可以看到etcdctl
支援的操作。
➜ etcd-v3.3.17-darwin-amd64 ./etcdctl -h
NAME:
etcdctl - A simple command line client for etcd.
......
VERSION:
3.3.17
COMMANDS:
backup backup an etcd directory
cluster-health check the health of the etcd cluster
mk make a new key with a given value
mkdir make a new directory
rm remove a key or a directory
rmdir removes the key if it is an empty directory or a key-value pair
get retrieve the value of a key
ls retrieve a directory
set set the value of a key
setdir create a new directory or update an existing directory TTL
update update an existing key with a given value
updatedir update an existing directory
watch watch a key for changes
exec-watch watch a key for changes and exec an executable
member member add, remove and list subcommands
user user add, grant and revoke subcommands
role role add, grant and revoke subcommands
auth overall auth controls
help, h Shows a list of commands or help for one command
這些操作命令基本上分為鍵值庫操作命令和行為控制命令。
鍵值庫操作
set
設定鍵(或者叫主題)的值
➜ etcd-v3.3.17-darwin-amd64 ./etcdctl set /root/test/keyOne "Hello etcd"
Hello etcd
➜ etcd-v3.3.17-darwin-amd64
支援的選項包括:
--ttl '0' 該鍵值的超時時間(單位為秒),不配置(預設為 0)則永不超時
--swap-with-value value 若該鍵現在的值是 value,則進行設定操作
--swap-with-index '0' 若該鍵現在的索引值是指定索引,則進行設定操作
get
獲取給定鍵的值
➜ etcd-v3.3.17-darwin-amd64 ./etcdctl get /root/test/keyOne
Hello etcd
➜ etcd-v3.3.17-darwin-amd64
當嘗試獲取不存的值時會報錯
➜ etcd-v3.3.17-darwin-amd64 ./etcdctl get /root/test/keyTwo
Error: 100: Key not found (/root/test/keyTwo) [11]
➜ etcd-v3.3.17-darwin-amd64
支援的選項為
--sort 對結果進行排序
--consistent 將請求發給主節點,保證獲取內容的一致性
update
更新給定鍵中儲存的值
➜ etcd-v3.3.17-darwin-amd64 ./etcdctl update /root/test/keyOne "Hello World"
Hello World
➜ etcd-v3.3.17-darwin-amd64
同樣嘗試更新不存在的值時會報錯
➜ etcd-v3.3.17-darwin-amd64 ./etcdctl update /root/test/keyTwo "Hello World"
Error: 100: Key not found (/root/test/keyTwo) [11]
支援的選項為
--ttl '0' 超時時間(單位為秒),不配置(預設為 0)則永不超時
rm
刪除給定的鍵,如果命令引數中給定的鍵不存在則會報錯
➜ etcd-v3.3.17-darwin-amd64 ./etcdctl rm /root/test/keyOne
PrevNode.Value: Hello World
➜ etcd-v3.3.17-darwin-amd64
--dir 如果鍵是個空目錄或者鍵值對則刪除
--recursive 刪除目錄和所有子鍵
--with-value 檢查現有的值是否匹配
--with-index '0' 檢查現有的 index 是否匹配
setdir
建立一個目錄,無論存在與否。
支援的選項為
--ttl '0' 超時時間(單位為秒),不配置(預設為 0)則永不超時
updatedir
更新一個已經存在的目錄。 支援的選項為
--ttl '0' 超時時間(單位為秒),不配置(預設為 0)則永不超時
ls
列出目錄(預設為根目錄)下的鍵或者子目錄,預設不顯示子目錄中內容。
支援的選項包括
--sort 將輸出結果排序
--recursive 如果目錄下有子目錄,則遞迴輸出其中的內容
-p 對於輸出為目錄,在最後新增 `/` 進行區分
行為操作
backup
備份 etcd 的資料。
支援的選項包括
--data-dir etcd 的資料目錄
--backup-dir 備份到指定路徑
watch
監測一個鍵值的變化,一旦鍵值發生更新,就會輸出最新的值並退出。
例如
➜ etcd-v3.3.17-darwin-amd64 ./etcdctl set root/test/KeyThree "Hello etcd"
Hello etcd // 設定root/test/KeyThree的值
// 監控root/test/KeyThree,在其他會話裡將它的值改為"Hello World" 這裡就能收到更新後的結果
➜ etcd-v3.3.17-darwin-amd64 ./etcdctl watch root/test/KeyThree --forever
Hello World
支援的選項包括
--forever 一直監測,直到使用者按 `CTRL+C` 退出
--after-index '0' 在指定 index 之前一直監測
--recursive 返回所有的鍵值和子鍵值
exec-watch
監測一個鍵值的變化,一旦鍵值發生更新,就執行給定命令。
例如,使用者更新 testkey 鍵值。
➜ etcd-v3.3.17-darwin-amd64 ./etcdctl exec-watch testkey -- sh -c 'ls'
default.etcd
Documentation
etcd
etcdctl
etcd-migrate
README-etcdctl.md
README.md
支援的選項包括
--after-index '0' 在指定 index 之前一直監測
--recursive 返回所有的鍵值和子鍵值
member
透過 list、add、remove 命令列出、新增、刪除 etcd 例項到 etcd 叢集中。
例如本地啟動一個 etcd 服務例項後,可以用如下命令進行檢視。
➜ etcd-v3.3.17-darwin-amd64 ./etcdctl member list
8e9e05c52164694d: name=default peerURLs=http://localhost:2380 clientURLs=http://localhost:2379 isLeader=true
➜ etcd-v3.3.17-darwin-amd64
本作品採用《CC 協議》,轉載必須註明作者和本文連結