比較重要的配置
-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
ectdctl介紹
我們可以使用etcdctl這個官方提供的客戶端來對etcd進行操作,可以從github.com/coreos/etcd/releases下載。
etcdctl是一個命令行的客戶端,它提供了一下簡潔的命令,可以方便我們在對服務進行測試或者手動修改數據庫內容。建議剛剛接觸etcd的同學可以先通過cetdctl來熟悉相關操作。這些操作跟HTTP API基本上是對應的。
etcdctl支持下面列出來的命令,基本上可以分為數據庫操作和非數據庫操作,可以查看etcdctl README.md來了解更多
➜ ~ etcdctl -h |
數據庫操作
數據庫操作圍繞對鍵值和目錄的 CRUD
(符合 REST 風格的一套操作:Create
)完整生命周期的管理。
etcd 在鍵的組織上采用了層次化的空間結構(類似於文件系統中目錄的概念),用戶指定的鍵可以為單獨的名字,如 testkey
,此時實際上放在根目錄 /
下面,也可以為指定目錄結構,如 cluster1/node2/testkey
,則將創建相應的目錄結構。
注:CRUD 即 Create, Read, Update, Delete,是符合 REST 風格的一套 API 操作。
set
指定某個鍵的值。例如
➜ ~ etcdctl set /testdir/testkey "Hello world" |
支持的選項包括:
--ttl '0' 該鍵值的超時時間(單位為秒),不配置(默認為 0)則永不超時 |
get
獲取指定鍵的值。例如
➜ ~ etcdctl get /testdir/testkey |
當鍵不存在時,則會報錯。例如
➜ ~ etcdctl get /testdir/testkey2 |
支持的選項為
--sort 對結果進行排序 |
update
當鍵存在時,更新值內容。例如
➜ ~ etcdctl update |
當鍵不存在時,則會報錯。例如
➜ ~ etcdctl update /testdir/testkey2 "Hello" |
支持的選項為
--ttl '0' 超時時間(單位為秒),不配置(默認為 0)則永不超時 |
rm
刪除某個鍵值。例如
➜ ~ etcdctl rm /testdir/testkey |
當鍵不存在時,則會報錯。例如
➜ ~ etcdctl rm |
支持的選項為
--dir 如果鍵是個空目錄或者鍵值對則刪除 |
mk
如果給定的鍵不存在,則創建一個新的鍵值。例如
➜ ~ etcdctl mk |
當鍵存在的時候,執行該命令會報錯,例如
➜ ~ etcdctl mk |
支持的選項為
--ttl '0' 超時時間(單位為秒),不配置(默認為 0)則永不超時 |
mkdir
如果給定的鍵目錄不存在,則創建一個新的鍵目錄。例如
➜ ~ etcdctl mkdir testdir2 |
當鍵目錄存在的時候,執行該命令會報錯,例如
➜ ~ etcdctl mkdir testdir2 |
支持的選項為
--ttl '0' 超時時間(單位為秒),不配置(默認為 0)則永不超時 |
setdir
創建一個鍵目錄,無論存在與否。
支持的選項為
--ttl '0' 超時時間(單位為秒),不配置(默認為 0)則永不超時 |
updatedir
更新一個已經存在的目錄。 支持的選項為
--ttl '0' 超時時間(單位為秒),不配置(默認為 0)則永不超時 |
rmdir
刪除一個空目錄,或者鍵值對。
➜ ~ etcdctl setdir dir1 |
若目錄不空,會報錯
➜ ~ etcdctl set /dir/testkey hi |
ls
列出目錄(默認為根目錄)下的鍵或者子目錄,默認不顯示子目錄中內容。
例如
➜ ~ etcdctl ls |
支持的選項包括
--sort 將輸出結果排序 |
非數據庫操作
backup
備份 etcd 的數據。
支持的選項包括
--data-dir etcd 的數據目錄 |
watch
監測一個鍵值的變化,一旦鍵值發生更新,就會輸出最新的值並退出。
例如,用戶更新 testkey 鍵值為 Hello watch。
➜ ~ etcdctl get /testdir/testkey |
➜ ~ etcdctl watch testdir/testkey |
支持的選項包括
--forever 一直監測,直到用戶按 `CTRL+C` 退出 |
exec-watch
監測一個鍵值的變化,一旦鍵值發生更新,就執行給定命令。
例如,用戶更新 testkey 鍵值。
➜ ~ etcdctl exec-watch testkey -- sh -c 'ls' |
支持的選項包括
--after-index '0' 在指定 index 之前一直監測 |
member
通過 list、add、remove 命令列出、添加、刪除 etcd 實例到 etcd 集群中。
例如本地啟動一個 etcd 服務實例后,可以用如下命令進行查看。
$ etcdctl member list |
命令選項
--debug 輸出 cURL 命令,顯示執行命令的時候發起的請求 |