介紹
ETCD 是一個分布式宪躯、可靠的 key-value 存儲的分布式系統(tǒng),用于存儲分布式系統(tǒng)中的關鍵數(shù)據(jù)位迂;當然访雪,它不僅僅用于存儲,還提供配置共享及服務發(fā)現(xiàn)掂林;基于Go語言實現(xiàn)臣缀。
ETCD的特點
簡單:定義明確,面向用戶的API(gRPC)
安全:具有可選客戶端證書身份驗證的自動TLS
快速:基準10,000次寫入/秒
可靠:使用Raft正確分發(fā)
ETCD的作用
etcd中存儲了集群的元數(shù)據(jù)信息泻帮,集群狀態(tài)和網(wǎng)絡配置精置,在高可用集群中往往會采用奇數(shù)節(jié)點(最少3個)的集群。
ETCD proxy功能簡介
etcd提供了proxy功能锣杂,即代理功能脂倦,etcd可以代理的方式來運行。
etcd代理可以運行在每一臺主機元莫,在這種代理模式下赖阻,etcd的作用就是一個反向代理,把客戶端的etcd請求轉(zhuǎn)發(fā)到真正的etcd集群柒竞。這種方式既加強了集群的彈性,又不會降低集群的寫的性能播聪。
在rainbond集群中朽基,除管理節(jié)點以外的其他節(jié)點都通過etcd-proxy方式與etcd服務端建立連接布隔。
ETCD常用運維命令
etcd 提供了 etcdctl 命令行工具 和 HTTP API 兩種交互方法。etcdctl命令行工具用 go 語言編寫稼虎,也是對 HTTP API 的封裝衅檀,日常使用起來也更容易。所以這里我們主要使用 etcdctl 命令行工具演示霎俩。
- etcd最新的API版本是v3哀军,與v2相比,v3更高效更清晰打却。要使用v3杉适,設置環(huán)境變量即可。
export ETCDCTL_API=3
etcdctl version
- 列出集群內(nèi)的成員以及他們當前的角色是不是leader
etcdctl member list
- 查看節(jié)點狀態(tài)
etcdctl endpoint health
- 跟集群成員相關的命令如下:
member add 添加成員
member remove 刪除成員
member update 更新集群中的一個成員
member list 列出及集群中的成員
- 通過 put 將 key 和 value 存儲到 etcd 集群中柳击。每個存儲的密鑰都通過 Raft 協(xié)議復制到所有 etcd 集群成員猿推,以實現(xiàn)一致性和可靠性。示例:
設置鍵的值的命令 key 到 value:
[root@ ~]#: etcdctl put key value
OK
- 從etcd 集群中讀取 key 的值捌肴。
etcdctl get key
上述命令同時返回 key 和 value蹬叭,如果只讀取 key 對應的值,則使用以下命令
etcdctl get key --print-value-only
按key前綴查找rainbond集群所有節(jié)點信息
etcdctl get /rainbond/node --prefix
- 監(jiān)測一個鍵值的變化状知,一旦鍵值發(fā)生更新秽五,就會輸出最新的值
etcdctl watch key
- 刪除key
刪除 key 為 key的命令
[root@ ~]#: etcdctl del key
1
刪除具有前綴的鍵的命令:
etcdctl del --prefix key
- 更新內(nèi)容
[root@ ~]#: etcdctl put key testvalue
OK
[root@ ~]#: etcdctl get key
key
testvalue
端口
端口 | 端口說明 |
---|---|
2380 | 和集群中其他節(jié)點通信 |
2379 | 提供 HTTP API 服務,供客戶端交互 |
ETCD備份恢復
備份
由于etcd的強一致性饥悴,備份一個節(jié)點的數(shù)據(jù)即可坦喘,生產(chǎn)環(huán)境中,為了防止單節(jié)點異常沒有生成備份铺坞,可以多加幾個節(jié)點
export ETCDCTL_API=3
etcdctl --endpoints=http://節(jié)點IP:2379 snapshot save /etcd_bak/snap-$(date +%Y%m%d%H%M).db
恢復
etcdctl snapshot restore snapshot.db --name m3 --data-dir=/etcd_bak/snap-...db
相關資料推薦
ETCD 項目地址:https://github.com/etcd-io/etcd
ETCD官方文檔:https://etcd.io/
ETCD官方文檔中文版:https://doczhcn.gitbook.io/etcd/
CoreOS實戰(zhàn)剖析ETCD: https://www.infoq.cn/article/coreos-analyse-etcd/
ETCD性能優(yōu)化實踐:https://www.kubernetes.org.cn/6295.html
ETCD災難恢復: https://skyao.gitbooks.io/learning-etcd3/content/documentation/op-guide/recovery.html