什麼是Etcd,如何運維Etcd ?

介紹

ETCD 是一個分佈式、可靠的 key-value 存儲的分佈式系統,用於存儲分佈式系統中的關鍵數據;固然,它不單單用於存儲,還提供配置共享及服務發現;基於Go語言實現。html

ETCD的特色

簡單:定義明確,面向用戶的API(gRPC)
安全:具備可選客戶端證書身份驗證的自動TLS
快速:基準10,000次寫入/秒
可靠:使用Raft正確分發node

ETCD的做用

etcd中存儲了集羣的元數據信息,集羣狀態和網絡配置,在高可用集羣中每每會採用奇數節點(最少3個)的集羣。git

ETCD proxy功能簡介

etcd提供了proxy功能,即代理功能,etcd能夠代理的方式來運行。github

etcd代理能夠運行在每一臺主機,在這種代理模式下,etcd的做用就是一個反向代理,把客戶端的etcd請求轉發到真正的etcd集羣。這種方式既增強了集羣的彈性,又不會下降集羣的寫的性能。shell

在rainbond集羣中,除管理節點之外的其餘節點都經過etcd-proxy方式與etcd服務端創建鏈接。安全

ETCD經常使用運維命令

etcd 提供了 etcdctl 命令行工具 和 HTTP API 兩種交互方法。etcdctl命令行工具用 go 語言編寫,也是對 HTTP API 的封裝,平常使用起來也更容易。因此這裏咱們主要使用 etcdctl 命令行工具演示。性能優化

  • etcd最新的API版本是v3,與v2相比,v3更高效更清晰。要使用v3,設置環境變量便可。
export ETCDCTL_API=3
etcdctl version
  • 列出集羣內的成員以及他們當前的角色是否是leader
etcdctl member list
  • 查看節點狀態
etcdctl endpoint health
  • 跟集羣成員相關的命令以下:
member add        添加成員
member remove     刪除成員
member update     更新集羣中的一個成員
member list       列出及集羣中的成員
  • 經過 put 將 key 和 value 存儲到 etcd 集羣中。每一個存儲的密鑰都經過 Raft 協議複製到全部 etcd 集羣成員,以實現一致性和可靠性。示例:

設置鍵的值的命令 key 到 value:網絡

$ etcdctl put key value
OK
  • 從etcd 集羣中讀取 key 的值。
etcdctl get  key

上述命令同時返回 key 和 value,若是隻讀取 key 對應的值,則使用如下命令運維

etcdctl get key --print-value-only

按key前綴查找rainbond集羣全部節點信息分佈式

etcdctl get /rainbond/node  --prefix
  • 監測一個鍵值的變化,一旦鍵值發生更新,就會輸出最新的值
etcdctl watch key
  • 刪除key

刪除 key 爲 key的命令

$ etcdctl del key
1

刪除具備前綴的鍵的命令:

etcdctl del --prefix key
  • 更新內容
$  etcdctl put key testvalue
OK
$  etcdctl get key
key
testvalue

端口

端口 端口說明
2380 和集羣中其餘節點通訊
2379 提供 HTTP API 服務,供客戶端交互

ETCD備份恢復

備份

因爲etcd的強一致性,備份一個節點的數據便可,生產環境中,爲了防止單節點異常沒有生成備份,能夠多加幾個節點

export ETCDCTL_API=3
etcdctl --endpoints=http://節點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實戰剖析ETCD: https://www.infoq.cn/article/coreos-analyse-etcd/
ETCD性能優化實踐:https://www.kubernetes.org.cn/6295.html
ETCD災難恢復: https://skyao.gitbooks.io/learning-etcd3/content/documentation/op-guide/recovery.html

相關文章
相關標籤/搜索